Sketcher: modernize type checking
This commit is contained in:
@@ -117,8 +117,7 @@ public:
|
||||
if (SegmentMode == SEGMENT_MODE_Line) {
|
||||
switch (TransitionMode) {
|
||||
case TRANSITION_MODE_Free:
|
||||
if (geom->getTypeId()
|
||||
== Part::GeomArcOfCircle::getClassTypeId()) { // 3rd mode
|
||||
if (geom->is<Part::GeomArcOfCircle>()) { // 3rd mode
|
||||
SegmentMode = SEGMENT_MODE_Arc;
|
||||
TransitionMode = TRANSITION_MODE_Tangent;
|
||||
}
|
||||
@@ -127,7 +126,7 @@ public:
|
||||
}
|
||||
break;
|
||||
case TRANSITION_MODE_Perpendicular_L: // 2nd mode
|
||||
if (geom->getTypeId() == Part::GeomArcOfCircle::getClassTypeId()) {
|
||||
if (geom->is<Part::GeomArcOfCircle>()) {
|
||||
TransitionMode = TRANSITION_MODE_Free;
|
||||
}
|
||||
else {
|
||||
@@ -135,8 +134,7 @@ public:
|
||||
}
|
||||
break;
|
||||
case TRANSITION_MODE_Tangent:
|
||||
if (geom->getTypeId()
|
||||
== Part::GeomArcOfCircle::getClassTypeId()) { // 1st mode
|
||||
if (geom->is<Part::GeomArcOfCircle>()) { // 1st mode
|
||||
TransitionMode = TRANSITION_MODE_Perpendicular_L;
|
||||
}
|
||||
else { // 3rd mode
|
||||
@@ -159,7 +157,7 @@ public:
|
||||
break;
|
||||
default: // 6th mode (Perpendicular_R) + unexpected mode
|
||||
SegmentMode = SEGMENT_MODE_Line;
|
||||
if (geom->getTypeId() == Part::GeomArcOfCircle::getClassTypeId()) {
|
||||
if (geom->is<Part::GeomArcOfCircle>()) {
|
||||
TransitionMode = TRANSITION_MODE_Tangent;
|
||||
}
|
||||
else {
|
||||
@@ -342,15 +340,14 @@ public:
|
||||
if (sugConstr1[i].Type == Sketcher::Coincident) {
|
||||
const Part::Geometry* geom =
|
||||
sketchgui->getSketchObject()->getGeometry(sugConstr1[i].GeoId);
|
||||
if ((geom->getTypeId() == Part::GeomLineSegment::getClassTypeId()
|
||||
|| geom->getTypeId() == Part::GeomArcOfCircle::getClassTypeId())
|
||||
if ((geom->is<Part::GeomLineSegment>() || geom->is<Part::GeomArcOfCircle>())
|
||||
&& (sugConstr1[i].PosId == Sketcher::PointPos::start
|
||||
|| sugConstr1[i].PosId == Sketcher::PointPos::end)) {
|
||||
previousCurve = sugConstr1[i].GeoId;
|
||||
previousPosId = sugConstr1[i].PosId;
|
||||
updateTransitionData(previousCurve,
|
||||
previousPosId); // -> dirVec, EditCurve[0]
|
||||
if (geom->getTypeId() == Part::GeomArcOfCircle::getClassTypeId()) {
|
||||
if (geom->is<Part::GeomArcOfCircle>()) {
|
||||
TransitionMode = TRANSITION_MODE_Tangent;
|
||||
SnapMode = SNAP_MODE_Free;
|
||||
}
|
||||
@@ -785,7 +782,7 @@ protected:
|
||||
|
||||
// Use updated startPoint/endPoint as autoconstraints can modify the position
|
||||
const Part::Geometry* geom = sketchgui->getSketchObject()->getGeometry(GeoId);
|
||||
if (geom->getTypeId() == Part::GeomLineSegment::getClassTypeId()) {
|
||||
if (geom->is<Part::GeomLineSegment>()) {
|
||||
const Part::GeomLineSegment* lineSeg = static_cast<const Part::GeomLineSegment*>(geom);
|
||||
dirVec.Set(lineSeg->getEndPoint().x - lineSeg->getStartPoint().x,
|
||||
lineSeg->getEndPoint().y - lineSeg->getStartPoint().y,
|
||||
@@ -799,7 +796,7 @@ protected:
|
||||
EditCurve[0] = Base::Vector2d(lineSeg->getEndPoint().x, lineSeg->getEndPoint().y);
|
||||
}
|
||||
}
|
||||
else if (geom->getTypeId() == Part::GeomArcOfCircle::getClassTypeId()) {
|
||||
else if (geom->is<Part::GeomArcOfCircle>()) {
|
||||
const Part::GeomArcOfCircle* arcSeg = static_cast<const Part::GeomArcOfCircle*>(geom);
|
||||
if (PosId == Sketcher::PointPos::start) {
|
||||
EditCurve[0] = Base::Vector2d(arcSeg->getStartPoint(/*emulateCCW=*/true).x,
|
||||
|
||||
Reference in New Issue
Block a user