Refer to the B-Rep Geometry Creation Example.
edgeutil.hxx
#ifndef _EdgeUtil_HeaderFile
#define _EdgeUtil_HeaderFile
#ifndef _USE_MATH_DEFINES
#define _USE_MATH_DEFINES
#endif
#include <cadex/ModelData_Axis2Placement.hxx>
#include <cadex/ModelData_BezierCurve.hxx>
#include <cadex/ModelData_BSplineCurve.hxx>
#include <cadex/ModelData_Circle.hxx>
#include <cadex/ModelData_Curve.hxx>
#include <cadex/ModelData_Direction.hxx>
#include <cadex/ModelData_Edge.hxx>
#include <cadex/ModelData_Ellipse.hxx>
#include <cadex/ModelData_Hyperbola.hxx>
#include <cadex/ModelData_Line.hxx>
#include <cadex/ModelData_OffsetCurve.hxx>
#include <cadex/ModelData_Parabola.hxx>
#include <cadex/ModelData_Point.hxx>
#include <array>
#include <cmath>
{
}
{
}
{
}
{
}
{
}
{
}
{
array<ModelData_Point, 4> aPoles = {{
}};
}
{
const array<ModelData_Point, 5> aPoles = {{
}};
const array<double, 4> aKnots = {{
0., 0.25, 0.75, 1.,
}};
const array<int, 4> aMultiplicities = {{3, 1, 1, 3}};
int aDegree = 2;
aKnots.data(), static_cast<int> (aKnots.size()),
aMultiplicities.data(),
aDegree);
}
#endif
faceutil.hxx
#ifndef _FaceUtil_HeaderFile
#define _FaceUtil_HeaderFile
#ifndef _USE_MATH_DEFINES
#define _USE_MATH_DEFINES
#endif
#include <cadex/ModelData_Axis2Placement.hxx>
#include <cadex/ModelData_Axis3Placement.hxx>
#include <cadex/ModelData_BezierCurve.hxx>
#include <cadex/ModelData_BezierSurface.hxx>
#include <cadex/ModelData_BSplineSurface.hxx>
#include <cadex/ModelData_Circle.hxx>
#include <cadex/ModelData_ConicalSurface.hxx>
#include <cadex/ModelData_CylindricalSurface.hxx>
#include <cadex/ModelData_Direction.hxx>
#include <cadex/ModelData_Edge.hxx>
#include <cadex/ModelData_Face.hxx>
#include <cadex/ModelData_OffsetSurface.hxx>
#include <cadex/ModelData_Plane.hxx>
#include <cadex/ModelData_Point.hxx>
#include <cadex/ModelData_Shape.hxx>
#include <cadex/ModelData_SphericalSurface.hxx>
#include <cadex/ModelData_SurfaceOfLinearExtrusion.hxx>
#include <cadex/ModelData_SurfaceOfRevolution.hxx>
#include <cadex/ModelData_ToroidalSurface.hxx>
#include <cadex/ModelData_Wire.hxx>
#include <array>
#include <cmath>
{
}
{
}
{
}
{
}
{
}
{
array<ModelData_Point, 5> aPoles = {{
}};
}
{
array<ModelData_Point, 5> aPoles = {{
}};
}
{
array<ModelData_Point, 4> aPoles = {{
}};
}
{
array<ModelData_Point, 4> aPoles = {{
}};
}
{
array<ModelData_Point, 25> aPoles = {{
}};
int aUPoles = 5,
aVPoles = 5;
array<double, 4> aUKnots = {{0., 0.25, 0.75, 1.}},
aVKnots = {{0., 0.25, 0.75, 1.}};
array<int, 4> aUMultiplicities = {{3, 1, 1, 3}},
aVMultiplicities = {{3, 1, 1, 3}};
int aUDegree = 2;
int aVDegree = 2;
aUPoles, aVPoles,
aUKnots.data(), aVKnots.data(),
static_cast<int> (aUKnots.size()), static_cast<int> (aVKnots.size()),
aUMultiplicities.data(), aVMultiplicities.data(),
aUDegree, aVDegree);
}
{
anOuterWire.
Append (anOuterEdge);
anInnerWire.
Append (ModelData_Edge::Cast (anInnerEdge.Reversed()));
aFace.Append (anOuterWire);
aFace.Append (anInnerWire);
return aFace;
}
#endif
bodyutil.hxx
#ifndef _BodyUtil_HeaderFile
#define _BodyUtil_HeaderFile
#include <cadex/ModelAlgo_BRepFeatures.hxx>
#include <cadex/ModelAlgo_TopoPrimitives.hxx>
#include <cadex/ModelData_Axis2Placement.hxx>
#include <cadex/ModelData_Body.hxx>
#include <cadex/ModelData_Circle.hxx>
#include <cadex/ModelData_Direction.hxx>
#include <cadex/ModelData_Edge.hxx>
#include <cadex/ModelData_Face.hxx>
#include <cadex/ModelData_Line.hxx>
#include <cadex/ModelData_Plane.hxx>
#include <cadex/ModelData_Shell.hxx>
#include <cadex/ModelData_Solid.hxx>
#include <cadex/ModelData_Vertex.hxx>
#include <cadex/ModelData_Wire.hxx>
{
return aBody;
}
{
return aBody;
}
{
return aBody;
}
{
return aBody;
}
#endif
main.cxx
#include <cadex/Base_UTF16String.hxx>
#include <cadex/LicenseManager_Activate.h>
#include <cadex/ModelData_BRepRepresentation.hxx>
#include <cadex/ModelData_ModelWriter.hxx>
#include <cadex/ModelData_Part.hxx>
#include <cadex/ModelData_Shape.hxx>
#include <iostream>
#include "../../cadex_license.cxx"
#include "bodyutil.hxx"
#include "edgeutil.hxx"
#include "faceutil.hxx"
{
}
int main()
{
auto aKey = LicenseKey::Value();
if (!CADExLicense_Activate (aKey)) {
cerr << "Failed to activate CAD Exchanger license." << endl;
return 1;
}
SaveModel (aLine, "LineEdge");
SaveModel (aCircle, "CircleEdge");
SaveModel (anEllipse, "EllipseEdge");
SaveModel (aParabola, "ParabolaEdge");
SaveModel (aHyperbola, "HyperbolaEdge");
SaveModel (anEdgeFromOffsetCurve, "OffsetEdge");
SaveModel (aBezierEdge, "BezierEdge");
SaveModel (aBSplineEdge, "BSplineEdge");
SaveModel (aPlane, "PlaneFace");
SaveModel (aSphere, "SphereFace");
SaveModel (aCylinder, "CylinderFace");
SaveModel (aCone, "ConeFace");
SaveModel (aTorus, "TorusFace");
ModelData_Face aFaceFromLESurface = MakeFaceFromSurfaceOfLinearExtrusion();
SaveModel (aFaceFromLESurface, "LEFace");
ModelData_Face aFaceFromRevSurface = MakeFaceFromSurfaceOfRevolution();
SaveModel (aFaceFromRevSurface, "RevFace");
SaveModel (aFaceFromOffsetSurface, "OffsetFace");
SaveModel (aBezierFace, "BezierFace");
SaveModel (aBSplineFace, "BSplineFace");
SaveModel (aFace, "InnerWireFace");
SaveModel (aSolid, "SolidBody");
SaveModel (aSheet, "SheetBody");
SaveModel (aWireframe, "WireframeBody");
SaveModel (anAcorn, "AcornBody");
return 0;
}