#ifndef _USE_MATH_DEFINES
#define _USE_MATH_DEFINES
#endif
#include <cadex/LicenseManager_Activate.h>
#include <cadex/ModelAlgo_TopoPrimitives.hxx>
#include <cadex/ModelAlgo_BRepFeatures.hxx>
#include <cadex/ModelCheck_BRepChecker.hxx>
#include <cadex/ModelData_Appearance.hxx>
#include <cadex/ModelData_Assembly.hxx>
#include <cadex/ModelData_Axis2Placement.hxx>
#include <cadex/ModelData_Axis3Placement.hxx>
#include <cadex/ModelData_BRepRepresentation.hxx>
#include <cadex/ModelData_Circle.hxx>
#include <cadex/ModelData_Color.hxx>
#include <cadex/ModelData_CylindricalSurface.hxx>
#include <cadex/ModelData_Direction.hxx>
#include <cadex/ModelData_Edge.hxx>
#include <cadex/ModelData_Face.hxx>
#include <cadex/ModelData_Instance.hxx>
#include <cadex/ModelData_Line.hxx>
#include <cadex/ModelData_ModelWriter.hxx>
#include <cadex/ModelData_Part.hxx>
#include <cadex/ModelData_Plane.hxx>
#include <cadex/ModelData_Point.hxx>
#include <cadex/ModelData_RectangularTrimmedSurface.hxx>
#include <cadex/ModelData_Shape.hxx>
#include <cadex/ModelData_Shell.hxx>
#include <cadex/ModelData_Solid.hxx>
#include <cadex/ModelData_Transformation.hxx>
#include <cadex/ModelData_Vector.hxx>
#include <cadex/ModelData_Vertex.hxx>
#include <cadex/ModelData_Wire.hxx>
#include <array>
#include <cmath>
#include <iostream>
#include "../../cadex_license.cxx"
YDir = ModelData_Direction::YDir(),
ZDir = ModelData_Direction::ZDir(),
{
aFace.Append (aWire);
return aFace;
}
{
aFace.Append (anInner);
aFace.Append (anOuter);
return aFace;
}
{
while (anIt.HasNext()) {
if (aP1 == aP2) {
array<double, 2> aParameters = {{0., M_PI * 2}};
enum {First, Last};
if (aP1.Z() == (theLength * theDir.Z())) {
theTopEdge = anEdge;
theTopPCurve = anEdge.
Curve (aParameters[First], aParameters[Last]);
} else {
theBottomEdge = anEdge;
theBottomPCurve = anEdge.
Curve (aParameters[First], aParameters[Last]);
}
};
}
return aFace;
}
{
double aNutA = theRadius * 2, aNutB = theRadius * 1.5, aHeight = theRadius / 2;
aFace.Append (ModelData_Wire::Cast (anInnerWire.Reversed()));
aBRep.SetAppearance (aNutShape, anApp);
return aNut;
}
{
double aMajorRadius = theRadius * 1.3;
double aLongLength = theRadius * 6;
double aShortLength = theRadius / 2;
ModelData_Edge aTopEdge, aMiddleOuterEdge, aMiddleInnerEdge, aBottomEdge;
ModelData_Curve aTopPCurve, aMiddleOuterPcurve, aMiddleInnerPCurve, aBottomPCurve;
aTopEdge, aMiddleOuterEdge,
aTopPCurve, aMiddleOuterPcurve);
aBottomEdge, aMiddleInnerEdge,
aBottomPCurve, aMiddleOuterPcurve);
ModelData_Edge::Cast (aMiddleInnerEdge.
Reversed()),
ModelData_Edge::Cast (aMiddleOuterEdge.
Reversed()));
cout << "a bolt is valid" << endl;
} else {
cout << "a bolt is invalid" << endl;
}
aBRep.SetAppearance (aSolid, anApp);
return aBolt;
}
aNutBoltAssembly.AddInstance (theNut, aNutTrsf);
aNutBoltAssembly.AddInstance (theBolt, aBoltTrsf);
return aNutBoltAssembly;
}
int main()
{
auto aKey = LicenseKey::Value();
if (!CADExLicense_Activate (aKey)) {
cerr << "Failed to activate CAD Exchanger license." << endl;
return 1;
}
double aRadius = 0.8;
array<ModelData_Vector, 3> aPos = {{
}};
ModelData_Assembly aNutBoltAssembly = CreateNutBoltAssembly (aNut, aBolt, -aRadius * 4.5);
for (size_t i = 0; i < aPos.size(); ++i) {
}
aWriter.
Write (aModel,
"assembly.xml");
return 0;
}