IfcTopologyResource(拓扑资源)

IfcTopologyResource(拓扑资源)

IfcTopologyResource定义用于拓扑表示的资源。此资源的主要应用是用于产品模型的形状或几何形式的边界表示。

ISO/IS 10303-42:1994中的定义经过了一个改编过程,其特点是:

①IFC命名惯例的改编(IFC前缀)

②ISO 10303实体的改编,其中使用了多重继承或非排他继承(即和或或或和或子类型约束)

③使用subtype和select pruning选择IR的子集

④在表示项中省略name属性

形状的拓扑表示是根据10303-42的调整定义的。类型、类和功能语义定义部分遵循工作草案的调整后的措辞,在每次引用时都会明确指出和引用。几何和拓扑表示的定义(摘自ISO/CD10303-42:1992)明确排除在本规范的版权范围之外。

有关正式ISO标准中定义的更多信息,请参考:ISO/IS 10303-42:1994,工业自动化系统和集成:产品数据表示和交换-第42部分:集成通用资源。几何和拓扑表示。正式标准可通过各个国家的标准发布机构获得。

以下内容在拓扑架构的范围内:

●基本拓扑实体顶点、边和面的定义,每个拓扑实体都有一个专门的子类型,使其分别与点、曲线或曲面的几何图形相关联;

●收集基本实体,形成路径、环和壳的拓扑结构和约束,确保这些结构的完整性;

●拓扑实体的方向。

Types
1 IfcShell (外壳)

Entities
1 IfcAdvancedFace (高级面部)
2 IfcClosedShell (封闭外壳)
3 IfcConnectedFaceSet (连接面集合)
4 IfcEdge (边缘)
5 IfcEdgeCurve (边缘曲线)
6 IfcEdgeLoop (循环边)
7 IfcFace (面)
8 IfcFaceBound (面边)
9 IfcFaceOuterBound (面外边界)
10 IfcFaceSurface (表面)
11 IfcLoop (循环)
12 IfcOpenShell (打开外壳)
13 IfcOrientedEdge (定向边缘)
14 IfcPath (路径)
15 IfcPolyLoop (多环)
16 IfcSubedge (副边缘)
17 IfcTopologicalRepresentationItem (拓扑表示项)
18 IfcVertex (顶点)
19 IfcVertexLoop (顶点循环)
20 IfcVertexPoint (顶点)

Functions
1 IfcBooleanChoose (布尔选择)
2 IfcLoopHeadToTail (环首到环未)
3 IfcPathHeadToTail (从头到尾)

 

类型
1 IfcShell

由不同种类的壳组成的一种类型。

该类型集合了具有shell特性的子类型,以供构建更复杂的模型时参考。壳是一个固定维度d=0;1;或2的连接对象,通常用于绑定区域。壳的域,如果存在的话,包括它的界和0≤Ξ<∞。

①维数为0的壳由一个顶点组成的图表示。顶点不应有任何相关的边。

②维数为1的壳由维数为1的连通图表示。

③维数为2的壳是通过沿边连接面来构造的拓扑实体。它的域,如果存在的话,是一个有边界的连通的、可定向的2-流形,即一个连通的、定向的、有限的、非自相交的曲面,它可以是封闭的或开放的。

EXPRESS Specification

 <xs:group name="IfcShell">
  <xs:choice>
   <xs:element ref="ifc:IfcClosedShell"/>
   <xs:element ref="ifc:IfcOpenShell"/>
  </xs:choice>
 </xs:group>

 

 

实体
1 IfcAdvancedFace

高级面是面曲面的特化,它必须满足使用特定拓扑和几何表示项定义面、边和顶点的要求。

IfcAdvancedFace仅限于:

①具有ifcelementarysface、IfcSweptSurface或ifcbplinesurface类型的面几何图形,

②有一个IfcFaceOuterBound作为面的边界,但闭合曲面除外,

③所有面都要用IfcEdgeLoop或IfcVertexLoop绑定,

④使所有边都具有边曲线几何体

⑤将边缘曲线几何图形限制为IfcLine、IfcConic、IfcPolyline或IfcBSplineCurve

2 IfcClosedShell

闭壳是维数为2的壳,通常用作R3中区域的边界。封闭壳没有边界,且具有非零的有限范围。如果壳有一个坐标空间R3的区域,它将该空间划分为两个连接区域,一个是有限的,另一个是无限的。在这种情况下,壳的拓扑正规被定义为从有限域指向无限域。

