探秘AutoCAD中的实体关联
创建一个圆AcDbCircle和直线AcDbLine,创建一个圆半径与直线长度的关联。通过ARXDBG分析如下:
1 2 3 4 5 6 7 8 9 10 11 | AcDbCircle,句柄293,同时添加一个指向依赖AcDbAssocDependency的反应器,句柄29C AcDbLine,句柄294,同时添加一个指向依赖AcDbAssocDependency的反应器,句柄29B AcDbAssocActionBody,句柄295,这里很有意思,显示的是AcMgAssocActionBody,意思是托管里继承的动作块,同时两个组码1分别保存了库名、类名,(1 . "ztcad.Cad.Controllers.AssocController+MyActionBody" ) (1 . "D:\\ztcad\\bin\\sys19x64\\ztcad.Cad.dll" )) AcDbAssocAction,句柄296,同时添加一个指向网络AcDbAssocNetwork的反应器,句柄298,添加一个指向动作块AcDbAssocActionBody的反应器,句柄295,添加两个指向依赖AcDbAssocDependency的引用,句柄29B、29C AcDbDictionary,句柄297,同时添加一个指向模型空间的反应器,句柄1CE,添加一个指向网络AcDbAssocNetwork的引用,句柄298 AcDbAssocNetwork,句柄298,同时添加一个指向词典的反应器,句柄297,添加一个指向动作AcDbAssocAction的引用,句柄296 AcDbDictionary,句柄299,同时添加一个指向词典的反应器,句柄C,添加一个指向网络AcDbAssocNetwork的引用,句柄29A AcDbAssocNetwork,句柄29A,同时添加一个指向词典的反应器,句柄299,添加一个指向网络AcDbAssocNetwork的引用,句柄298 AcDbAssocDependency,句柄29B,同时添加一个指向动作的反应器,句柄296,添加一个指向直线的反应器,句柄294 AcDbAssocDependency,句柄29C,同时添加一个指向动作的反应器,句柄296,添加一个指向圆的反应器,句柄293 |
如图:
我们通过继承ActionBody,最终实现了关联的结构。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步