有些时候,我们可能会需要将特定Element所代表的几何图形提取出来做进一步处理,比如删选其中的曲线用于坐标计算,筛选其中的实体用于网格化处理等等。这个过程有时可能会很简单,比如: 这个Element是内置类型的有对应API可用于此目的;但有时候这个过程也可能会很复杂,比如: 这个Element是第三方模块创建的,我们不知道它的形成规则,也没有能操作它的API。为此,CIM系统提供了一个名为CimGraphicsElementCollector的工具类,专门用于将特定Element所代表的几何图形按原样分类提取出来以供后期使用。使用此工具的最大好处在于,它是通用的,使用时不需要关心目标Element的来源和种类,只需要按固定模式执行提取即可;这个工具除了能处理单个Element外,还支持批量处理位于特定视口中的所有Element,并能将得到的几何体与其来源Element相关联以供反向查询使用。
此工具的使用非常简单,只需按照执行处理和提取结果两步进行即可:
执行处理: 即开始处理指定的Element或Element集合,系统目前支持3种方式的处理:
ProcessViewport: 提取指定视口(为空时指代当前视口)中所有Element的几何体;
ProcessElement: 提取指定Element的几何体;
ProcessXGraphics: 提取指定Element上关联的XGraphics(不存在时可指示自动创建)中的几何体;
提取结果: 即提取处理后所得到的分类存储的几何体,既可以按Element来提取(即提取特定Element所属的特定类型的几何体),也可以全部直接提取。系统目前支持的提取方法如下:
GetElementHandles: 获取本次参与处理的Element集合;
GetCurves: 获取参与本次处理的特定Element所属的CurveVector;
GetAllCurves: 获取本次处理后得到的所有CurveVector;
GetSolids: 获取参与本次处理的特定Element所属的ISolidPrimitive;
GetAllSolids: 获取本地处理后得到的所有ISolidPrimitive;
GetSurfaces: 获取本次参与处理的特定Element所属的B样条曲面(MSBSplineSurface);
GetAllSurfaces: 获取本次处理后得到的所有B样条曲面(MSBSplineSurface);
GetBodies: 获取参与本次处理的特定Element所属的实体(ISolidKernelEntity);
GetAllBodies: 获取本次处理后得到的所有实体(ISolidKernelEntity);
GetFacets: 获取参与本次处理的特定Element所属的网格面(PolyfaceHeader);
GetAllFacets: 获取本次处理后得到的所有网格面(PolyfaceHeader);