文档章节

03-ObjectArx-创建圆

c
 caiweicaiwei
发布于 02/29 19:46
字数 373
阅读 140
收藏 0

1.由于两点创建圆用到根据两点计算圆心和半径,新建筛选器CwCalculation,并新建类CwCalculation

CwCalculation.h

#pragma once

class CwCalculation
{
public:
	CwCalculation(void);
public:
	~CwCalculation(void);
public:
	static AcGePoint2d MiddlePoint(AcGePoint2d pt1,AcGePoint2d pt2);
	static AcGePoint3d MiddlePoint(AcGePoint3d pt1,AcGePoint3d pt2);
};

CwCalculation.cpp

#include "StdAfx.h"
#include "CwCalculation.h"

CwCalculation::CwCalculation(void)
{
}

CwCalculation::~CwCalculation(void)
{
}

AcGePoint2d CwCalculation::MiddlePoint(AcGePoint2d pt1,AcGePoint2d pt2)
{
	AcGePoint2d pt;
	pt[X]=(pt1[X]+pt2[X])/2;
	pt[Y]=(pt1[Y]+pt2[Y])/2;
	return pt;
}

AcGePoint3d CwCalculation::MiddlePoint(AcGePoint3d pt1,AcGePoint3d pt2)
{
	AcGePoint3d pt;
	pt[X]=(pt1[X]+pt2[X])/2;
	pt[Y]=(pt1[Y]+pt2[Y])/2;
	pt[Z]=(pt1[Z]+pt2[Z])/2;
	return pt;
}

2.在CwEntity类中添加创建圆

CwEntity.h

static AcDbObjectId CreateCircle(AcGePoint3d ptCenter,AcGeVector3d vec,double radius);
static AcDbObjectId CreateCircle(AcGePoint3d ptCenter,double radius);
static AcDbObjectId CreateCircle(AcGePoint2d pt1,AcGePoint2d pt2);

CwEntity.cpp

AcDbObjectId CwEntity::CreateCircle(AcGePoint3d ptCenter,AcGeVector3d vec,double radius)
{
	AcDbCircle *pCircle =new AcDbCircle(ptCenter,vec,radius);  
	//将实体添加到图形数据库
	AcDbObjectId circleId;                        
	circleId = CwDatabase::PostToModelSpace(pCircle); 
	return circleId;
}

AcDbObjectId CwEntity::CreateCircle(AcGePoint3d ptCenter,double radius)
{
	AcGeVector3d vec(0,0,1);
	return CwEntity::CreateCircle(ptCenter,vec,radius);
}

AcDbObjectId CwEntity::CreateCircle(AcGePoint2d pt1,AcGePoint2d pt2)
{
	//计算圆心和半径
	AcGePoint2d pt=CwCalculation::MiddlePoint(pt1,pt2);
	AcGePoint3d ptCenter(pt[X],pt[Y],0);
	double radius=(pt1.distanceTo(pt2))/2;
	return CwEntity::CreateCircle(ptCenter,radius);
}

3.在Commands中添加实现

Commadns.h

void CreateCircle();

Commadns.cpp

void CreateCircle()
{
	//圆心,半径画圆
	AcGePoint3d ptCenter(100,100,0);
	CwEntity::CreateCircle(ptCenter,20);
	//两点画圆
	AcGePoint2d pt1(70, 100); 
	AcGePoint2d pt2(130, 100); 
	CwEntity::CreateCircle(pt1,pt2);
}

4.实现效果

由于我的计划中没有用到3点创建圆,所以没有按照书中学习记录

© 著作权归作者所有

c
粉丝 0
博文 22
码字总数 7373
作品 0
成都
私信 提问
加载中

评论(0)

Win10下vs2015 ObjectARX向导创建项目失败解决方法

记录下安装objectARX中无法创建工程的错误。 一、无法创建工程项目 解决方法:在安装ObjectARXWizards.msi时需要以管理员的身份进行安装 具体解决步骤: 1、创建注册表:新建一个txt文件,复制...

wxplol
03/31
0
0
ObjectARX解压包内各文件代表什么?

解压ObjectARX安装包后,里面有以下几个文件夹: (1)arxlabs:包含了 ObjectARX 的教程,和对应的示例文件。 (2)classmap:包含一个 DWG 图形,其中显示了 ObjectARX 类层次的结构。 (3...

一个小妞
2016/11/16
183
0
基于ObjectARX的DWG文件访问初探

摘 要 AutoCAD的DWG格式文件是其它图形软件的主要数据源,常常需要将其转换成其它格式。本文在讨论了DWG文件访问方法的基础上,重点介绍了基于ObjectARX的DWG文件的访问步骤与读取方法,并给...

wwl33695
2014/04/17
0
0
ObjectARX_将实体添加到图形数据库的模型空间相关函数

(1)getBlockTable 是 AcDbDatabase 类的一个成员函数,用于获得指向图形数据库的块表的指针。 getBlockTable 函数的定义形式为: 该函数的返回值 Acad::ErrorStatus 是 ObjectARX 中定义的...

一个小妞
2016/10/17
487
0
地铁线路辅助绘图设计---不做简单的画图师

辅助绘图工具的方案选择过程是复杂的,从去年8月底就开始了初步的调用,也经过了种种碰壁,最终得出了基本的方案。 先说一些题外话:为什么需要辅助绘图设计?加班的庞大工作量来自于哪里? ...

zhao_anan
2019/01/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

入门级科普:五分钟让你的应用拥有高精度定位功能

本文作者:用户_123456789 什么是智能定位服务 定位能力即帮助用户解决“我在哪”的问题,依托百度位置大数据及多种混合定位方式,百度地图开放平台为智能穿戴、用车出行、快递物流、生活服务...

百度开发者中心
2019/08/14
9
0
在Ruby on Rails中对nil v。空v。空白的简要解释 - A concise explanation of nil v. empty v. blank in Ruby on Rails

问题: I find myself repeatedly looking for a clear definition of the differences of nil? 我发现自己一再寻找nil?差异的明确定义nil? , blank? , blank? , and empty? , empty? in ......

javail
今天
15
0
DevOps与NoOps现状分析

时下的IT趋势中,DevOps 正是一个热语。它起源于几年前SPA (单页面应用) 的前端应用.我认为常态的IT技术适应就是,在新技术爆发的那一时刻开始,立马就会被敏锐的人们所采用,然后被快速传播...

tidings_
今天
21
0
OSChina 周六乱弹 —— 代码创造人工生命

Osc乱弹歌单(2020)请戳(这里) 【今日歌曲】 @小小编辑推荐:《inner universe》 - ORIGA 《inner universe》 - ORIGA 手机党少年们想听歌,请使劲儿戳(这里) 当机器人具有意识的时候,...

小小编辑
今天
20
1
怎么创建远程桌面连接

1、IIS7远程桌面 管理中文最新版是一款专业的远程桌面管理工具,更新了原09网络远程桌面管理,较之以前的版本,操作更加便捷,能够同时远程多台服务器,多台服务器间自由切换,完全无压力。I...

吹的心痒痒
今天
22
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部