====== PartManager ====== **//Inherited from//** [[class::domain::xmanager|XManager]], **//Inherited by//** NULL **//Friend class//** NULL **//Description//** PartManager从XManager继承,是部件对象管理器,所有部件对象的创建、销毁、访问以及修改都通过调用它的通用接口完成。它的域识别码是Domain_Part,类型名是"DPART"。 它管理的对象分为两类:XPart和XAssembly,其中XAssembly从XPart继承。 部件对象是模型对象的内部数据,它被模型对象管理,部件对象管理器是模型对象的成员之一,部件对象的ID只在模型对象内唯一。对于多个模型的场景,部件对象管理器也有多个,在模型初始化时部件对象管理器的句柄会被记录到数据操作记录器中以支持undo、redo机制。 **//Members//** * XModel * [[partmanager#m_pmdl|m_pMdl]] * PartSnapshotManager * [[partmanager#m_ppssmgr|m_pPssMgr]] **//Public interface//** * [[partmanager#partmanager1|PartManager]](XModel * mdl,XMemPool * item_pool) * [[partmanager#~partmanager|~PartManager]]() * void [[partmanager#bindpartsnapshotmanager|bindPartSnapshotManager]](PartSnapshotManager * pssMgr) * void [[partmanager#write|write]](XBinaryIO * io) * ErrorCode [[partmanager#read|read]](XBinaryIO * io) * void [[partmanager#write|write]](XH5IO * io, H5Obj * grp) * bool [[partmanager#read|read]](XH5IO * io, H5Obj * grp) * void [[partmanager#linkitem|linkItem]](XItem * obj,const XItem * ref, bool bAttach) * void [[partmanager#serialize|serialize]](XBinaryIO * io, XItem * obj, bool bSave) * void [[partmanager#updatecache|updateCache]](XItem * obj, OpnType opn) * void [[partmanager#linkpartgeoms|linkPartGeoms]]() * void [[partmanager#linkassemblyparts|linkAssemblyParts]]() **//Protected interface//** * void [[partmanager#writeassembly|writeAssembly]](XBinaryIO * io, const XAssembly * asb, set * doneIds) * void [[partmanager#removeprevnext|removePrevNext]](XItem * item) ---- {{anchor:m_pmdl}} **XModel * m_pMdl** 所属的模型对象 {{anchor:m_ppssmgr}} **PartSnapshotManager * m_pPssMgr** 部件快照管理器 ---- {{anchor:partmanager1}} **PartManager(XModel * mdl,XMemPool * item_pool)** *function: 构造函数 *parameters: - [i]XModel * mdl: 模型对象 - [i]XMemPool * item_pool: 内存池 *return value: 无 {{anchor:~partmanager}} **~PartManager()** *function: 析构函数 *parameters: NULL *return value: 无 {{anchor:bindpartsnapshotmanager}} **void bindPartSnapshotManager(PartSnapshotManager * pssMgr)** *function: 绑定部件快照管理器(单一实例) *parameters: - [i]PartSnapshotManager * pssMgr: 部件快照管理器 *return value: 无 {{anchor:read}} **ErrorCode read(XBinaryIO * io)** *function: 从二进制文件中读取对象数据到管理器中 *parameters: - [i]XBinaryIO * io: 二进制文件句柄 *return value: 成功读取返回Error_None, 否则返回相应错误码 {{anchor:write}} **void write(XBinaryIO * io)** *function: 将管理的所有对象数据写入到二进制文件中 *parameters: - [i]XBinaryIO * io: 二进制文件句柄 *return value: 无 {{anchor:write}} **void write(XH5IO * io, H5Obj * grp)** *function: 将管理的所有对象数据写入到HDF5文件中 *parameters: - [i]XH5IO * io: HDF5文件句柄 - [i] H5Obj * grp: 对象管理器对应的HDF5节点 *return value: 无 {{anchor:read}} **bool read(XH5IO * io, H5Obj * grp)** *function: 从HDF5文件中读取对象数据到管理器中 *parameters: - [i]XH5IO * io: HDF5文件句柄 - [i] H5Obj * grp: 对象管理器对应的HDF5节点 *return value: 完整读取返回true,否则返回false {{anchor:linkitem}} **void linkItem(XItem * obj,const XItem * ref, bool bAttach)** *function: 用于绑定或解除部件对象与关联对象的从属关系 *parameters: - [i]XItem * obj: 部件对象(主对象) - [i]const XItem * ref: 参考对象(从对象) - [i] bool bAttach: true为绑定,false为解除 *return value: 无 {{anchor:serialize}} **void serialize(XBinaryIO * io, XItem * obj, bool bSave)** *function: 在undo、redo时从数据操作记录文件中序列化数据对象 *parameters: - [i]XBinaryIO * io: 二进制数据操作记录文件句柄 - [i] XItem * obj: 数据对象 - [i] bool bSave: 是否保存数据对象 *return value: 无 {{anchor:updatecache}} **void updateCache(XItem * obj, OpnType opn)** *function: 基类函数的重新实现,根据数据操作类型更新部件对象有关缓存数据 *parameters: - [i]XItem * obj: 部件对象 - [i] OpnType opn: 数据操作类型 *return value: 无 {{anchor:linkpartgeoms}} **void linkPartGeoms()** *function: 建立模型内部件对象与几何对象的从属关系 *parameters: NULL *return value: 无 {{anchor:linkassemblyparts}} **void linkAssemblyParts()** *function: 建立模型内装配体对象与部件对象的从属关系 *parameters: NULL *return value: 无 ---- {{anchor:writeassembly}} **void writeAssembly(XBinaryIO * io, const XAssembly * asb, set * doneIds)** *function: 将装配体内的所有部件对象写入到二进制文件中 *parameters: - [i]XBinaryIO * io: 二进制文件句柄 - [i] const XAssembly * asb: 装配体对象 - [i] set * doneIds: 已经被处理的对象ID集合 *return value: 无 {{anchor:removeprevnext}} **void removePrevNext(XItem * item)** *function: 从当前的部件对象序列中删除指定部件对象 *parameters: - [i]XItem * item: 部件对象 *return value: 无