IfcRationalBSplineCurveWithKnots

带节有理B样条曲线是用控制点和基本函数描述的B样条曲线。它描述了除了在超类型ifcbsprinecurve中定义的控制点之外的权重。

所有权重应为正,曲线由以下公式给出:

 

where

k+1 number of control points
Pi control points
wi weights
d degree

 

 

 

 

 

注:实体改编自ISO 10303-42中的有理曲线。

IFC4中增加的新实体。

Formal Propositions

RuleDescription
SameNumOfWeightsAndPoints There shall be the same number of weights as control points.
WeightsGreaterZero All the weights shall have values greater than 0.0.
 

 

 

 

#AttributeTypeCardinalityDescriptionC
IfcRepresentationItem
  LayerAssignment IfcPresentationLayerAssignment
@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. X
  StyledByItem IfcStyledItem
@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. X
IfcGeometricRepresentationItem
IfcCurve
  Dim
:=IfcCurveDim(SELF)
IfcDimensionCount [1:1] The space dimensionality of this abstract class, defined differently for all subtypes, i.e. for IfcLine, IfcConic and IfcBoundedCurve. X
IfcBoundedCurve
IfcBSplineCurve
1 Degree IfcInteger [1:1] The algebraic degree of the basis functions. X
2 ControlPointsList IfcCartesianPoint L[2:?] The list of control points for the curve. X
3 CurveForm IfcBSplineCurveForm [1:1] Used to identify particular types of curve; it is for information only. X
4 ClosedCurve IfcLogical [1:1] Indication of whether the curve is closed; it is for information only. X
5 SelfIntersect IfcLogical [1:1] Indication whether the curve self-intersects or not; it is for information only. X
  UpperIndexOnControlPoints
:=(SIZEOF(ControlPointsList) - 1)
IfcInteger [1:1] The upper index on the array of control points; the lower index is 0. This value is derived from the control points list. X
  ControlPoints
:=IfcListToArray(ControlPointsList,0,UpperIndexOnControlPoints)
IfcCartesianPoint A[0:UpperIndexOnControlPoints] The array of control points used to define the geometry of the curve. This is derived from the list of control points. X
IfcBSplineCurveWithKnots
6 KnotMultiplicities IfcInteger L[2:?] The multiplicities of the knots. This list defines the number of times each knot in the knots list is to be repeated in constructing the knot array. X
7 Knots IfcParameterValue L[2:?] The list of distinct knots used to define the B-spline basis functions. X
8 KnotSpec IfcKnotType [1:1] The description of the knot type. This is for information only. X
  UpperIndexOnKnots
:=SIZEOF(Knots)
IfcInteger [1:1] The upper index on the knot arrays; the lower index is 1. X
IfcRationalBSplineCurveWithKnots
9 WeightsData IfcReal L[2:?] The supplied values of the weights. X
  Weights
:=IfcListToArray(WeightsData,0,SELF\IfcBSplineCurve.UpperIndexOnControlPoints)
IfcReal A[0:UpperIndexOnControlPoints] The array of weights associated with the control points. This is derived from the weights data. X
EXPRESS Specification
ENTITY IfcRationalBSplineCurveWithKnots
 SUBTYPE OF (IfcBSplineCurveWithKnots);
  WeightsData : LIST [2:?] OF IfcReal;
 DERIVE
  Weights : ARRAY [0:UpperIndexOnControlPoints] OF IfcReal := IfcListToArray(WeightsData,0,SELF\IfcBSplineCurve.UpperIndexOnControlPoints);
 WHERE
  SameNumOfWeightsAndPoints : SIZEOF(WeightsData) = SIZEOF(SELF\IfcBSplineCurve.ControlPointsList);
  WeightsGreaterZero : IfcCurveWeightsPositive(SELF);
END_ENTITY;

 

posted @ 2020-07-01 09:15  西北逍遥  阅读(204)  评论(0编辑  收藏  举报