创建一个圆AcDbCircle和直线AcDbLine,创建一个圆半径与直线长度的关联。通过ARXDBG分析如下:
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,最终实现了关联的结构。