外壳由一组面表示。shell的域(如果存在)包含所有这些面及其边界。与外壳中的每个面关联的是一个逻辑值,该值指示面法线是与外壳法线一致(TRUE)还是相反(FALSE)。逻辑值可以直接作为有向面的布尔属性应用,如果外壳边界属性成员是没有方向属性的面,则默认为TRUE。

设计了闭壳的组合约束及其域的几何约束,以确保与闭壳相关联的任何域都是闭的、可定向的流形。闭壳的域,如果存在的话,是一个连通的、闭的、定向的2-流形。对于某些H≥0,它在拓扑上总是等价于H-折叠环面。数字H被称为壳的表面属。如果一个H类壳在坐标空间R3内有一个区域,那么它内部的空间有限区域在拓扑上等价于一个有H个隧道穿过的实心球。

Euler方程适用于B=0,因为在这种情况下没有孔。与开壳的情况一样,表面亏格H可能不是先验的,但应是一个大于等于0的整数。因此,成形良好的封闭壳的一个必要但不充分的条件是:

 

 非正式提议:

●每一条边应精确参照两次面环。

●每个定向边缘应是唯一的。

●任何边的参考面不得超过两个。

●壳的不同面不相交,但可能共享边或顶点。

●不同的边不相交,但可以共享顶点。

●每个面部参考应是唯一的。

●外壳的环不应是聚环和其他环类型的混合物。注意:这是给定的,因为只有poly循环被定义为面绑定定义。

●封闭外壳应为定向弧形连接的2-歧管。

●应满足欧拉方程。注:方程式见ISO 10303-42。

3 IfcConnectedFaceSet

4 IfcEdge

IfcEdge定义了拓扑上连接的两个顶点。如果未使用IfcEdgeCurve子类型指定曲线几何体,则两个顶点之间连接的几何表示默认为直线。因此,IfcEdge可用于交换直边,而不需要IfcLine或IfcPolyline think IfcEdgeCurve.edgeometry提供的相关几何图形。

 

边是对应于两个顶点连接的拓扑结构。更抽象地说,它可能代表两个顶点之间的逻辑关系。边的域,如果存在的话,是RM中一条有限的、非自相交的开放曲线,即一个连通的一维流形。一条边的边界是两个顶点,这两个顶点不必是不同的。通过选择从第一个顶点到第二个顶点的遍历方向来确定边的方向。如果两个顶点相同,则边是自循环。边缘的域不包括其边界,且0≤Ξ≤∞。与边关联的可以是几何曲线,用于在坐标空间中定位边;这由“边曲线”子类型表示。曲线应是有限的,且在边缘区域内不自交。边是图,因此其多重性M和图属Ge可以由图遍历算法确定。由于M=E=1,欧拉方程(1)在这种情况下减少为:

 

where V = 1 or 2, and Ge = 1 or 0. Specifically, the topological edge defining data shall satisfy:

    • an edge has two vertices 
    • the vertices need not be distinct 
    • Equation shall hold 

5 IfcEdgeCurve

IfcEdgeCurve定义了拓扑上连接的两个顶点,包括连接的几何表示。

 

边曲线是边的一种特殊子类型,它的几何结构已完全定义。几何体是通过将边与可能是无限的曲线关联来定义的。由于拓扑方向和几何方向可能是相反的,因此使用指示器(同样的意义)来识别边缘和曲线方向是一致的还是相反的。布尔值指示曲线方向是与边方向一致(TRUE)还是与边方向相反(FALSE)。与边缘顶点相关的任何几何图形应与边缘几何图形一致。多条边可以引用同一条曲线。

非正式提议:

●边缘曲线的域被正式定义为由顶点修剪的边缘几何体的域。此域不包括顶点。

●边曲线具有非零的有限范围。

●边曲线是流形。

●边缘曲线呈弧形连接。

●边缘开始不是边缘域的一部分。

●边缘端不是边缘域的一部分。

●顶点几何应与边缘几何一致。

6 IfcEdgeLoop

边循环是具有非零范围的循环。这是一条起点和终点相同的路径。它的域(如果存在)是一条闭合曲线。一个边环可以重叠自身。

非正式提议:

●IfcEdgeLoop的属应为1或更大。

欧拉公式应满足:

(顶点数)+空格(边数)=1;

