Sketcher: Arc to arc or circle distance constraint
This commit is contained in:
committed by
abdullahtahiriyo
parent
5ae3a5da9d
commit
838802e28d
@@ -410,16 +410,37 @@ double SketcherGui::GetPointAngle(const Base::Vector2d& p1, const Base::Vector2d
|
||||
|
||||
// Set the two points on circles at minimal distance
|
||||
// in concentric case set points on relative X axis
|
||||
void SketcherGui::GetCirclesMinimalDistance(const Part::GeomCircle* circle1,
|
||||
const Part::GeomCircle* circle2,
|
||||
void SketcherGui::GetCirclesMinimalDistance(const Part::Geometry* geom1,
|
||||
const Part::Geometry* geom2,
|
||||
Base::Vector3d& point1,
|
||||
Base::Vector3d& point2)
|
||||
{
|
||||
double radius1 = circle1->getRadius();
|
||||
double radius2 = circle2->getRadius();
|
||||
double radius1 = 0.0;
|
||||
double radius2 = 0.0;
|
||||
|
||||
point1 = circle1->getCenter();
|
||||
point2 = circle2->getCenter();
|
||||
if (geom1->is<Part::GeomCircle>()) {
|
||||
auto circle = static_cast<const Part::GeomCircle*>(geom1);
|
||||
radius1 = circle->getRadius();
|
||||
point1 = circle->getCenter();
|
||||
}
|
||||
else if (geom1->is<Part::GeomArcOfCircle>()) {
|
||||
auto arc = static_cast<const Part::GeomArcOfCircle*>(geom1);
|
||||
radius1 = arc->getRadius();
|
||||
point1 = arc->getCenter();
|
||||
}
|
||||
|
||||
if (geom2->is<Part::GeomCircle>()) {
|
||||
auto circle = static_cast<const Part::GeomCircle*>(geom2);
|
||||
radius2 = circle->getRadius();
|
||||
point2 = circle->getCenter();
|
||||
}
|
||||
else if (geom2->is<Part::GeomArcOfCircle>()) {
|
||||
auto arc = static_cast<const Part::GeomArcOfCircle*>(geom2);
|
||||
radius2 = arc->getRadius();
|
||||
point2 = arc->getCenter();
|
||||
}
|
||||
|
||||
assert(radius1 == 0 || radius2 == 0 /*Circles characteristics not available*/);
|
||||
|
||||
Base::Vector3d v = point2 - point1;
|
||||
double length = v.Length();
|
||||
|
||||
Reference in New Issue
Block a user