IfcRationalBSplineSurfaceWithKnots

Natural language names
Rationale Bézier-Spline - Oberfläche mit Kontrollpunkten
Rational BSpline Surface With Knots
Surfaces Bsplines rationnelles avec nœuds
Change log
ItemSPFXMLChangeDescription
IFC2x3 to IFC4 4.0.0.0
    IfcRationalBSplineSurfaceWithKnotsADDED
IFC4 Addendum 1 4.0.1.0
    IfcRationalBSplineSurfaceWithKnots
      UDegreeMODIFIEDType changed from INTEGER to IfcInteger.
      VDegreeMODIFIEDType changed from INTEGER to IfcInteger.
      UClosedMODIFIEDType changed from LOGICAL to IfcLogical.
      VClosedMODIFIEDType changed from LOGICAL to IfcLogical.
      SelfIntersectMODIFIEDType changed from LOGICAL to IfcLogical.
      UMultiplicitiesMODIFIEDType changed from INTEGER to IfcInteger.
      VMultiplicitiesMODIFIEDType changed from INTEGER to IfcInteger.
      WeightsDataMODIFIEDType changed from REAL to IfcReal.
Semantic definitions at the entity
Entity definition

A rational B-spline surface with knots is a piecewise parametric rational surface described in terms of control points, and associated weight values.

The surface is to be interpreted as follows:

σformula

NOTE  Entity adapted from rational_b_spline_surface in ISO 10303-42.

HISTORY  New entity in IFC4.

Attribute definitions
#AttributeTypeCardinalityDescription G
13WeightsDataIfcRealL[2:?] L[2:?] The weights associated with the control points in the rational case. X
Weights
:=IfcMakeArrayOfArray(WeightsData,0,UUpper,0,VUpper)
IfcRealA[0:UUpper] A[0:VUpper]Array (two-dimensional) of weight values constructed from the WeightsData. X
Formal Propositions
RuleDescription
CorrespondingWeightsDataListsThe array dimensions for the weights shall be consistent with the control points data.
WeightValuesGreaterZeroThe weight value associated with each control point shall be greater than zero.
Inherited definitions from supertypes
Entity inheritance IfcBSplineSurfaceWithKnots IfcBSplineSurface IfcBoundedSurface IfcSurface IfcGeometricRepresentationItem IfcRepresentationItem
Attribute inheritance
#AttributeTypeCardinalityDescriptionG
IfcRepresentationItem
LayerAssignmentIfcPresentationLayerAssignment
@AssignedItems
S[0:1]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.
IFC2x3 CHANGE  The inverse attribute LayerAssignments has been added.
IFC4 CHANGE  The inverse attribute LayerAssignment has been restricted to max 1. Upward compatibility for file based exchange is guaranteed.
X
StyledByItemIfcStyledItem
@Item
S[0:1]Reference to the IfcStyledItem that provides presentation information to the representation, e.g. a curve style, including colour and thickness to a geometric curve.
IFC2x3 CHANGE  The inverse attribute StyledByItem has been added.
X
IfcGeometricRepresentationItem
IfcSurface
Dim
:=3
IfcDimensionCountThe space dimensionality of IfcSurface. It is always a three-dimensional geometric representation item.
IFC4 CHANGE Derived attribute promoted from subtypes.
X
IfcBoundedSurface
IfcBSplineSurface
1UDegreeIfcInteger Algebraic degree of basis functions in u. X
2VDegreeIfcInteger Algebraic degree of basis functions in v. X
3ControlPointsListIfcCartesianPointL[2:?] L[2:?] This is a list of lists of control points. X
4SurfaceFormIfcBSplineSurfaceForm Indicator of special surface types. X
5UClosedIfcLogical Indication of whether the surface is closed in the u direction; this is for information only. X
6VClosedIfcLogical Indication of whether the surface is closed in the v direction; this is for information only. X
7SelfIntersectIfcLogical Flag to indicate whether, or not, surface is self-intersecting; this is for information only. X
UUpper
:=SIZEOF(ControlPointsList) - 1
IfcIntegerUpper index on control points in u direction. X
VUpper
:=SIZEOF(ControlPointsList[1]) - 1
IfcIntegerUpper index on control points in v direction. X
ControlPoints
:=IfcMakeArrayOfArray(ControlPointsList, 0,UUpper,0,VUpper)
IfcCartesianPointA[0:UUpper] A[0:VUpper]Array (two-dimensional) of control points defining surface geometry. This array is constructed from the control points list. X
IfcBSplineSurfaceWithKnots
8UMultiplicitiesIfcIntegerL[2:?] The multiplicities of the knots in the u parameter direction. X
9VMultiplicitiesIfcIntegerL[2:?] The multiplicities of the knots in the v parameter direction. X
10UKnotsIfcParameterValueL[2:?] The list of the distinct knots in the u parameter direction. X
11VKnotsIfcParameterValueL[2:?] The list of the distinct knots in the v parameter direction. X
12KnotSpecIfcKnotType The description of the knot type. X
KnotVUpper
:=SIZEOF(VKnots)
IfcIntegerThe number of distinct knots in the v parameter direction. X
KnotUUpper
:=SIZEOF(UKnots)
IfcIntegerThe number of distinct knots in the u parameter direction. X
IfcRationalBSplineSurfaceWithKnots
13WeightsDataIfcRealL[2:?] L[2:?] The weights associated with the control points in the rational case. X
Weights
:=IfcMakeArrayOfArray(WeightsData,0,UUpper,0,VUpper)
IfcRealA[0:UUpper] A[0:VUpper]Array (two-dimensional) of weight values constructed from the WeightsData. X
Formal representations
XML Specification
 <xs:element name="IfcRationalBSplineSurfaceWithKnots" type="ifc:IfcRationalBSplineSurfaceWithKnots" substitutionGroup="ifc:IfcBSplineSurfaceWithKnots" nillable="true"/>
 <xs:complexType name="IfcRationalBSplineSurfaceWithKnots">
  <xs:complexContent>
   <xs:extension base="ifc:IfcBSplineSurfaceWithKnots">
    <xs:sequence>
     <xs:element name="WeightsData">
      <xs:complexType>
       <xs:sequence>
        <xs:element ref="ifc:IfcReal-wrapper" minOccurs="4" maxOccurs="unbounded"/>
       </xs:sequence>
       <xs:attribute ref="ifc:itemType" fixed="ifc:IfcReal-wrapper"/>
       <xs:attribute ref="ifc:cType" fixed="list list"/>
       <xs:attribute ref="ifc:arraySize" use="optional"/>
      </xs:complexType>
     </xs:element>
    </xs:sequence>
   </xs:extension>
  </xs:complexContent>
 </xs:complexType>
EXPRESS Specification
ENTITY IfcRationalBSplineSurfaceWithKnots
 SUBTYPE OF (IfcBSplineSurfaceWithKnots);
  WeightsData : LIST [2:?] OF LIST [2:?] OF IfcReal;
 DERIVE
  Weights : ARRAY [0:UUpper] OF ARRAY [0:VUpper] OF IfcReal := IfcMakeArrayOfArray(WeightsData,0,UUpper,0,VUpper);
 WHERE
  CorrespondingWeightsDataLists : (SIZEOF(WeightsData) = SIZEOF(SELF\IfcBSplineSurface.ControlPointsList))
AND
(SIZEOF(WeightsData[1]) = SIZEOF(SELF\IfcBSplineSurface.ControlPointsList[1]));
  WeightValuesGreaterZero : IfcSurfaceWeightsPositive(SELF);
END_ENTITY;

Link to EXPRESS-G diagram EXPRESS-G diagram

Link to this page  Link to this page