二次开发CAD

AcDbObjectId objId; //my : AcDbObjectId是一个典型的C++类,每一个ACAD对象都会

分配一个唯一的ID号,用于查询等操作,ACAD图形本质是数据库,一个ACAD对象对应一条数据库记录,ID号相当于记录的索引或主键。

ads_name ss;

AcDbObjectIdArray objIds;

指向成员操作符。要求是对象是指针。 比如你有一个类,叫CClass,则: CClass *pt = new CClass; pt->func();

->运算符的左边必须是一个指针,右边必须是左边的指针指向的类中的成员。

acedSSGet()函数用法详解

大多数ObjectARX函数在处理选择集和实体时,都用名字来识别选择集或实体,该名字用一个长整型对来表示的,并对AutoCAD来维护。在ObjectARX中,该名字的类型为ads_name。

在对选择集或实体进行操作之前,ObjectARX应用程序必须通过调用一个返回其名字的库函数来得到选择集或实体名字。

注意:选择集和实体的名字是不稳定的,它们仅仅在AutoCAD当前图形工作时有效。如果从AutoCAD退出或切换到另一个图形时其值就会丢失。

对于选择集来说,它也是与当前图有关联的,所以其名字的不稳定性不会影响选择集。但是对于实体就不一样了,因为它是被存放在图形数据库中的,名字的不稳定性要影响到对实体的操作。应用程序必须在下一次对同一图文件中的同一实体进行操作,可以使用实体句柄,重新获取其实体名。 选择集的处理

ObjectARX函数对选择集的处理类似于AutoLISP。acedSSGet()函数提供大多数创建选择集方法。它一般通过以下三种方法之一创建选择集:

(1)提供让用户选择对象。

(2)象交互式应用AutoCAD一样,利用RICKFIRST定义、Crossing、Crossing Polygon、Fence、Last、Previous、Window、Window Polygon等匹配条件的方式来选择实体对象,也可以通过指定一个单独点或Fence点来选择。 (3)使用一系列属性和条件筛选当前图数据库来选择实体对象。 该函数原型为:

int acedSSGet(const chat *str,const void *pt1,const void *pt2,const struct resbuf *entmask,ads_name ss);

acedSSGet()的第一个参数str,说明所使用的选择条件,如下: 表示码 意义

NULL 单点选择(如果指定了pt1)或用户选择(如果pt1也为NULL) # 非几何选择(all、last、previous) :$ 提供提示文字 . 用户拾取方式 :? 其他回调函数 A All选择方式 B Box选择方式 C Crossing选择方式

CP Crossing Polygon选择方式

:D 可以重复,即可以重复选择一个实体,并加入选择集中

:E 在aperture中的所有实体 F Fence选择方式 G Groups选择

I 如果存在RICKFIRST集、则用该集 :K 关键字回调函数 L Last选择方式 M 多重选择方式 P Previous选择方式 :S 强制单个实体对象被选择 W Window选择方式

WP Window Polygon选择方式 X 用于筛选程序搜索整个图形数据库

紧跟着的两个参数用于指定与某些选择方式有关的可选择的点。当不使用他们时,应该取NULL值。如果第四个参数entmask不是NULL,则它指向一个缓冲区表,用于存放用筛选选择方式的结果。第五个参数ss是选择集的识别名字。 下列是调用acedSSGet()的例子: 1 ads_point pt1,pt2,pt3,pt4; 2 struct resbuf *poin

>>鐏炴洖绱戦崗銊︽瀮<<
12@gma联系客服:779662525#qq.com(#替换为@)