8.8.3.38 IfcTriangulatedFaceSet

Ensemble de faces triangulées
tesselliertes Element aus Dreiecksflächen

The IfcTriangulatedFaceSet is a tessellated face set with all faces being bound by triangles. The faces are constructed by implicit polylines defined by three Cartesian points. The coordinates of each point are provided by an index into an ordered list of Cartesian points provided by the two-dimensional list CoordIndex, where

Optional the normals at each vertex, being perpendicular to the face for that triangle, can be provided by the two-dimensional list NormalIndex, where

Figure 309 shows the use of IfcTriangulatedFaceSet without annotation. The diagram of the IfcTriangulatedFaceSet represents the indices and the ordered list into which the indices point. The index starts with 1 (indexed as 1 to N), if the greatest index in CoordIndex in N, then the IfcCartesianPointList shall have N lists of 3:3 coordinates.

Figure 310 shows an IfcTriangulatedFaceSet represented by
CoordIndex: ((1,6,5), (1,2,6), (6,2,7), (7,2,3), (7,8,6), (6,8,5), (5,8,1), (1,8,4), (4,2,1), (2,4,3), (4,8,7), (7,3,4))
IfcCartesianPointList: ((0.,0.,0.), (1.,0.,0.), (1.,1.,0.), (0.,1.,0.), (0.,0.,2.), (1.,0.,2.), (1.,1.,2.), (0.,1.,2.))

IfcTriangulatedFaceSet_01
IfcTriangulatedFaceSet_Example-01

Figure 309 — Triangulated face set

Figure 310 — Triangulated face set geometry

NOTE  The definition of IfcTriangulatedFaceSet is based on the indexedFaceSet, and indexedTriangleSet defined in ISO/IEC 19775-1
HISTORY  New entity in IFC4.

XSD Specification:

 <xs:element name="IfcTriangulatedFaceSet" type="ifc:IfcTriangulatedFaceSet" substitutionGroup="ifc:IfcTessellatedFaceSet" nillable="true"/>
 <xs:complexType name="IfcTriangulatedFaceSet">
  <xs:complexContent>
   <xs:extension base="ifc:IfcTessellatedFaceSet">
    <xs:attribute name="CoordIndex" use="optional">
     <xs:simpleType>
      <xs:restriction>
       <xs:simpleType>
        <xs:list itemType="xs:long"/>
       </xs:simpleType>
       <xs:minLength value="3"/>
      </xs:restriction>
     </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="NormalIndex" use="optional">
     <xs:simpleType>
      <xs:restriction>
       <xs:simpleType>
        <xs:list itemType="xs:long"/>
       </xs:simpleType>
       <xs:minLength value="3"/>
      </xs:restriction>
     </xs:simpleType>
    </xs:attribute>
   </xs:extension>
  </xs:complexContent>
 </xs:complexType>

EXPRESS Specification:

ENTITY IfcTriangulatedFaceSet
SUBTYPE OF IfcTessellatedFaceSet;
CoordIndex : LIST [1:?] OF LIST [3:3] OF INTEGER;
NormalIndex : OPTIONAL LIST [1:?] OF LIST [3:3] OF INTEGER;
DERIVE
NumberOfTriangles : INTEGER := SIZEOF(CoordIndex);
END_ENTITY;

Link to EXPRESS-G diagram EXPRESS-G diagram

Attribute Definitions:

CoordIndex : Two-dimensional list, where the first dimension represents the triangles (from 1 to N) and the second dimension the indices to three points defining the vertices (from 1 to 3).
NOTE  The coordinates of the vertices are provided by the indexed list of SELF\IfcTessellatedFaceSet.Coordinates.CoordList.
NormalIndex : Two-dimensional list, where the first dimension represents the triangle (from 1 to N) and the second dimension the indices to three normals (from 1 to 3) corresponding to the vertices.
The directions of the normals are provided by the indexed list of SELF\IfcTessellatedFaceSet.Normals.DirectionList.
NumberOfTriangles : Derived number of triangles used for this triangulation.

Inheritance Graph:

ENTITY IfcTriangulatedFaceSet
ENTITY IfcRepresentationItem
INVERSE
LayerAssignment : SET [0:1] OF IfcPresentationLayerAssignment FOR AssignedItems;
StyledByItem : SET [0:1] OF IfcStyledItem FOR Item;
ENTITY IfcGeometricRepresentationItem
ENTITY IfcTessellatedItem
ENTITY IfcTessellatedFaceSet
Coordinates : IfcCartesianPointList3D;
Normals : OPTIONAL LIST [1:?] OF LIST [3:3] OF IfcParameterValue;
Closed : OPTIONAL BOOLEAN;
INVERSE
HasColours : SET [0:1] OF IfcIndexedColourMap FOR MappedTo;
HasTextures : SET [0:?] OF IfcIndexedTextureMap FOR MappedTo;
ENTITY IfcTriangulatedFaceSet
CoordIndex : LIST [1:?] OF LIST [3:3] OF INTEGER;
NormalIndex : OPTIONAL LIST [1:?] OF LIST [3:3] OF INTEGER;
DERIVE
NumberOfTriangles : INTEGER := SIZEOF(CoordIndex);
END_ENTITY;

Examples:

Link to this page  Link to this page