●同一个IfcEdgeLoop不能多次引用具有相同意义的边。为此,非定向边的边被视为具有真意义的引用。

7 IfcFace

面是一个维度为2的拓扑实体,对应于一个由回路包围的曲面的直观概念。它的域,如果存在的话,是Rm中一个定向的,连通的,有限的2-流形。面域不应具有句柄,但它可以具有孔,每个孔由一个环限定。面的基本几何体的域(如果存在)不包含其边界,且0<Ξ<∞。

面由其边界循环表示,边界循环被定义为面边界。面具有拓扑法向n,且与回路的切线为t。对于用定义的几何图形包围面的回路,叉积nxt指向面的内部。也就是说,如果我们把正常的n看作指向上的话,从上面看,每个循环都逆时针绕着面运行。每个循环都关联一个布尔标志,表示循环方向是相对于面法线(TRUE)定向还是应该反转(FALSE)。

面应至少有一个边界,且环不得相交。一个环可以选择性地区分为面的外环。如果是这样,它建立了一种在平面中嵌入面域的优选方法,其中面的其他边界环位于外部边界内。因为面域是弧形连接的,所以没有内部循环包含任何其他循环。这是正确的,无论选择在平面中嵌入哪个。

面的循环所引用的边和顶点形成一个图,其中各个循环是连接的组件。此图的欧拉方程(1)变为:

8 IfcFaceBound

面绑定是用于绑定面的循环。

9 IfcFaceOuterBound

面外边界是面边界的一种特殊子类型,它承载着在面上定义外边界的附加语义。一个面的边界不得超过一个。

10 IfcFaceSurface

面曲面是由关联曲面定义几何图形的面的子类型。表面使用的部分应嵌入平面中,作为一个开口圆盘,可能有孔。但是,面与其边界循环的边和顶点的并集不必嵌入到平面中。例如,它可以覆盖整个球体或圆环。由于面和几何曲面都定义了法线方向,因此使用布尔标志(方向属性)指示曲面法线是与面法线方向一致(TRUE)还是相反(FALSE)。与面环的任何组成部分相关联的几何图形应与表面几何图形一致,即所有顶点和边缘曲线的域都包含在面几何图形表面中。一个曲面可以被多个面曲面引用。

非正式提议:

●面曲面的域被形式化地定义为由环修剪的面几何的域,该域不包括边界环。

●面具有非零的有限范围。

●面是流形。

●一个面是弧形连接的。

●一个面具有面属0。

●循环不是面域的一部分。

●回路几何形状应与面几何形状一致。这意味着用于定义包围面表面的循环的任何边-曲线或顶点应位于面几何体上。

●面环不得相交。

11 IfcLoop

回路是由单个顶点构造的拓扑实体,或通过将连接(定向)边或从同一顶点开始到结束的直线段串接在一起而构造的拓扑实体。它通常用于将面固定在表面上。循环的维数为0或1。0维环的域是一个点。一维环的域是一条连通的有向曲线,但不必是流形。由于循环是一个圆,其起点/终点的位置是任意的。环的域包括其界,即0≤Ξ<∞。循环由单个顶点、定向边的有序集合或点的有序集合表示。循环是图,因此M和图属Gl可以由图遍历算法确定。由于M=1,在这种情况下,欧拉方程(1)减少到

 

其中V和El是循环中唯一顶点和定向边的数目,Gl是循环的属。

非正式提议:

●循环的范围是有限的。

●循环描述具有重合的起点和终点的闭合(拓扑)曲线。


12 IfcOpenShell

开壳是维数为2的壳。它的域,如果存在的话,是一个有限的,连通的,定向的,有边界的2-流形,但不是一个闭曲面。它可以被认为是一个封闭的壳,里面有一个或多个孔。开壳层的畴满足0<1。一个开放的shell在功能上比一个face更通用,因为它的域可以有句柄。

外壳由一组面定义,这些面可以是定向面。考虑到方向后,每个面的感觉应与下面定义的壳体法向一致。方向可以直接作为面向面的布尔属性提供,如果外壳成员是没有方向属性的面,则默认为TRUE。

为了保证与开壳相关联的任何域都是可定向流形,本文设计了开壳上的组合约束和开壳域上的几何约束,并给出了相应的非正式命题。

每个面部参考应是唯一的。

打开的外壳至少应有一个面。

给定的面可能存在于一个以上的开放壳中。

