C3D Solver 2022 . , , , . , C# . .
Solver 2D.
, , . , d .
:
- ;
- ;
- ;
- ;
- , , , .
, , , : , , , .
API C3D Solver. , ().
// geom_item GCE_AddOffsetCurve( GCE_system, geom_item curve, double offset );
, . . .
// geom_item GCE_FixOffset( GCE_system, geom_item curve );
.
// geom_item GCE_AddEqualOffset( GCE_system, geom_item curve1, geom_item curve2 );
(++), :
// auto solver = GCE_CreateSystem(); // GCE_point p_ GCE_point p_; p_.x = 1.; p_.y = 0.; auto p1 = GCE_AddPoint(solver, p_); p_.x = 3.; p_.y = 0.; auto p2 = GCE_AddPoint(solver, p_); geom_item pnts[] = { p1, p2 }; // auto lseg = GCE_AddLineSeg(solver, pnts); // 1- auto offsetLSeg1 = GCE_AddOffsetCurve(solver, lseg, 5.); // 2- auto offsetLSeg2 = GCE_AddOffsetCurve(solver, lseg, -4.); // 1- p1 auto offsetPoint1 = GCE_AddOffsetCurve(solver, GCE_PointOf(solver, lseg, GCE_FIRST_END), 4.5); // 2- p2 auto offsetPoint2 = GCE_AddOffsetCurve(solver, GCE_PointOf(solver, lseg, GCE_SECOND_END), 5.5); // GCE_AddEqualOffset(solver, offsetLSeg1, offsetPoint2); GCE_AddEqualOffset(solver, offsetPoint2, offsetLSeg2); GCE_AddEqualOffset(solver, offsetLSeg2, offsetPoint1); // 1- GCE_FixOffset(solver, offsetLSeg1); // GCE_Evaluate(solver); GCE_GetCoordValue(solver, offsetLSeg1, GCE_OFFSET); // GCE_RemoveSystem(solver);
, , , , , .
Solver 3D.
( ). , .
, . , , . , , .
API . GCM_constraint GCM_AddDistance(...) .
// GCM_constraint GCM_AddDistance( GCM_system, GCM_geom g1, GCM_geom g2, const GCM_interval &, GCM_alignment );
, GCM_interval , .
// struct GCM_interval { double lBnd, rBnd; };
(++), :
// auto solver = GCM_CreateSystem(); // 1 auto box1 = GCM_AddGeom(solver, GCM_SolidLCS(MbCartPoint3D::origin, MbVector3D::zAxis, MbVector3D::xAxis)); auto box1XY = GCM_SubGeom(solver, box1, GCM_Plane(MbCartPoint3D::origin, MbVector3D::zAxis)); // 2 auto box2 = GCM_AddGeom(solver, GCM_SolidLCS(MbCartPoint3D::origin, MbVector3D::zAxis, MbVector3D::xAxis)); auto box2XY = GCM_SubGeom(solver, box2, GCM_Plane(MbCartPoint3D::origin, MbVector3D::zAxis)); // GCM_interval interval{ 1.5, 7.5 }; // auto itrvlDist = GCM_AddDistance(solver, box1XY, box2XY, interval); // auto result = GCM_Evaluate(solver); // GCM_RemoveSystem(solver);
. .