8.20.3.13 IfcOrientedEdge(定向边)
8.20.3.13.1 语义定义(Semantic definition)
IfcOrientedEdge 表示带有方向标志的 IfcEdge。它允许在完全遍历两次(一次正向,一次反向)时重用相同的 IfcEdge。
注意:IfcFace 的法线方向完全由边决定。如果面的所有边按照边的方向以逆时针方式连接,则面的法线将指向外部。表示该面几何形状的基础 IfcFaceSurface 的法线与此无关。IfcFaceSurface.SameSense 属性的目的是为验证目的提供额外信息。SameSense 为 TRUE 表示表面法线和面法线相同,SameSense 为 FALSE 表示它们方向相反。
具有 IfcEdgeCurve 几何表示的重复使用边在 3D 坐标空间中定义边。在某些情况下,特别是在使用基本曲面或扫描曲面时,存在将 3D (x, y, z) IfcEdgeCurve 映射到相邻曲面以确定这些曲面边界时的不精确风险。可选的 CurveOnSurface 在曲面的参数空间内定义 2D (u, v) 边。它可用于确定 3D IfcEdgeCurve 映射到此曲面上的正确性。

注意:根据 ISO/CD 10303-42:1992 的定义 定向边是从另一条边构造的边,并包含一个布尔方向标志,以指示构造边的方向是否与原始边的方向一致。除了方向可能不同外,定向边等同于原始边。
实体建模系统中的常见做法是拥有一个表示边的"使用"或"遍历"的实体。这种"使用"实体明确表示在流形实体中每条边必须被精确遍历两次的要求,每个方向一次。"使用"功能由边子类型定向边提供。
注意:实体改编自 ISO 10303-42 中定义的 oriented_edge。
IFC4 Add2 变更:添加了 CurveOnSurface 属性。
8.20.3.13.2 实体继承(Entity inheritance)
8.20.3.13.3 特性(Attributes)
| # | 特性(Attributes) | 类型 | 描述 |
|---|---|---|---|
| IfcRepresentationItem (2) | |||
| LayerAssignment | SET [0:1] OF IfcPresentationLayerAssignment FOR AssignedItems |
将表示项分配给单个或多个层。LayerAssignments 可以覆盖其所在的 IfcRepresentation 的 Items 列表中的 LayerAssignments。 |
|
| StyledByItem | SET [0:1] OF IfcStyledItem FOR Item |
引用为表示提供表现信息的 IfcStyledItem,例如,为几何曲线提供曲线样式,包括颜色和厚度。 |
|
| IfcEdge (2) | |||
| 1 | EdgeStart | IfcVertex |
边的起点(顶点)。 |
| 2 | EdgeEnd | IfcVertex |
边的终点(顶点)。同一个顶点可以同时用于 EdgeStart 和 EdgeEnd。 |
| 点击显示 4 个隐藏的继承特性 点击隐藏 4 个继承特性 | |||
| IfcOrientedEdge (4) | |||
| 3 | EdgeElement | IfcEdge |
用于构造此定向边的边实体。 |
| 4 | Orientation | IfcBoolean |
布尔值,如果为 TRUE,则使用的拓扑方向与边元素从起始顶点到结束顶点的方向一致。如果为 FALSE,则相反。 |
| 1* | EdgeStart | IfcVertex |
此属性是形式化派生的
定向边的起始顶点。它在考虑方向后从边元素的顶点派生。 |
| 2* | EdgeEnd | IfcVertex |
此属性是形式化派生的
定向边的结束顶点。它在考虑方向后从边元素的顶点派生。 |
8.20.3.13.4 形式化命题(Formal propositions)
| 名称 | 描述 |
|---|---|
| EdgeElementNotOriented |
边元素不应是定向边。 |
|
|
8.20.3.13.5 形式化表示(Formal representation)
ENTITY IfcOrientedEdge
SUBTYPE OF (IfcEdge);
EdgeElement : IfcEdge;
Orientation : IfcBoolean;
DERIVE
SELF\IfcEdge.EdgeStart : IfcVertex := IfcBooleanChoose
(Orientation, EdgeElement.EdgeStart, EdgeElement.EdgeEnd);
SELF\IfcEdge.EdgeEnd : IfcVertex := IfcBooleanChoose
(Orientation, EdgeElement.EdgeEnd, EdgeElement.EdgeStart);
WHERE
EdgeElementNotOriented : NOT('IFC4X3_DEV_62887e3f.IFCORIENTEDEDGE' IN TYPEOF(EdgeElement));
END_ENTITY;