====== XModelComponent ====== **//Inherited from//** [[class::domain::norderitem|NOrderItem]], **//Inherited by//** XPart, XAssembly **//Friend class//** XManager,ModelComponentManager,PartSnapshotManager,XModel, **//Description//** XModelComponent封装了模型中的部件数据以及其相关的方法。部件的基本属性包括名字、颜色和变换矩阵,可分为零件(仅包含几何数据)和装配件(仅包含其他装配件或零件)。零件包含若干具有相同物理属性的几何对象(在某些特殊情况下也可能不相同),原则上零件与零件之间不共享节点(如果共享节点,则该两零件应该合并成一个零件),零件内的几何对象使用以一种颜色构建视图数据。装配件定义了零件与零件之间的装配关系,并且支持嵌套。 部件是模型的内部数据之一,它必须通过XModel提供的接口访问,不能直接访问和修改。 部件拥有自己的角色设定(role), 相同角色的部件必须放在同一根装配树下。 **//Members//** * OrderContainer [[xpart#m_geoms|m_Geoms]] * OrderContainer [[xpart#m_subs|m_Subs]] * RGBAColor [[xpart#m_color|m_Color]] * TypeID [[xpart#m_irefmode|m_iRefMode]] * TMatrix44 [[xpart#m_dtmatrix|m_dTMatrix]] * bool [[xpart#m_bvisible|m_bVisible]] * bool [[xpart#m_bauxiliary|m_bAuxiliary]] **//Public interface//** * [[xpart#xpart1|XPart]](ulong id) * [[xpart#~xpart|~XPart]]() * const XModel * [[xpart#getmodel|getModel]]() const * virtual void [[xpart#clear|clear]]() * virtual void [[xpart#write|write]](XBinaryIO * io)const * virtual ErrorCode [[xpart#read|read]](PartManager * pMgr,XBinaryIO * io) * bool [[xpart#isvisible|isVisible]]() const * void [[xpart#setvisible|setVisible]](bool b) * bool [[xpart#isauxiliary|isAuxiliary]]() const * void [[xpart#setauxiliary|setAuxiliary]](bool b) * RGBAColor [[xpart#getcolor|getColor]]() const * void [[xpart#setcolor|setColor]](RGBAColor c) * ulong [[xpart#getreferencepartid|getReferencePartID]]() const * void [[xpart#setreferencepartid|setReferencePartID]](ulong p) * XAssembly * [[xpart#toassembly|toAssembly]]() * const XAssembly * [[xpart#toassembly|toAssembly]]() const * ulong [[xpart#getgeometrycount|getGeometryCount]]() const * void [[xpart#bindgeometryiterator|bindGeometryIterator]](OrderItemIterator * pIter)const * const XGeometry * [[xpart#getfirstgeometry|getFirstGeometry]]() const * ulong [[xpart#getpartsnapshotcount|getPartSnapshotCount]]() const * void [[xpart#bindpartsnapshotiterator|bindPartSnapshotIterator]](OrderItemIterator * pIter)const * const XPartSnapshot * [[xpart#getfirstpartsnapshot|getFirstPartSnapshot]]() const * const XPartSnapshot * [[xpart#getlastsnapshot|getLastSnapshot]]() const * const XAssembly * [[xpart#getparentassembly|getParentAssembly]]() const * void [[xpart#setparentassembly|setParentAssembly]](const XAssembly * a) * TMatrix44 & [[xpart#gettrmatrix|getTrMatrix]]() * const TMatrix44 & [[xpart#gettrmatrix|getTrMatrix]]() const **//Private interface//** * void [[xpart#detach|detach]](XGeometry * g, GeometryManager * geomMgr) * void [[xpart#attach|attach]](XGeometry * g, GeometryManager * geomMgr) * void [[xpart#detach|detach]](XPartSnapshot * pss, PartSnapshotManager * pssMgr) * void [[xpart#attach|attach]](XPartSnapshot * pss, PartSnapshotManager * pssMgr) ---- {{anchor:m_geoms}} **OrderContainer m_Geoms** 部件内几何对象数组 {{anchor:m_subs}} **OrderContainer m_Subs** 部件内子对象数组(对于装配体,是子部件对象;对于部件,是部件快照对象的引用) {{anchor:m_color}} **RGBAColor m_Color** 部件颜色 {{anchor:m_irefmode}} **TypeID m_iRefMode** 部件参考模式 {{anchor:m_dtmatrix}} **TMatrix44 m_dTMatrix** 部件坐标变换矩阵 {{anchor:m_bvisible}} **bool m_bVisible** 部件可见性 {{anchor:m_bauxiliary}} **bool m_bAuxiliary** 是否为辅助部件 ---- {{anchor:xpart1}} **XPart(ulong id)** *function: 构造函数 *parameters: - [i]ulong id: 部件ID *return value: 无 {{anchor:~xpart}} **~XPart()** *function: 析构函数 *parameters: NULL *return value: 无 {{anchor:getmodel}} **const XModel * getModel() const** *function: 获取部件所属模型 *parameters: NULL *return value: 部件所属模型指针 {{anchor:clear}} **virtual void clear()** *function: 清空部件 *parameters: NULL *return value: 无 {{anchor:write}} **virtual void write(XBinaryIO * io)const** *function: 将部件数据写入到二进制文件中 *parameters: - [i]XBinaryIO * io: 二进制文件句柄 *return value: 无 {{anchor:read}} **virtual ErrorCode read(PartManager * pMgr,XBinaryIO * io)** *function: 从二进制文件中读取部件数据 *parameters: - [i]PartManager * pMgr: 部件管理器 - [i]XBinaryIO * io: 二进制文件句柄 *return value: 如成功读取返回Error_None, 否则返回相应错误码 {{anchor:isvisible}} **bool isVisible() const** *function: 部件是否可见 *parameters: NULL *return value: 可见返回true,否则返回false {{anchor:setvisible}} **void setVisible(bool b)** *function: 设置部件的可见性 *parameters: - [i]bool b: 部件可见性 *return value: 无 {{anchor:isauxiliary}} **bool isAuxiliary() const** *function: 是否辅助部件 *parameters: NULL *return value: 是辅助部件返回true,否则返回false {{anchor:setauxiliary}} **void setAuxiliary(bool b)** *function: 设置辅助部件 *parameters: - [i]bool b: 是否辅助部件 *return value: 无 {{anchor:getcolor}} **RGBAColor getColor() const** *function: 获取部件颜色 *parameters: NULL *return value: 部件颜色 {{anchor:setcolor}} **void setColor(RGBAColor c)** *function: 设置部件颜色 *parameters: - [i]RGBAColor c: 部件颜色 *return value: 无 {{anchor:getreferencepartid}} **ulong getReferencePartID() const** *function: 获取参考部件ID *parameters: NULL *return value: 参考部件ID {{anchor:setreferencepartid}} **void setReferencePartID(ulong p)** *function: 设置参考部件ID *parameters: - [i]ulong p: 参考部件ID *return value: 无 {{anchor:toassembly}} **XAssembly * toAssembly()** *function: 转换为装配体对象 *parameters: NULL *return value: 装配体对象指针(可修改) {{anchor:toassembly}} **const XAssembly * toAssembly() const** *function: 转换为装配体对象 *parameters: NULL *return value: 装配体对象指针(不可修改) {{anchor:getgeometrycount}} **ulong getGeometryCount() const** *function: 获取几何对象个数 *parameters: NULL *return value: 部件几何对象个数 {{anchor:bindgeometryiterator}} **void bindGeometryIterator(OrderItemIterator * pIter)const** *function: 绑定几何对象访问迭代器 *parameters: - [i]OrderItemIterator * pIter: 几何对象访问迭代器 *return value: 无 {{anchor:getfirstgeometry}} **const XGeometry * getFirstGeometry() const** *function: 获取部件的第一个几何对象 *parameters: NULL *return value: 部件的第一个几何对象 {{anchor:getpartsnapshotcount}} **ulong getPartSnapshotCount() const** *function: 获取部件快照的个数 *parameters: NULL *return value: 部件快照的个数 {{anchor:bindpartsnapshotiterator}} **void bindPartSnapshotIterator(OrderItemIterator * pIter)const** *function: 绑定部件快照对象访问迭代器 *parameters: - [i]OrderItemIterator * pIter: 部件快照对象访问迭代器 *return value: 无 {{anchor:getfirstpartsnapshot}} **const XPartSnapshot * getFirstPartSnapshot() const** *function: 获取部件的第一个快照对象 *parameters: NULL *return value: 部件的第一个快照对象 {{anchor:getlastsnapshot}} **const XPartSnapshot * getLastSnapshot() const** *function: 获取部件的最后一个快照对象 *parameters: NULL *return value: 部件的最后一个快照对象 {{anchor:getparentassembly}} **const XAssembly * getParentAssembly() const** *function: 获取部件的父装配体对象 *parameters: NULL *return value: 部件的父装配体对象 {{anchor:setparentassembly}} **void setParentAssembly(const XAssembly * a)** *function: 设置部件的父装配体对象 *parameters: - [i]const XAssembly * a: 部件的父装配体对象 *return value: 无 {{anchor:gettrmatrix}} **TMatrix44 & getTrMatrix()** *function: 获取部件的变换矩阵 *parameters: NULL *return value: 部件的变换矩阵(可修改) {{anchor:gettrmatrix}} **const TMatrix44 & getTrMatrix() const** *function: 获取部件的变换矩阵 *parameters: NULL *return value: 部件的变换矩阵(不可修改) ---- {{anchor:detach}} **void detach(XGeometry * g, GeometryManager * geomMgr)** *function: 解除部件与几何对象的从属关系 *parameters: - [i]XGeometry * g: 几何对象 - [i] GeometryManager * geomMgr: 几何对象管理器 *return value: 无 {{anchor:attach}} **void attach(XGeometry * g, GeometryManager * geomMgr)** *function: 绑定部件与几何对象的从属关系 *parameters: - [i]XGeometry * g: 几何对象 - [i] GeometryManager * geomMgr: 几何对象管理器 *return value: 无 {{anchor:detach}} **void detach(XPartSnapshot * pss, PartSnapshotManager * pssMgr)** *function: 解除部件与快照对象的从属关系 *parameters: - [i]XPartSnapshot * pss: 部件快照对象 - [i] PartSnapshotManager * pssMgr: 部件快照对象管理器 *return value: 无 {{anchor:attach}} **void attach(XPartSnapshot * pss, PartSnapshotManager * pssMgr)** *function: 绑定部件与快照对象的从属关系 *parameters: - [i]XPartSnapshot * pss: 部件快照对象 - [i] PartSnapshotManager * pssMgr: 部件快照对象管理器 *return value: 无