CAD自定义实体结构

1、virtual Acad::ErrorStatus dwgOutFields (AcDbDwgFiler *pFiler) const ; 保存数据

2、virtual Acad::ErrorStatus dwgInFields (AcDbDwgFiler *pFiler) ;  读取数据

3、virtual Adesk::Boolean subWorldDraw (AcGiWorldDraw *mode) ;  绘制图形

4、virtual Adesk::UInt32 subSetAttributes (AcGiDrawableTraits *traits) ; 设置属性

5、virtual void subViewportDraw(AcGiViewportDraw* mode);  视图绘制图形

6、virtual Acad::ErrorStatus subErase(Adesk::Boolean erasing);  删除实体

7、virtual Acad::ErrorStatus   subGetOsnapPoints(
AcDb::OsnapMode     osnapMode,
Adesk::GsMarker     gsSelectionMark,
const AcGePoint3d&  pickPoint,
const AcGePoint3d&  lastPoint,
const AcGeMatrix3d& viewXform,
AcGePoint3dArray&   snapPoints,

AcDbIntArray &   geomIds) const;     设置捕捉点

8、virtual Acad::ErrorStatus subGetGripPoints (AcGePoint3dArray &gripPoints, AcDbIntArray &osnapModes, AcDbIntArray &geomIds) const ;  设置编辑节点

9、virtual Acad::ErrorStatus subMoveGripPointsAt (const AcDbIntArray &indices, const AcGeVector3d &offset) ;  移动节点

10、virtual Acad::ErrorStatus subTransformBy(const AcGeMatrix3d& xform);  矩阵变换

11、virtual Acad::ErrorStatus subIntersectWith(
const AcDbEntity*   ent,
AcDb::Intersect     intType,
AcGePoint3dArray&   points,
Adesk::GsMarker     thisGsMarker  = 0,
Adesk::GsMarker     otherGsMarker = 0)
const;
virtual Acad::ErrorStatus subIntersectWith(
const AcDbEntity*   ent,
AcDb::Intersect     intType,
const AcGePlane&    projPlane,
AcGePoint3dArray&   points,
Adesk::GsMarker     thisGsMarker  = 0,
Adesk::GsMarker     otherGsMarker = 0)

const;    相交计算

12、virtual Acad::ErrorStatus subGetClassID(CLSID* pClsid) const;  实体CLSID

13、virtual Acad::ErrorStatus subExplode(AcDbVoidPtrArray& entitySet) const;  实体炸开

14、virtual Acad::ErrorStatus subDeepClone(AcDbObject* pOwnerObject,
AcDbObject*& pClonedObject,
AcDbIdMapping& idMap,

Adesk::Boolean isPrimary = true) const;   深度克隆

15、virtual Acad::ErrorStatus subWblockClone(AcRxObject* pOwnerObject,
AcDbObject*& pClonedObject,
AcDbIdMapping& idMap,

Adesk::Boolean isPrimary = true) const;  外部克隆

完整的自定义实体需要注意以下几种情况

(1)数据版本

每个自定义实体设置小版本,根据实体版本,实现功能数据添加;

(2)内部图形绘制

使用geometry里面的绘制接口,而不用geometry()->draw,在视图预览中发现显示有误

(3)静态OPM和动态OPM结合

任何一个实体应该实现静态OPM,才能更好兼容CAD的特性面板

(4)字符串的储存

//保存数据

if (m_text == NULL)
{
pFiler->writeString(_T(""));
}else
{
pFiler->writeString(m_text);

}

//读取数据

if (m_text == NULL)
{
pFiler->readString(&m_text);
}else
{
acutDelString(m_text);
m_text = NULL;
pFiler->readString(&m_text);

}

使用ARX的字符串处理,解决字符内存问题

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值