Log In   View a printable version of the current page.
Represent Composite Curve (FP)
Added by Janice Wix, last edited by Janice Wix on Feb 11, 2007  (view change)
Labels: 
(None)


Represent Composite Curve

Overview

Identifies the information requirements for the provision of a composite curve.
A composite curve is a collection of curves joined end-to-end. The individual segments of the curve are themselves defined as composite curve segments. Each segment may be any of the subtypes of IfcCurve defined within the IFC model.
The form of transition between the curve segments can be specified to determine the smoothing that should be applied within an application. The illustration below shows the allowed transitions.

Results

Specification of a composite curve with one or more segments each of which is itself a curve.

Description Entity/Pset/Functional Part MAN REC OPT
Determine each segment of the curve.
A segment is a curve that is a subtype of IfcCurve. A WHERE rule is applied that restricts composite curve segments to being subtypes of IfcBoundedCurve. Note that this can also include other composite curves.
For further information, refer to the functional parts describing representation of such curves namely:
  • fp_represent_polyline
  • fp_represent_trimmed_curve
  • fp_represent_b_spline_curve
IfcCompositeCurveSegment.ParentCurve::IfcCurve (subtypes)    
For each segment, identify whether the segment has the same sense (direction) as the parent curve.
The value is set to TRUE or FALSE.
Sense is used to organize overall direction of the composite curve so that segments join together end-start.
IfcCompositeCurveSegment.SameSense::BOOLEAN    
For each segment, set the state of the transition from the end point to the start of the next segment.
Allowed transitions are indicated in the overview diagram and have the following meanings:
  • Discontinuous: The segments do not join. This is permitted only at the boundary of the curve to indicate that it is not closed.
  • Continuous: The segments join but no condition on their tangents is implied.
  • ContSameGradient: The segments join and their tangent vectors or tangent planes are parallel and have the same direction at the joint: equality of derivatives is not required.
  • ContSameGradientSameCurvature: For a curve, the segments join, their tangent vectors are parallel and in the same direction and their curvatures are equal at the joint: equality of derivatives is not required.
IfcCompositeCurveSegment.Transition::IfcTransitionCode_    
The space dimensionality for each segment is derived from the space dimensionality of the parent curve IfcCompositeCurveSegment.Dim    
Assign the segments in an ordered sequence to the composite curve. IfcCompositeCurve.Segments    
Indicate whether the curve intersects itself or not.
Value is set to TRUE, FALSE or UNKNOWN
Note that presently, this is for information only.
IfcCompositeCurve.SelfIntersect::LOGICAL    
Derive the number of component segments in the composite curve. IfcCompositeCurve.NSegments::INTEGER    
Derive whether the composite curve is a closed curve from the transition code of the last segment in the sequence. IfcCompositeCurve.ClosedCurve::LOGICAL    
The space dimensionality for the composite curve is derived from its 2 or 3 dimensional context. IfcCompositeCurve.Dim    
Note that a composite curve that is defined in 2 dimensions may be specified as a 2 dimensional composite curve with a forced space dimensionality of 2.
In this case, use Ifc2dCompositeCurve in place of IfcCompositeCurve in the above.
     

IFC Entities Required

  • Ifc2dCompositeCurve
  • IfcBoundedCurve
  • IfcCompositeCurve
  • IfcCompositeCurveSegment
  • IfcCurve
  • IfcGeometricRepresentationItem
  • IfcRepresentationItem

IFC Datatypes Required

  • IfcDimensionCount
  • IfcTransitionCode

IFC Functions Required

  • -

IDM Functional Parts Required

  • -

EXPRESS-G

EXPRESS Schema

SCHEMA FP_REPRESENT_COMPOSITE_CURVE;

  TYPE IfcDimensionCount = INTEGER;
    WHERE
      WR1 : { 0 < SELF <= 3 };
  END_TYPE;

  TYPE IfcTransitionCode = ENUMERATION OF
    (DISCONTINUOUS,
     CONTINUOUS,
     CONTSAMEGRADIENT,
     CONTSAMEGRADIENTSAMECURVATURE);
  END_TYPE;

  ENTITY IfcGeometricRepresentationItem
    ABSTRACT SUPERTYPE OF (ONEOF(IfcCompositeCurveSegment, IfcCurve))
    SUBTYPE OF(IfcRepresentationItem);
  END_ENTITY;

  ENTITY IfcRepresentationItem
    ABSTRACT SUPERTYPE;
  END_ENTITY;

  ENTITY IfcCurve
    ABSTRACT SUPERTYPE
    SUBTYPE OF(IfcGeometricRepresentationItem);
    DERIVE
      Dim : IfcDimensionCount := IfcCurveDim(SELF);
  END_ENTITY;

  ENTITY IfcBoundedCurve
    ABSTRACT SUPERTYPE
    SUBTYPE OF(IfcCurve);
  END_ENTITY;

  ENTITY IfcCompositeCurve
    SUBTYPE OF(IfcBoundedCurve);
      Segments      : LIST [1:?] OF IfcCompositeCurveSegment;
      SelfIntersect : LOGICAL;
    DERIVE
      NSegments     : INTEGER := SIZEOF(Segments);
      ClosedCurve   : LOGICAL := Segments[NSegments].Transition <> Discontinuous;
    WHERE
      WR41 : ((NOT ClosedCurve) AND (SIZEOF(QUERY(Temp <* Segments | Temp.Transition = Discontinuous)) = 1)) OR ((ClosedCurve) 
AND (SIZEOF(QUERY(Temp <* Segments | Temp.Transition = Discontinuous)) = 0));
      WR42 : SIZEOF( QUERY( Temp <* Segments | Temp.Dim <> Segments[1].Dim)) = 0;
  END_ENTITY;

  ENTITY Ifc2dCompositeCurve
    SUBTYPE OF(IfcCompositeCurve);
    WHERE
      WR1 : SELF\IfcCompositeCurve.ClosedCurve;
      WR2 : SELF\IfcCurve.Dim = 2;
  END_ENTITY;

  ENTITY IfcCompositeCurveSegment
    SUBTYPE OF(IfcGeometricRepresentationItem);
      Transition  : IfcTransitionCode;
      SameSense   : BOOLEAN;
      ParentCurve : IfcCurve;
    DERIVE
      Dim         : IfcDimensionCount := ParentCurve.Dim;
    INVERSE
      UsingCurves : SET [1:?] OF IfcCompositeCurve FOR Segments;
    WHERE
      WR1 : ('IFC2X2_FINAL.IFCBOUNDEDCURVE' IN TYPEOF(ParentCurve));
  END_ENTITY;

END_SCHEMA;

Powered by Atlassian Confluence, the Enterprise Wiki. (Version: 2.1.3 Build:#408 Jan 23, 2006) - Bug/feature request - Contact Administrators