IFC 4.3.2.20251031 (IFC4X3_ADD2) under development

8.9.3.3 IfcAxis2Placement3D(三维轴定位)

RV ⓘ
AbV ⓘ

8.9.3.3.1 语义定义(Semantic definition)

IfcAxis2Placement3D 提供了在三维空间中定位和定向项目的位置和方向。属性 Axis 定义了 Z 方向,RefDirection 定义了 X 方向。Y 方向是派生得出的。

如果未给出 AxisRefDirection 的属性值,则放置默认为 P[1](x 轴)为 [1.,0.,0.],P[2](y 轴)为 [0.,1.,0.],P[3](z 轴)为 [0.,0.,1.]。

axis2 placement 2D
图 8.9.3.3.A — 三维轴定位

图 8.9.3.3.A 说明了 IfcAxis2Placement3D 在三维坐标系中的定义。

8.9.3.3.2 实体继承(Entity inheritance)

8.9.3.3.3 特性(Attributes)

# 特性(Attributes) 类型 描述
IfcRepresentationItem (2)
LayerAssignment SET [0:1] OF IfcPresentationLayerAssignment FOR AssignedItems

将表示项分配给单个或多个层。LayerAssignments 可以覆盖其所在的 IfcRepresentationItems 列表中的 LayerAssignments

StyledByItem SET [0:1] OF IfcStyledItem FOR Item

引用为表示提供表现信息的 IfcStyledItem,例如,为几何曲线提供曲线样式,包括颜色和厚度。

IfcPlacement (2)
1 Location IfcPoint

参考点(如圆心)的几何位置,用于确定待定位项目的位置。

* Dim IfcDimensionCount

此属性是形式化派生的

Location.Dim

该类的空间维度,由位置坐标的维度推导得出。

点击显示 4 个隐藏的继承特性 点击隐藏 4 个继承特性
IfcAxis2Placement3D (3)
2 Axis OPTIONAL IfcDirection

局部 Z 轴的确切方向。

3 RefDirection OPTIONAL IfcDirection

用于确定局部 X 轴方向的方向。如有必要,会进行调整以保持与轴方向的正交性。如果省略了 Axis 和/或 RefDirection,则这些方向取自几何坐标系。

* P LIST [3:3] OF IfcDirection

此属性是形式化派生的

IfcBuildAxes(Axis, RefDirection)

放置 X 轴(P[1])、放置 Y 轴(P[2])和放置 Z 轴(P[3])的归一化方向。

表 8.9.3.3.B

8.9.3.3.4 形式化命题(Formal propositions)

名称 描述
AxisAndRefDirProvision

要么 AxisRefDirection 都未给出并因此默认为默认值,要么两者都应给出。

NOT ((EXISTS (Axis)) XOR (EXISTS (RefDirection)))
AxisIs3D

如果给出了 Axis,应仅引用三维 IfcDirection

(NOT (EXISTS (Axis))) OR (Axis.Dim = 3)
AxisToRefDirPosition

AxisRefDirection 不应平行或反平行。

(NOT (EXISTS (Axis))) OR (NOT (EXISTS (RefDirection))) OR (IfcCrossProduct(Axis,RefDirection).Magnitude > 0.0)
LocationIs3D

放置位置的维度应为 3。

SELF\IfcPlacement.Location.Dim = 3
LocationIsCP

无可用描述

'IFC4X3_DEV_62887e3f.IFCCARTESIANPOINT' IN TYPEOF(SELF\IfcPlacement.Location)
RefDirIs3D

如果给出了 RefDirection,应仅引用三维 IfcDirection

(NOT (EXISTS (RefDirection))) OR (RefDirection.Dim = 3)
表 8.9.3.3.C

8.9.3.3.5 形式化表示(Formal representation)

ENTITY IfcAxis2Placement3D
 SUBTYPE OF (IfcPlacement);
	Axis : OPTIONAL IfcDirection;
	RefDirection : OPTIONAL IfcDirection;
 DERIVE
	 P : LIST [3:3] OF IfcDirection := IfcBuildAxes(Axis, RefDirection);
 WHERE
	AxisAndRefDirProvision : NOT ((EXISTS (Axis)) XOR (EXISTS (RefDirection)));
	AxisIs3D : (NOT (EXISTS (Axis))) OR (Axis.Dim = 3);
	AxisToRefDirPosition : (NOT (EXISTS (Axis))) OR (NOT (EXISTS (RefDirection))) OR (IfcCrossProduct(Axis,RefDirection).Magnitude > 0.0);
	LocationIs3D : SELF\IfcPlacement.Location.Dim = 3;
	LocationIsCP : 'IFC4X3_DEV_62887e3f.IFCCARTESIANPOINT' IN TYPEOF(SELF\IfcPlacement.Location);
	RefDirIs3D : (NOT (EXISTS (RefDirection))) OR (RefDirection.Dim = 3);
END_ENTITY;