8.9.3.3 IfcAxis2Placement3D
8.9.3.3.1 Semantic definition
The IfcAxis2Placement3D provides location and orientations to place items in a three-dimensional space. The attribute Axis defines the Z direction, RefDirection the X direction. The Y direction is derived.
If the attribute values for Axis and RefDirection are not given, the placement defaults to P[1] (x-axis) as [1.,0.,0.], P[2] (y-axis) as [0.,1.,0.] and P[3] (z-axis) as [0.,0.,1.].

Figure 8.9.3.3.A illustrates the definition of the IfcAxis2Placement3D within the three-dimensional coordinate system.
8.9.3.3.2 Entity inheritance
- 
- IfcPlacement
 - IfcAnnotationFillArea
 - IfcBooleanResult
 - IfcBoundingBox
 - IfcCartesianPointList
 - IfcCartesianTransformationOperator
 - IfcCsgPrimitive3D
 - IfcCurve
 - IfcDirection
 - IfcFaceBasedSurfaceModel
 - IfcFillAreaStyleHatching
 - IfcFillAreaStyleTiles
 - IfcGeometricSet
 - IfcHalfSpaceSolid
 - IfcLightSource
 - IfcPlanarExtent
 - IfcPoint
 - IfcSectionedSpine
 - IfcSegment
 - IfcShellBasedSurfaceModel
 - IfcSolidModel
 - IfcSurface
 - IfcTessellatedItem
 - IfcTextLiteral
 - IfcVector
 
 
8.9.3.3.3 Attributes
| # | Attribute | Type | Description | 
|---|---|---|---|
| IfcRepresentationItem (2) | |||
| LayerAssignment | SET [0:1] OF IfcPresentationLayerAssignment FOR AssignedItems | 
 Assignment of the representation item to a single or multiple layer(s). The LayerAssignments can override a LayerAssignments of the IfcRepresentation it is used within the list of Items.  | 
|
| StyledByItem | SET [0:1] OF IfcStyledItem FOR Item | 
 Reference to the IfcStyledItem that provides presentation information to the representation, e.g. a curve style, including colour and thickness to a geometric curve.  | 
|
| IfcPlacement (2) | |||
| 1 | Location | IfcPoint | 
 The geometric position of a reference point, such as the center of a circle, of the item to be located.  | 
| * | Dim | IfcDimensionCount | 
 This attribute is formally derived. 
The space dimensionality of this class, derived from the dimensionality of the location.  | 
| Click to show 4 hidden inherited attributes Click to hide 4 inherited attributes | |||
| IfcAxis2Placement3D (3) | |||
| 2 | Axis | OPTIONAL IfcDirection | 
 The exact direction of the local Z Axis.  | 
| 3 | RefDirection | OPTIONAL IfcDirection | 
 The direction used to determine the direction of the local X Axis. If necessary an adjustment is made to maintain orthogonality to the Axis direction. If Axis and/or RefDirection is omitted, these directions are taken from the geometric coordinate system.  | 
| * | P | LIST [3:3] OF IfcDirection | 
 This attribute is formally derived. 
The normalized directions of the placement X Axis (P[1]) and the placement Y Axis (P[2]) and the placement Z Axis (P[3]).  | 
8.9.3.3.4 Formal propositions
| Name | Description | 
|---|---|
| AxisAndRefDirProvision | 
 Either both, Axis and RefDirection are not given and therefore defaulted, or both shall be given.  | 
 | 
|
| AxisIs3D | 
 The Axis when given should only reference a three-dimensional IfcDirection.  | 
 | 
|
| AxisToRefDirPosition | 
 The Axis and RefDirection shall not be parallel or anti-parallel.  | 
 | 
|
| LocationIs3D | 
 The dimensionality of the placement location shall be 3.  | 
 | 
|
| LocationIsCP | 
 No description available.  | 
 | 
|
| RefDirIs3D | 
 The RefDirection when given should only reference a three-dimensional IfcDirection.  | 
 | 
|
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_ADD2.IFCCARTESIANPOINT' IN TYPEOF(SELF\IfcPlacement.Location);
	RefDirIs3D : (NOT (EXISTS (RefDirection))) OR (RefDirection.Dim = 3);
END_ENTITY;