ifcopenshell.util.placement
#
Module Contents#
- ifcopenshell.util.placement.MatrixType#
- ifcopenshell.util.placement.a2p(o: Iterable[float], z: Iterable[float], x: Iterable[float]) MatrixType #
Converts a location, X, and Z axis vector to a 4x4 transformation matrix
IFC uses a right-handed coordinate system, so it is not necessary to provide the Y axis.
- Parameters
o (iterable[float]) – The origin (i.e. location) of the matrix
z (iterable[float]) – The +Z vector / axis of the matrix
x (iterable[float]) – The +X vector / axis of the matrix
- Returns
A 4x4 numpy matrix
- Return type
np.ndarray[np.ndarray[float]]
- ifcopenshell.util.placement.get_axis2placement(placement: ifcopenshell.entity_instance) MatrixType #
Parses an IfcAxis2Placement (2D or 3D) to a 4x4 transformation matrix
Note that this function only parses a single placement axis. If you want to get the placement of an element instead, element placements often are made out of multiple placement axes or other alternative placement methods. You should use
get_local_placement
instead.- Parameters
placement (ifcopenshell.entity_instance.entity_instance) – The IfcLocalPlacement enitity
- Returns
A 4x4 numpy matrix
- Return type
np.ndarray[np.ndarray[float]]
- ifcopenshell.util.placement.get_cartesiantransformationoperator3d(inst: ifcopenshell.entity_instance) MatrixType #
Parses an IfcCartesianTransformationOperator into a 4x4 transformation matrix
Note that in general you will not need to call this directly. See
get_mappeditem_transformation
instead.- Parameters
item (ifcopenshell.entity_instance.entity_instance) – The IfcCartesianTransformationOperator entity
- Returns
A 4x4 numpy transformation matrix
- Return type
np.ndarray[np.ndarray[float]]
- ifcopenshell.util.placement.get_local_placement(placement: ifcopenshell.entity_instance) MatrixType #
Parse a local placement into a 4x4 transformation matrix
This is typically used to find the location and rotation of an element. The transformation matrix takes the form of:
[ [ x_x, y_x, z_x, x ] [ x_y, y_y, z_y, y ] [ x_z, y_z, z_z, z ] [ 0.0, 0.0, 0.0, 1.0 ] ]
Example:
placement = file.by_type("IfcBeam")[0].ObjectPlacement matrix = ifcopenshell.util.placement.get_local_placement(placement)
- Parameters
placement (ifcopenshell.entity_instance.entity_instance) – The IfcLocalPlacement entity
- Returns
A 4x4 numpy matrix
- Return type
np.ndarray[np.ndarray[float]]
- ifcopenshell.util.placement.get_mappeditem_transformation(item: ifcopenshell.entity_instance) MatrixType #
Parse an IfcMappedItem into a 4x4 transformation matrix
Mapped items take a representation with an origin and transform them with a cartesian transformation operation. This function returns the final transformation matrix.
- Parameters
item (ifcopenshell.entity_instance.entity_instance) – The IfcMappedItem entity
- Returns
A 4x4 numpy transformation matrix
- Return type
np.ndarray[np.ndarray[float]]
- ifcopenshell.util.placement.get_storey_elevation(storey: ifcopenshell.entity_instance) float #
Get the Z elevation in project units of a buildling storey
Building storeys store elevation in two possible locations: the Z value of its placement, or as a fallback the
Elevation
attribute.- Parameters
storey (ifcopenshell.entity_instance.entity_instance) – The IfcBuildingStorey entity
- Returns
The elevation in project units
- Return type
float
- ifcopenshell.util.placement.rotation(angle: float, axis: Literal[X, Y, Z], is_degrees=True) MatrixType #
Create a 4x4 numpy matrix representing an euler rotation
- Parameters
angle (float) – The angle of rotation
axis (str) – The axis to rotate around, either X, Y, or Z.
is_degrees (bool) – Whether or not the angle is specified in degrees or radians. Defaults to true (i.e. degrees).
- Returns
A 4x4 numpy rotation matrix
- Return type
np.ndarray[np.ndarray[float]]