从ISolidKernelEntity直接取得BODY_TAG


ISolidKernelEntity用于C++中表达智能实体和参数化实体的对象,同时我们还保留了老的C函数库。在C函数库中主要使用BODY_TAG(CE中重新命名了,在V8i中叫做KIBODY)来表达智能实体。由于C++的封装还不能完全取代C函数,这就需要我们从ISolidKernelEntity取得BODY_TAG进而可以调用C函数库。当然,如果您了解各个对象关系的话,可以按ISolidKernelEntity --> EditElementHandle --> MSElementDescr --> BODY_TAG这个途径来转换,不过确实显得复杂了一些,那有没有一步就直接从ISolidKernelEntity取得BODY_TAG的方法呢?答案是肯定的。

搜索MicroStationApi.chm帮助文档,能找到如下内容:

其中的mdlSolid_extractBodyFromISolidKernelEntity和mdlSolid_copyBodyFromISolidKernelEntity能做到从ISolidKernelEntity得到BODY_TAG。两者的区别是,前者从已经拥有BODY_TAG的ISolidKernelEntity中取得,后者是复制一份出来。