ObjectArx自定义实体入门.docx

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ObjectArx自定义实体入门

[资料]ObjectArx自定义实体入门(C++)及注意事项收藏本文介绍了构造自定义实体的步骤、必须继承的函数和必须注意的事项??H; m; ?6 A: Z8 j- t! k/ \ e8 T1.新建一个从AcDbEntity继承的类,如EntTest,必须添加的头文件: stdarx.h,acadstrc.h, geassign.h。. S0 P: ?# S% S l r U# S2.在该类头文件的类声明中添加宏:ACRX_DECLARE_MEMBERS(EntTest);, o, Y. O* x% G. a v. d3.在该类的cpp文件中,类的前面添加宏: O p ~( r9 w+ k. H2 V. p0 U: rACRX_DXF_DEFINE_MEMBERS(EntTest, AcDbEntity,AcDb::kDHL_CURRENT, AcDb::kMReleaseCurrent,0,平面实体,autoCAD);//第5个参数为在CAD中该实体类的名称,$ b4 y1 N5 h0 |MAKE_ACDBOPENOBJECT_FUNCTION(EntTest);0 D( Y4 V* ` j* R/ V. T( Y4.从AcDbEntity类中重载几个必须的虚函数:8 T! u% f! s p( [ x; `? ?? ?virtual Adesk::Boolean worldDraw(AcGiWorldDraw* mode);; `* o/ h1 Z* c? ???virtual Acad::ErrorStatusdwgInFields(AcDbDwgFiler*);??]7 c, f7 g, B$ r, O: C- a? ? virtual Acad::ErrorStatusdwgOutFields(AcDbDwgFiler*) const;! k; l; l( q% a) P D/ r+ Qvirtual Acad::ErrorStatusgetGripPoints(AcGePoint3dArray gripPoints,AcDbIntArrayosnapModes,AcDbIntArray geomIds) const;??t h( Q; m( v9 d2 a B? ? virtual Acad::ErrorStatusmoveGripPointsAt(const AcDbIntArray indices,const AcGeVector3d offset);: t* V5 O7 I4 {% f0 ` [5.实现第4步中几个虚函数必须注意:5 | b+ s9 Q5 t1 r6 m# Z??在dwgInFields函数的开始处必须有:1 I, O5 t# m( j. E? ?assertWriteEnabled();$ t7 K h. t$ l* ]6 \ H) o! x* GAcDbObject::dwgInFields(pFiler);, [8 u+ Q6 [3 @% X( ]% Sif(pFiler-filerType()==AcDb::kWblockCloneFiler)! @0 w U# g g8 {1 ?+ z3 |{ _( \+ ~8 `- {2 n4 T??AcDbHardPointerId Id;5 X3 Z7 E! S2 R??}( Z??pFiler-readItem(Id);??7 Z: P% _2 @$ U% ?% R4 \}0 r/ g/ t! Y E! s$ f4 r! G( g??e在dwgOutFields函数的开始处必须有:6 _4 k??O; C+ o? ???assertReadEnabled();# r0 g, h: n2 s6 q+ F. P* {??AcDbObject::dwgOutFields(pFiler);( G q1 `: D! O0 u, a$ j0 A??if (pFiler-filerType()==AcDb::kWblockCloneFiler) h2 {8 K2 ]$ @4 K N1 B? ?pFiler-writeHardPointerId((AcDbHardPointerId)ownerId());7 e# r$ R/ l k6 S- \! A/ j上叙两个函数是用来写入写出自定义实体的成员变量的,以保证在拖动夹点的过程中这些变量是实时变化的(可以在worldDraw或moveGripPointsAt中改变这些值)。成员变量不能为指针,在要用数组指针的场合可用Carray数组来实现。$ R% C( D4 H??W- f6.这一步很重要,少了它就不是自定义实体了,呵呵。) s6 h+ i) K7 O在InitApplication()函数中添加:8 m.

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档