====== XGeometry ====== **//Inherited from//** [[class::domain::elementset|ElementSet]], **//Inherited by//** [[class::domain::xsolid|XSolid]],[[class::domain::xface|XFace]],[[class::domain::xedge|XEdge]],[[class::domain::xvertex|XVertex]] **//Friend class//** GeometryManager,PartManager,XManager, **//Description//** XGeometry封装了模型中的几何对象数据及其方法。由于几何特征形式多样而且可以自由组合,并且几何数据的来源多样,或者或包含Brep信息的CAD文件,或者为纯三角片数据文件,为了兼容各种形式的数据源,架构使用带有拓扑关系的离散结构表达,一方面可以表达包括点、线、面、体四种拓扑结构和零部件及装配关系,另一方面使用三角片、线段等简单统一的离散结构表达具体的几何细节,既可以做到拓扑保真,又具有灵活的形式,在一定的误差控制下,可以表达任何几何形状,因而自然的具有可扩展性。 XGeometry作为单元容器还保存下级子拓扑哈希表,这一设计使得程序可以高效的访问校验拓扑关系。 **//Members//** * RGBAColor [[xgeometry#m_color|m_Color]] * ulong [[xgeometry#m_ulflag|m_ulFlag]] * void * [[xgeometry#m_pextdata|m_pExtData]] * int [[xgeometry#m_irole|m_iRole]] * TypeID [[xgeometry#m_ifeaturetype|m_iFeatureType]] * TypeID [[xgeometry#m_iviewmode|m_iViewMode]] * XHash* [[xgeometry#m_pchildhash|m_pChildHash]] **//Public interface//** * [[xgeometry#xgeometry1|XGeometry]](ulong id,int tid = 0) * [[xgeometry#xgeometry2|XGeometry]](ulong size) * void [[xgeometry#setflag|setFlag]](ulong f) * ulong [[xgeometry#getflag|getFlag]]() const * XSolid * [[xgeometry#tosolid|toSolid]]() * XFace * [[xgeometry#toface|toFace]]() * XEdge * [[xgeometry#toedge|toEdge]]() * XVertex * [[xgeometry#tovertex|toVertex]]() * const XSolid * [[xgeometry#tosolid|toSolid]]() const * const XFace * [[xgeometry#toface|toFace]]()const * const XEdge * [[xgeometry#toedge|toEdge]]()const * const XVertex * [[xgeometry#tovertex|toVertex]]() const * bool [[xgeometry#isvisible|isVisible]]() const * void [[xgeometry#setvisible|setVisible]](bool b) * RGBAColor [[xgeometry#getcolor|getColor]]() const * void [[xgeometry#setcolor|setColor]](const RGBAColor c) * TypeID [[xgeometry#getviewmode|getViewMode]]() const * void [[xgeometry#setviewmode|setViewMode]](TypeID vmode) * TypeID [[xgeometry#getfeaturetype|getFeatureType]]() const * void [[xgeometry#setfeaturetype|setFeatureType]](TypeID t) * TypeID [[xgeometry#getrole|getRole]]() const * void [[xgeometry#setrole|setRole]](TypeID t) * virtual ulong [[xgeometry#getchildcount|getChildCount]]() const * virtual const XGeometry * [[xgeometry#getchildentity|getChildEntity]](ulong id)const * void [[xgeometry#bindchilditerator|bindChildIterator]](HashIterator * pIter)const * virtual int [[xgeometry#getuppercount|getUpperCount]]() const = 0 * virtual ulong [[xgeometry#getnodecount|getNodeCount]]() const * virtual void [[xgeometry#addupperentity|addUpperEntity]](const XGeometry * pGeom) = 0 * virtual void [[xgeometry#removeupperentity|removeUpperEntity]](const XGeometry * pGeom) = 0 * virtual void [[xgeometry#clear|clear]](ClearFlag f = Clear_All) = 0 * void [[xgeometry#write|write]](XBinaryIO * io)const * ErrorCode [[xgeometry#read|read]](GeometryManager * esmgr, XBinaryIO * io) * virtual [[xgeometry#~xgeometry|~XGeometry]]() * void [[xgeometry#bindextdata|bindExtData]](void * d) * void * [[xgeometry#getextdata|getExtData]]() const * void [[xgeometry#setpart|setPart]](const XPart * p) * const XPart * [[xgeometry#getpart|getPart]]() const **//Protected interface//** * virtual void [[xgeometry#attachchildentity|attachChildEntity]](const XGeometry * pEntity) * virtual void [[xgeometry#detachchildentity|detachChildEntity]](ulong id) ---- {{anchor:m_color}} **RGBAColor m_Color** 几何对象颜色 {{anchor:m_ulflag}} **ulong m_ulFlag** 几何对象临时标记 {{anchor:m_pextdata}} **void * m_pExtData** 几何对象临时扩展数据 {{anchor:m_irole}} **int m_iRole** 几何对象角色,普通角色、原始元素角色(比如中立面中使用)或者辅助角色 {{anchor:m_ifeaturetype}} **TypeID m_iFeatureType** 几何拓扑特征类型 {{anchor:m_iviewmode}} **TypeID m_iViewMode** 几何对象的视图模式 {{anchor:m_pchildhash}} **XHash* m_pChildHash** 子拓扑哈希表 ---- {{anchor:xgeometry1}} **XGeometry(ulong id,int tid = 0)** *function: 构造函数 *parameters: - [i]ulong id: 几何对象ID - [i]int tid = 0: 拓扑类型 *return value: 无 {{anchor:xgeometry2}} **XGeometry(ulong size)** *function: 构造函数 *parameters: - [i]ulong size: 子拓扑规模 *return value: 无 {{anchor:setflag}} **void setFlag(ulong f)** *function: 设置临时标记 *parameters: - [i]ulong f: 临时标记值 *return value: 无 {{anchor:getflag}} **ulong getFlag() const** *function: 获取临时标记值 *parameters: NULL *return value: 临时标记值 {{anchor:tosolid}} **XSolid * toSolid()** *function: 转换为实体拓扑对象 *parameters: NULL *return value: 实体拓扑对象指针(可修改) {{anchor:toface}} **XFace * toFace()** *function: 转换为面拓扑对象 *parameters: NULL *return value: 面拓扑对象指针(可修改) {{anchor:toedge}} **XEdge * toEdge()** *function: 转换为边拓扑对象 *parameters: NULL *return value: 边拓扑对象指针(可修改) {{anchor:tovertex}} **XVertex * toVertex()** *function: 转换为顶点拓扑对象 *parameters: NULL *return value: 顶点拓扑对象指针(可修改) {{anchor:tosolid}} **const XSolid * toSolid() const** *function: 转换为实体拓扑对象 *parameters: NULL *return value: 实体拓扑对象(不可修改) {{anchor:toface}} **const XFace * toFace()const** *function: 转换为面拓扑对象 *parameters: NULL *return value: 面拓扑对象(不可修改) {{anchor:toedge}} **const XEdge * toEdge()const** *function: 转换为边拓扑对象 *parameters: NULL *return value: 边拓扑对象(不可修改) {{anchor:tovertex}} **const XVertex * toVertex() const** *function: 转换为顶点拓扑对象 *parameters: NULL *return value: 顶点拓扑对象(不可修改) {{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:getcolor}} **RGBAColor getColor() const** *function: 获取几何对象颜色 *parameters: NULL *return value: 几何对象颜色 {{anchor:setcolor}} **void setColor(const RGBAColor c)** *function: 设置几何对象颜色 *parameters: - [i]const RGBAColor c: 几何对象颜色 *return value: 无 {{anchor:getviewmode}} **TypeID getViewMode() const** *function: 获取几何对象视图模式 *parameters: NULL *return value: 几何对象视图模式 {{anchor:setviewmode}} **void setViewMode(TypeID vmode)** *function: 设置几何对象视图模式 *parameters: - [i]TypeID vmode: 几何对象视图模式 *return value: 无 {{anchor:getfeaturetype}} **TypeID getFeatureType() const** *function: 获取几何对象拓扑特征类型 *parameters: NULL *return value: 几何对象拓扑特征类型 {{anchor:setfeaturetype}} **void setFeatureType(TypeID t)** *function: 设置几何对象拓扑特征类型 *parameters: - [i]TypeID t: 几何对象拓扑特征类型 *return value: 无 {{anchor:getrole}} **TypeID getRole() const** *function: 获取几何对象角色 *parameters: NULL *return value: 几何对象角色 {{anchor:setrole}} **void setRole(TypeID t)** *function: 设置几何对象角色 *parameters: - [i]TypeID t: 几何对象角色 *return value: 无 {{anchor:getchildcount}} **virtual ulong getChildCount() const** *function: 获取子拓扑个数 *parameters: NULL *return value: 子拓扑个数 {{anchor:getchildentity}} **virtual const XGeometry * getChildEntity(ulong id)const** *function: 获取子拓扑对象 *parameters: - [i]ulong id: 子拓扑对象ID *return value: 如存在指定ID的子拓扑对象,返回该对象指针,否则返回空 {{anchor:bindchilditerator}} **void bindChildIterator(HashIterator * pIter)const** *function: 绑定子拓扑对象访问迭代器 *parameters: - [i]HashIterator * pIter: 子拓扑对象访问迭代器 *return value: 无 {{anchor:getuppercount}} **virtual int getUpperCount() const = 0** *function: 获取父拓扑对象个数 *parameters: NULL *return value: 父拓扑对象个数 {{anchor:getnodecount}} **virtual ulong getNodeCount() const** *function: 获取几何对象的节点个数 *parameters: NULL *return value: 几何对象的节点个数 {{anchor:addupperentity}} **virtual void addUpperEntity(const XGeometry * pGeom) = 0** *function: 添加父拓扑对象 *parameters: - [i]const XGeometry * pGeom: 父拓扑对象 *return value: 无 {{anchor:removeupperentity}} **virtual void removeUpperEntity(const XGeometry * pGeom) = 0** *function: 删除父拓扑对象 *parameters: - [i]const XGeometry * pGeom: 父拓扑对象 *return value: 无 {{anchor:clear}} **virtual void clear(ClearFlag f = Clear_All) = 0** *function: 清空几何对象数据 *parameters: - [i]ClearFlag f = Clear_All: 清空标志 *return value: 无 {{anchor:write}} **void write(XBinaryIO * io)const** *function: 将几何对象写入到二进制文件中 *parameters: - [i]XBinaryIO * io: 二进制文件句柄 *return value: 无 {{anchor:read}} **ErrorCode read(GeometryManager * esmgr, XBinaryIO * io)** *function: 从二进制文件中读取几何对象数据 *parameters: - [i]GeometryManager * esmgr: 几何对象管理器 - [i] XBinaryIO * io: 二进制文件句柄 *return value: 成功读取返回Error_None,否则返回相应错误码 {{anchor:~xgeometry}} **virtual ~XGeometry()** *function: 析构函数 *parameters: NULL *return value: 无 {{anchor:bindextdata}} **void bindExtData(void * d)** *function: 设置扩展数据 *parameters: - [i]void * d: 扩展数据 *return value: 无 {{anchor:getextdata}} **void * getExtData() const** *function: 获取扩展数据 *parameters: NULL *return value: 扩展数据 {{anchor:setpart}} **void setPart(const XPart * p)** *function: 设置所属的部件 *parameters: - [i]const XPart * p: 部件对象 *return value: 无 {{anchor:getpart}} **const XPart * getPart() const** *function: 获取所属部件 *parameters: NULL *return value: 所属部件对象 ---- {{anchor:attachchildentity}} **virtual void attachChildEntity(const XGeometry * pEntity)** *function: 绑定拓扑从属关系 *parameters: - [i]const XGeometry * pEntity: 子拓扑对象 *return value: 无 {{anchor:detachchildentity}} **virtual void detachChildEntity(ulong id)** *function: 解除拓扑从属关系 *parameters: - [i]ulong id: 子拓扑对象ID *return value: 无