选择块参照中嵌套的实体

在利用ObjectARX进行CAD二次开发时,如何选择块参照中嵌套的实体,并进行进行下一步操作?这个问题的难点是:如何判断用户选中的实体到底是块参照里面的非嵌套对象实体?还是块参照中嵌套的块参照的实体?本文利用全局函数acedNEnsSelP解决了这个问题,并可实现:如果用户选择块参照中嵌套的实体,直接视为用户选择了这个嵌套的块参照,效果如图。

一、全局函数acedNEntSelP介绍
为了选中块参照中的实体,ObjectARX提供了一个接口:
int acedNEntSelP(
const ACHAR * str,
ads_name entres,
ads_point ptres,
int pickflag,
ads_matrix xformres,
struct resbuf ** refstkres
);

const ACHAR * str:在选择块参照中实体时的提示语,如果为NULL,AutoCAD 显示默认的提示语。
ads_name entres:选择实体的ads_name名称。
ads_point ptres:选择实体时点取的点。
int pickflag:指定acedNEntSelP是否用于和用户交互;如果为假,acedNEntSelP提示用户指定实体并忽略ptres;如果为真,使用ptres的初始值去选择实体。
ads_matrix xformres:该4×4变换矩阵可以将实体的任意ECS坐标转换为WCS坐标。如果选择的实体不是嵌套实体,该值设为单位矩阵。利用这个矩阵,可以将选中的实体从ECS坐标系转换到WCS坐标系。
struct resbuf ** refstkres :包含嵌套实体的

你可能感兴趣的:(ObjectARX,c++)