====== GeometryManager ====== **//Inherited from//** [[class::domain::xmanager|XManager]], **//Inherited by//** NULL **//Friend class//** NULL **//Description//** GeometryManager从XManager继承,是几何对象管理器,所有几何对象的创建、销毁、访问以及修改都通过调用它的通用接口完成。它的域识别码是Domain_Geometry,类型名是“DGEOMETRY”。 它管理的对象分为4类:XSolid,XFace,XEdge,XVertex,均从XGeometry继承,为了方便开发者访问,GeometryManager为每种类型的几何对象分别构建了一个独立的哈希索引表。 几何对象是模型对象的内部数据,它被模型对象管理,几何对象管理器是模型对象的成员之一,几何对象的ID只在模型对象内唯一。对于多个模型的场景,几何对象管理器也有多个,在模型初始化时几何对象管理器的句柄会被记录到数据操作记录器中以支持undo、redo机制。 **//Members//** * ElementSetHash * [[geometrymanager#m_pentityhash[ditem_entity_type_max-ditem_entity]|m_pEntityHash[DItem_Entity_Type_Max-DItem_Entity]]] * XModel * [[geometrymanager#m_pmdl|m_pMdl]] **//Public interface//** * [[geometrymanager#geometrymanager1|GeometryManager]](XModel * mdl,XMemPool * item_pool) * [[geometrymanager#~geometrymanager|~GeometryManager]]() * void [[geometrymanager#clear|clear]]() * void [[geometrymanager#write|write]](XBinaryIO * io) * ErrorCode [[geometrymanager#read|read]](XBinaryIO * io) * void [[geometrymanager#write|write]](XH5IO * io, H5Obj * grp) * bool [[geometrymanager#read|read]](XH5IO * io, H5Obj * grp) * void [[geometrymanager#bindentityiterator|bindEntityIterator]](HashIterator *iter,TypeID type) * ulong [[geometrymanager#getentitycount|getEntityCount]](TypeID type) * virtual void [[geometrymanager#additem|addItem]](XItem * item) * virtual void [[geometrymanager#removeitem|removeItem]](XItem * item) * virtual void [[geometrymanager#updateafterrenumber|updateAfterRenumber]](TypeID tid = DItem_Unknown) * void [[geometrymanager#attachelement|attachElement]](ElementSet * g,XElement * el) * void [[geometrymanager#detachelement|detachElement]](ElementSet * g,XElement * el) * void [[geometrymanager#attachchildentity|attachChildEntity]](XGeometry * g,const XGeometry * child) * void [[geometrymanager#detachchildentity|detachChildEntity]](XGeometry * g,const XGeometry * child) * void [[geometrymanager#updatecache|updateCache]](XItem * obj, OpnType opn) * void [[geometrymanager#serialize|serialize]](XBinaryIO * io, XItem * obj, bool bSave) * void [[geometrymanager#serializegeomlinks|serializeGeomLinks]](XBinaryIO * io, XGeometry * obj, bool bSave) * void [[geometrymanager#attachitem|attachItem]](XItem * obj, const XItem * ref) * void [[geometrymanager#detachitem|detachItem]](XItem * obj, const XItem * ref) * void [[geometrymanager#linkgeomelems|linkGeomElems]]() **//Protected interface//** * void [[geometrymanager#removeprevnext|removePrevNext]](XItem * item) ---- {{anchor:m_pentityhash[ditem_entity_type_max-ditem_entity]}} **ElementSetHash * m_pEntityHash[DItem_Entity_Type_Max-DItem_Entity]** 几何对象哈希表 {{anchor:m_pmdl}} **XModel * m_pMdl** 所属模型 ---- {{anchor:geometrymanager1}} **GeometryManager(XModel * mdl,XMemPool * item_pool)** *function: 构造函数 *parameters: - [i]XModel * mdl: 模型对象 - [i]XMemPool * item_pool: 内存池 *return value: 无 {{anchor:~geometrymanager}} **~GeometryManager()** *function: 析构函数 *parameters: NULL *return value: 无 {{anchor:clear}} **void clear()** *function: 基类函数的重新实现,清空几何对象 *parameters: NULL *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:bindentityiterator}} **void bindEntityIterator(HashIterator *iter,TypeID type)** *function: 绑定指定类型的几何对象访问迭代器 *parameters: - [i]HashIterator *iter: 几何对象访问迭代器 - [i]TypeID type: 拓扑类型 *return value: 无 {{anchor:getentitycount}} **ulong getEntityCount(TypeID type)** *function: 获取指定拓扑类型的对象个数 *parameters: - [i]TypeID type: 拓扑类型 *return value: 指定拓扑类型的对象个数 {{anchor:additem}} **virtual void addItem(XItem * item)** *function: 基类函数的重新实现,添加几何对象 *parameters: - [i]XItem * item: 几何对象 *return value: 无 {{anchor:removeitem}} **virtual void removeItem(XItem * item)** *function: 基类函数的重新实现,删除几何对象 *parameters: - [i]XItem * item: 几何对象 *return value: 无 {{anchor:updateafterrenumber}} **virtual void updateAfterRenumber(TypeID tid = DItem_Unknown)** *function: 基类函数的重新实现,在某些对象重新编号之后更新相关数据 *parameters: - [i]TypeID tid = DItem_Unknown: 被重新编号的对象类型 *return value: 无 {{anchor:attachelement}} **void attachElement(ElementSet * g,XElement * el)** *function: 建立几何对象与单元对象的从属关系 *parameters: - [i]ElementSet * g: 几何对象 - [i]XElement * el: 单元对象 *return value: 无 {{anchor:detachelement}} **void detachElement(ElementSet * g,XElement * el)** *function: 解除几何对象与单元对象的从属关系 *parameters: - [i]ElementSet * g: 几何对象 - [i]XElement * el:单元对象 *return value: 无 {{anchor:attachchildentity}} **void attachChildEntity(XGeometry * g,const XGeometry * child)** *function: 绑定父几何对象与子几何对象的拓扑关系 *parameters: - [i]XGeometry * g: 父几何对象 - [i]const XGeometry * child: 子几何对象 *return value: 无 {{anchor:detachchildentity}} **void detachChildEntity(XGeometry * g,const XGeometry * child)** *function: 解除父几何对象与子几何对象的拓扑关系 *parameters: - [i]XGeometry * g: 父几何对象 - [i]const XGeometry * child: 子几何对象 *return value: 无 {{anchor:updatecache}} **void updateCache(XItem * obj, OpnType opn)** *function: 基类函数的重新实现,根据数据操作类型更新部件对象有关缓存数据 *parameters: - [i]XItem * obj: 部件对象 - [i] OpnType opn: 数据操作类型 *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:serializegeomlinks}} **void serializeGeomLinks(XBinaryIO * io, XGeometry * obj, bool bSave)** *function: 序列化几何对象的拓扑关系 *parameters: - [i]XBinaryIO * io: 二进制记录文件句柄 - [i] XGeometry * obj: 几何对象 - [i] bool bSave: 是否保存 *return value: 无 {{anchor:attachitem}} **void attachItem(XItem * obj, const XItem * ref)** *function: 基类函数的重新实现,建立模型内几何对象与关联对象的从属关系 *parameters: - [i]XItem * obj: 主对象 - [i] const XItem * ref: 从对象 *return value: 无 {{anchor:detachitem}} **void detachItem(XItem * obj, const XItem * ref)** *function: 基类函数的重新实现,解除模型内几何对象与关联对象的从属关系 *parameters: - [i]XItem * obj: 主对象 - [i] const XItem * ref: 从对象 *return value: 无 {{anchor:linkgeomelems}} **void linkGeomElems()** *function: 建立模型内几何对象与单元对象的从属关系 *parameters: NULL *return value: 无 ---- {{anchor:removeprevnext}} **void removePrevNext(XItem * item)** *function: *parameters: - [i]XItem * item: *return value: