CAD Exchanger SDK

Geometrical entities are used to define exact geometrical shape of the 3D objects.
Trimming (or bounding) of the 3D object is defined by the topological entities (see BRep Topology), whereas geometrical entities define underlying (sometimes unbounded) shape.
CAD Exchanger API follows the ISO 1030342 specification and allows to describe:
Curves can be defined in 3D model space or in 2D parametric space of a surface. Such curves are called parametric space curves or pcurves.
Geometrical objects are defined using parametric definitions:
Parametric ranges can be bounded or unbounded. For instance, lines or planes use unbounded range, while circles and Bezier use bounded ranges.
CAD Exchanger provides two hierarchy of classes  for 3D and 2D curves. The former derives from the ModelData_Curve class and the latter from the ModelData_Curve2d class.
CAD Exchanger supports the following curve types. The type of the curve is returned by ModelData_Curve::Type() (or ModelData_Curve2d::Type()) as ModelData_CurveType enumeration.
Type  C++ classes  Example 

Line  ModelData_Line, ModelData_Line2d  
Circle  ModelData_Circle, ModelData_Circle2d  
Ellipse  ModelData_Ellipse, ModelData_Ellipse2d  
Hyperbola  ModelData_Hyperbola, ModelData_Hyperbola2d  
Parabola  ModelData_Parabola, ModelData_Parabola2d  
Bezier curve  ModelData_BezierCurve, ModelData_BezierCurve2d  
BSpline curve  ModelData_BSplineCurve, ModelData_BSplineCurve2d  
Offset curve  ModelData_OffsetCurve, ModelData_OffsetCurve2d  
Trimmed curve  ModelData_TrimmedCurve, ModelData_TrimmedCurve2d 
Parametric range of the curve can be received using ModelData_Curve::UMin() and ModelData_Curve::UMax().
Points are evaluated using a parameter on the curve, as follows:
For periodic curves (ModelData_Curve::IsPeriodic() returns true), e.g. circles, points can be evaluation beyond the default parametric range.
CAD Exchanger supports the following surface types. The type of the surface is returned by ModelData_Surface::Type() as ModelData_SurfaceType enumeration.
Type  C++ class  Example 

Plane  ModelData_Plane  
Conical Surface  ModelData_ConicalSurface  
Cylindrical Surface  ModelData_CylindricalSurface  
Spherical Surface  ModelData_SphericalSurface  
Toroidal Surface  ModelData_ToroidalSurface  
Surface of Linear Extrusion  ModelData_SurfaceOfLinearExtrusion  
Surface of Revolution  ModelData_SurfaceOfRevolution  
Bezier Surface  ModelData_BezierSurface  
BSpline Surface  ModelData_BSplineSurface  
Offset Surface  ModelData_OffsetSurface  
Rectangular Trimmed Surface  ModelData_RectangularTrimmedSurface 
Parametric space of the surface can be received using ModelData_Surface::UMin(), UMax() and ModelData_Surface::VMin(), VMax().
Points are evaluated using a parameter on the surface, as follows:
For surfaces periodic in specified direction (ModelData_Surface::IsUPeriodic() or ModelData_Surface::IsVPeriodic() return true), e.g. cylindrical surfaces, points can be evaluation beyond the default parametric range in respective direction.
Refer to Model Explorer.