====== ElementManager ====== **//Inherited from//** [[class::domain::xmanager|XManager]], **//Inherited by//** NULL **//Friend class//** NULL **//Description//** ElementManager从XManager继承,是网格单元对象管理器,所有网格单元对象的创建、销毁、访问以及修改都通过调用它的通用接口完成。它的域识别码是Domain_Element,类型名是“DELEMENT”。 网格单元对象是模型对象的内部数据,它被模型对象管理,网格单元对象管理器是模型对象的成员之一,网格单元对象的ID只在模型对象内唯一。对于多个模型的场景,网格单元对象管理器也有多个,在模型初始化时网格单元对象管理器的句柄会被记录到数据操作记录器中以支持undo、redo机制。 **//Members//** * NodeManager * [[elementmanager#m_pnodemgr|m_pNodeMgr]] * XModel * [[elementmanager#m_pmdl|m_pMdl]] **//Public interface//** * [[elementmanager#elementmanager1|ElementManager]](XModel * mdl) * [[elementmanager#~elementmanager|~ElementManager]]() * void [[elementmanager#clear|clear]]() * ErrorCode [[elementmanager#read|read]](XBinaryIO * io) * void [[elementmanager#write|write]](XBinaryIO * io) * void [[elementmanager#write|write]](XH5IO * io, H5Obj * grp) * bool [[elementmanager#read|read]](XH5IO * io, H5Obj * grp) * void [[elementmanager#write|write]](XH5IO * io, H5Obj * grp, vector * elems) * void [[elementmanager#updatecache|updateCache]](XItem * obj, OpnType opn) * void [[elementmanager#serialize|serialize]](XBinaryIO * io, XItem * obj, bool bSave) * void [[elementmanager#setpolylinenodes|setPolylineNodes]](NodePtr * nodes, int cnt, XElement * el) * void [[elementmanager#setpolygonnodes|setPolygonNodes]](NodePtr * nodes, int cnt, XElement * el) * void [[elementmanager#addcellfacet|addCellFacet]](ElemPtr pFacet, XElement * cell) * void [[elementmanager#removecellfacet|removeCellFacet]](ElemPtr facet, XElement * cell) * void [[elementmanager#setcellfacets|setCellFacets]](ElemPtr * polys, int cnt, XElement * cell) * static const char * [[elementmanager#getelemtypestring|getElemTypeString]](TypeID eType) ---- {{anchor:m_pnodemgr}} **NodeManager * m_pNodeMgr** 节点对象管理器 {{anchor:m_pmdl}} **XModel * m_pMdl** 所属模型对象 ---- {{anchor:elementmanager1}} **ElementManager(XModel * mdl)** *function: 构造函数 *parameters: - [i]XModel * mdl: 所属模型对象 *return value: 无 {{anchor:~elementmanager}} **~ElementManager()** *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:write}} **void write(XH5IO * io, H5Obj * grp, vector * elems)** *function: 将一组单元对象数据写入到HDF5文件中 *parameters: - [i]XH5IO * io: HDF5文件句柄 - [i] H5Obj * grp: 对于的HDF5节点 - [i] vector * elems: 单元对象数组 *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:setpolylinenodes}} **void setPolylineNodes(NodePtr * nodes, int cnt, XElement * el)** *function: 设置多折线单元的节点数据 *parameters: - [i]NodePtr * nodes: 节点数组 - [i] int cnt: 节点个数 - [i] XElement * el: 多折线单元对象 *return value: 无 {{anchor:setpolygonnodes}} **void setPolygonNodes(NodePtr * nodes, int cnt, XElement * el)** *function: 设置多边形单元的节点数据 *parameters: - [i]NodePtr * nodes: 节点数组 - [i] int cnt: 节点个数 - [i] XElement * el: 多边形单元对象 *return value: 无 {{anchor:addcellfacet}} **void addCellFacet(ElemPtr pFacet, XElement * cell)** *function: 给Cell单元添加边界单元 *parameters: - [i]ElemPtr pFacet: 多边形边界单元或多折线边界单元(2维) - [i] XElement * cell: Cell单元 *return value: 无 {{anchor:removecellfacet}} **void removeCellFacet(ElemPtr facet, XElement * cell)** *function: 删除Cell单元的边界单元 *parameters: - [i]ElemPtr facet: 多边形边界单元或多折线边界单元(2维) - [i] XElement * cell: Cell单元 *return value: 无 {{anchor:setcellfacets}} **void setCellFacets(ElemPtr * polys, int cnt, XElement * cell)** *function: 设置Cell单元的边界 *parameters: - [i]ElemPtr * polys: 多边形边界单元数组或多折线边界单元数组(2维) - [i] int cnt: 边界个数 - [i] XElement * cell: Cell单元 *return value: 无 {{anchor:getelemtypestring}} **static const char * getElemTypeString(TypeID eType)** *function: 获取单元类型字符串 *parameters: - [i]TypeID eType: 单元类型 *return value: 单元类型字符串