===== 使用模型对象 ===== 对于常用的CAE应用来说,模型([[class:domain:xmodel|XModel]]数据是最核心的组成部分,也是最复杂的部分。XT框架中使用XModel封装离散化的几何数据,它是介于原生几何模型与最终的网格模型之间的中间数据,它的几何数据能保持拓扑关系,离散数据能直接用来显示。 XT框架并不直接支持解析类几何对象(但是可以通过几何引擎构建支持解析属性的几何对象)。 一个模型主要包含三个层次的信息,第一个层次是装配信息,即零部件与零部件的装配关系,便于用户对整个模型的访问与管理;第二个层次是几何拓扑信息,一个零部件包含若干顶层几何体,而顶层几何体又分别包含若干下一级几何体(如体包含若干面,面包含若干边,边包含最多两个顶点);第三个层次是网格信息,模型的几何面在视图上都以离散的三角片(三角单元)表达,几何边在视图上以离散的线段(线单元)表达,几何顶点以离散的点(点单元)表达,在截面视图上,以离散的体单元表达截面细节。下图显示了模型的结构示意图: {{ pics:xt_model.png }} XT框架对几何数据与网格数据都通过XModel来表达,读入一个几何模型之后,XT首先将其转化为XModel几何对象,这样的几何对象拥有完全保真的装配关系和拓扑关系,这个时候的离散数据主要是三角化之后生成的三角片,一般由这些三角片可以计算出足够精确的局部几何属性如曲率、法向等,这些三角片也直接构成了几何对象的视图数据;这样的XModel对象可以构成网格划分程序的有效输入,在完成网格划分之后,XT也会将网格数据读入构建一个新的XModel网格对象,这个对象会完整复制XModel几何对象的装配关系与拓扑关系,因此XT的几何与网格可以很好的对应起来。 XModel从XItem继承,由ModelManager管理,对于典型的CAE应用来说,一个应用文档至少包含一个几何模型对象(通过getModel()接口访问),可以包含0个或多个网格模型对象(可以在文档中增加getMesh(ulong id)接口访问),而XModel则提供了从装配(Part或者Assembly)、几何(Geometry)到离散数据的访问接口(Node或者Element): - 装配接口 * getAssembly() : 获取装配体 * getPart() :获取零件对象 * getPartCount(): 获取零件个数 * bindPartIterator() : 绑定零件遍历器以遍历零件 - 几何接口 * getGeometry() : 获取几何对象 * getGeometryCount() * bindGeometryIterator() - 网格接口 * getElement() * getNode() * getElementCount() * getNodeCount()