开放壳的边界由其面的面边界(循环)仅引用一次的边及其所有顶点组成。开壳的域,如果存在

非正式提议:

●每一条边应精确参照两次面边界。

●每个定向边缘应是唯一的。

●任何边的参考面不得超过两个。

●壳的不同面不相交,但可能共享边或顶点。

●不同的边不相交,但可以共享顶点。

●每个面部参考应是唯一的。

●外壳的环不应是聚环和其他环类型的混合物。注意:这是给定的,因为只有poly循环被定义为面绑定定义。

●封闭外壳应为定向弧形连接的2-歧管。

●应满足欧拉方程。

 

 

13 IfcOrientedEdge

有向边是从另一条边构造的边,它包含一个布尔方向标志,指示构造的边的方向是否与原始边的方向一致。除了可能的方向外,定向边与原始边等价。
14 IfcPath

路径是由有向边的有序集合组成的拓扑实体,使得每一条边的边起点顶点与其前一条边的边终点重合。路径是从第一条定向边的边开始到最后一条边的边结束的顺序。定向边中的布尔值表示边方向是与路径方向一致(TRUE)还是相反(FALSE)。

非正式提议:

●路径具有维度1。

●路径呈弧形连接。

●路径的边不相交,除非在公共顶点处。

●路径有一个有限的、非零的范围。


15 IfcPolyLoop

多边形环是在空间中具有直边包围平面区域的环。poly循环是属1的循环,其中循环由形成循环顶点的点的有序共面集合表示。循环由直线段组成,直线段将集合中的一个点连接到集合中的后续点。结束段是从集合中的最后一点到第一点。回路的方向与线段的方向一致。

A poly loop shall conform to the following topological constraints:

    • the loop has the genus of one.
    • the following equation shall be satisfied 


16 IfcSubedge

SubEGGE是一个边缘,其域是现有边缘域的连接部分。子边上的拓扑约束与边上的拓扑约束相同。
17 IfcTopologicalRepresentationItem

拓扑表示项是几何资源中所有拓扑表示项的超类型。
18 IfcVertex

顶点是与点相对应的拓扑结构。它有维度0和范围0。顶点的区域(如果存在的话)是m维实空间RM中的一个点;它由顶点点子类型表示。
19 IfcVertexLoop

顶点环是由单个顶点组成的零空格环。顶点可以独立于顶点环独立存在。拓扑数据应满足以下约束:
20 IfcVertexPoint

顶点是将其几何体定义为点的顶点。

函数
1 IfcBooleanChoose

此函数根据布尔输入参数的值返回两个选项之一。这两个选项也是输入参数。

FUNCTION IfcBooleanChoose
(B : BOOLEAN ;
     Choice1, Choice2 : Generic : Item) : Generic : Item;
  IF B THEN
     RETURN (Choice1);
  ELSE
     RETURN (Choice2);
  END_IF; 
END_FUNCTION;

 

2 IfcLoopHeadToTail

如果对于输入边循环的边,每条边的结束顶点与其后续边的开始顶点相同,则此函数返回TRUE。

FUNCTION IfcLoopHeadToTail
(ALoop : IfcEdgeLoop) : LOGICAL;
   LOCAL
     N : INTEGER;
     P : LOGICAL := TRUE;
   END_LOCAL;
     
     N := SIZEOF (ALoop.EdgeList);
     REPEAT i := 2 TO N;
       P := P AND (ALoop.EdgeList[i-1].EdgeEnd :=:
                   ALoop.EdgeList[i].EdgeStart);
     END_REPEAT;     
     RETURN (P); 
END_FUNCTION;

 

3 IfcPathHeadToTail

如果对于输入路径的边,每条边的终点与后续边的起点相同,则此函数返回TRUE。

FUNCTION IfcPathHeadToTail
(APath : IfcPath) : LOGICAL;
   LOCAL
     N : INTEGER := 0;
     P : LOGICAL := UNKNOWN;
   END_LOCAL;
     N := SIZEOF (APath.EdgeList);
   REPEAT i := 2 TO N;
      P := P AND (APath.EdgeList[i-1].EdgeEnd :=:
                  APath.EdgeList[i].EdgeStart);
   END_REPEAT;
   RETURN (P); 
END_FUNCTION;
posted @ 2020-01-22 09:58  西北逍遥  阅读(743)  评论(0编辑  收藏  举报