====== ElementSet ====== **//Inherited from//** [[class::domain::orderitem|OrderItem]], **//Inherited by//** [[class::domain::xgeometry|XGeometry]], **//Friend class//** GeometryManager, **//Description//** ElementSet封装了同属于一个几何对象的单元集合数据及其方法。由于几何特征形式多样而且可以自由组合,并且几何数据的来源多样,或者或包含Brep信息的CAD文件,或者为纯三角片数据文件,为了兼容各种形式的数据源,架构使用带有拓扑关系的离散结构表达,一方面可以表达包括点、线、面、体四种拓扑结构和零部件及装配关系,另一方面使用三角片、线段等简单统一的离散结构表达具体的几何细节,既可以做到拓扑保真,又具有灵活的形式,在一定的误差控制下,可以表达任何几何形状,因而自然的具有可扩展性。 ElementSet作为单元的容器提供了一系列简单方便的方法供开发者使用。它是所有几何拓扑对象的基类。 **//Members//** * OrderContainer [[elementset#m_elems|m_Elems]] **//Public interface//** * [[elementset#elementset1|ElementSet]](ulong id,int tid = DItem_[[elementset#elementset1|ElementSet]]) * void [[elementset#clear|clear]](ClearFlag f = Clear_All) * virtual void [[elementset#serialize|serialize]](XBinaryIO * io,bool bSave) * ulong [[elementset#getelementcount|getElementCount]]() const * void [[elementset#bindelementiterator|bindElementIterator]](ElemIterator * pIter)const * ElemIterator [[elementset#begin|begin]]() const * ElemIterator & [[elementset#end|end]]() const * const XElement * [[elementset#getfirstelement|getFirstElement]]() const * const XNode * [[elementset#getrandomnode|getRandomNode]]() const * virtual void [[elementset#write|write]](XBinaryIO * io)const * virtual ErrorCode [[elementset#read|read]](GeometryManager * esmgr,XBinaryIO * io) * virtual const XRenderData * [[elementset#getrenderdata|getRenderData]]() const * [[elementset#~elementset|~ElementSet]]() * int [[elementset#toelementarray|toElementArray]](vector * elVec) const * virtual void [[elementset#updateafterrenumber|updateAfterRenumber]](TypeID tid = DItem_Element) **//Protected interface//** * virtual void [[elementset#attach|attach]](XElement * pElement, ElementManager * elMgr) * virtual void [[elementset#detach|detach]](XElement * pElement, ElementManager * elMgr) ---- {{anchor:m_elems}} **OrderContainer m_Elems** 单元容器 ---- {{anchor:elementset1}} **ElementSet(ulong id,int tid = DItem_ElementSet)** *function: 构造函数 *parameters: - [i]ulong id: 对象ID - [i]int tid = DItem_[[elementset#elementset1|ElementSet]]: 拓扑类型 *return value: 无 {{anchor:clear}} **void clear(ClearFlag f = Clear_All)** *function: 清空对象 *parameters: - [i]ClearFlag f = Clear_All: 清空标志 *return value: 无 {{anchor:serialize}} **virtual void serialize(XBinaryIO * io,bool bSave)** *function: 在二进制文件中序列化对象 *parameters: - [i]XBinaryIO * io: 二进制文件句柄 - [i]bool bSave: 是否保存数据 *return value: 无 {{anchor:getelementcount}} **ulong getElementCount() const** *function: 获取单元个数 *parameters: NULL *return value: 单元个数 {{anchor:bindelementiterator}} **void bindElementIterator(ElemIterator * pIter)const** *function: 绑定单元遍历迭代器 *parameters: - [i]ElemIterator * pIter: 单元遍历迭代器 *return value: 无 {{anchor:begin}} **ElemIterator begin() const** *function: 参照标准库实现begin方法,用于开始遍历单元 *parameters: NULL *return value: 单元遍历迭代器的引用 {{anchor:end}} **ElemIterator & end() const** *function: 参照标准库实现end方法,用于判断单元遍历迭代器是否到达终点 *parameters: NULL *return value: 单元遍历迭代器的引用 {{anchor:getfirstelement}} **const XElement * getFirstElement() const** *function: 获取第一个单元对象 *parameters: NULL *return value: 第一个单元对象 {{anchor:getrandomnode}} **const XNode * getRandomNode() const** *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(GeometryManager * esmgr,XBinaryIO * io)** *function: 从二进制文件中读取几何对象数据 *parameters: - [i]GeometryManager * esmgr: 几何对象管理器 - [i]XBinaryIO * io: 二进制文件句柄 *return value: 成功读取返回Error_None,否则返回相应错误码 {{anchor:getrenderdata}} **virtual const XRenderData * getRenderData() const** *function: 虚函数接口,获取对象的视图数据 *parameters: NULL *return value: 对象的视图数据指针 {{anchor:~elementset}} **~ElementSet()** *function: 析构函数 *parameters: NULL *return value: 无 {{anchor:toelementarray}} **int toElementArray(vector * elVec) const** *function: 将单元集合转换为单元数组 *parameters: - [i]vector * elVec: 单元数组 *return value: 无 {{anchor:updateafterrenumber}} **virtual void updateAfterRenumber(TypeID tid = DItem_Element)** *function: 在对模型对象重编号之后调用,用以更新对重编号对象的引用 *parameters: - [i]TypeID tid = DItem_Element: 重编号的对象类型 *return value: 无 ---- {{anchor:attach}} **virtual void attach(XElement * pElement, ElementManager * elMgr)** *function: 绑定对象与单元的从属关系 *parameters: - [i]XElement * pElement: 单元对象 - [i] ElementManager * elMgr: 单元对象管理器 *return value: 无 {{anchor:detach}} **virtual void detach(XElement * pElement, ElementManager * elMgr)** *function: 解除对象与单元的从属关系 *parameters: - [i]XElement * pElement: 单元对象 - [i] ElementManager * elMgr: 单元对象管理器 *return value: 无