diff --git a/src/Mod/Sketcher/Gui/CommandCreateGeo.cpp b/src/Mod/Sketcher/Gui/CommandCreateGeo.cpp index 02e508e76..fa9679fe2 100644 --- a/src/Mod/Sketcher/Gui/CommandCreateGeo.cpp +++ b/src/Mod/Sketcher/Gui/CommandCreateGeo.cpp @@ -731,9 +731,8 @@ public: virtual void mouseMove(Base::Vector2D onSketchPos) { - setPositionText(onSketchPos); - if (Mode==STATUS_SEEK_First) { + setPositionText(onSketchPos); if (seekAutoConstraint(sugConstr1, onSketchPos, Base::Vector2D(0.f,0.f))) { renderSuggestConstraintsCursor(sugConstr1); return; @@ -750,6 +749,16 @@ public: EditCurve[17+i] = Base::Vector2D(EditCurve[0].fX - dx, EditCurve[0].fY - dy); } EditCurve[33] = EditCurve[1]; + + // Display radius and start angle + float radius = (onSketchPos - EditCurve[0]).Length(); + float angle = atan2f(dy_ , dx_) * 180 / M_PI; + + char buf[40]; + sprintf( buf, " (R%.1f,%.1f)", radius, angle); + std::string text = buf; + setPositionText(onSketchPos, text); + sketchgui->drawEdit(EditCurve); if (seekAutoConstraint(sugConstr2, onSketchPos, Base::Vector2D(0.f,0.f))) { renderSuggestConstraintsCursor(sugConstr2); @@ -767,6 +776,15 @@ public: float dy = rx * sin(angle) + ry * cos(angle); EditCurve[i] = Base::Vector2D(CenterPoint.fX + dx, CenterPoint.fY + dy); } + + // Display radius and end angle + float radius = (onSketchPos - EditCurve[0]).Length(); + + char buf[40]; + sprintf( buf, " (R%.1f,%.1f)", radius, arcAngle * 180 / M_PI); + std::string text = buf; + setPositionText(onSketchPos, text); + sketchgui->drawEdit(EditCurve); if (seekAutoConstraint(sugConstr3, onSketchPos, Base::Vector2D(0.f,0.f))) { renderSuggestConstraintsCursor(sugConstr3); @@ -950,8 +968,8 @@ public: virtual void mouseMove(Base::Vector2D onSketchPos) { - setPositionText(onSketchPos); if (Mode==STATUS_SEEK_First) { + setPositionText(onSketchPos); if (seekAutoConstraint(sugConstr1, onSketchPos, Base::Vector2D(0.f,0.f))) { renderSuggestConstraintsCursor(sugConstr1); return; @@ -968,6 +986,15 @@ public: EditCurve[17+i] = Base::Vector2D(EditCurve[0].fX - rx, EditCurve[0].fY - ry); } EditCurve[33] = EditCurve[1]; + + // Display radius for user + float radius = (onSketchPos - EditCurve[0]).Length(); + + char buf[40]; + sprintf( buf, "R%.1f", radius); + std::string text = buf; + setPositionText(onSketchPos, text); + sketchgui->drawEdit(EditCurve); if (seekAutoConstraint(sugConstr2, onSketchPos, Base::Vector2D(0.f,0.f), CURVE)) { renderSuggestConstraintsCursor(sugConstr2); diff --git a/src/Mod/Sketcher/Gui/DrawSketchHandler.cpp b/src/Mod/Sketcher/Gui/DrawSketchHandler.cpp index f75cc8329..06018b5ca 100644 --- a/src/Mod/Sketcher/Gui/DrawSketchHandler.cpp +++ b/src/Mod/Sketcher/Gui/DrawSketchHandler.cpp @@ -385,6 +385,12 @@ void DrawSketchHandler::renderSuggestConstraintsCursor(std::vectorsetPositionText(Pos, text); +} + + void DrawSketchHandler::setPositionText(const Base::Vector2D &Pos) { sketchgui->setPositionText(Pos); diff --git a/src/Mod/Sketcher/Gui/DrawSketchHandler.h b/src/Mod/Sketcher/Gui/DrawSketchHandler.h index f5ccfa975..68ba93d2a 100644 --- a/src/Mod/Sketcher/Gui/DrawSketchHandler.h +++ b/src/Mod/Sketcher/Gui/DrawSketchHandler.h @@ -87,6 +87,7 @@ public: void createAutoConstraints(const std::vector &autoConstrs, int geoId, Sketcher::PointPos pointPos=Sketcher::none); + void setPositionText(const Base::Vector2D &Pos, const std::string &text); void setPositionText(const Base::Vector2D &Pos); void resetPositionText(void); void renderSuggestConstraintsCursor(std::vector &suggestedConstraints); diff --git a/src/Mod/Sketcher/Gui/ViewProviderSketch.cpp b/src/Mod/Sketcher/Gui/ViewProviderSketch.cpp index 4b6cc1988..36c22a0db 100644 --- a/src/Mod/Sketcher/Gui/ViewProviderSketch.cpp +++ b/src/Mod/Sketcher/Gui/ViewProviderSketch.cpp @@ -3026,6 +3026,12 @@ void ViewProviderSketch::unsetEditViewer(Gui::View3DInventorViewer* viewer) static_cast(root)->selectionRole.setValue(TRUE); } +void ViewProviderSketch::setPositionText(const Base::Vector2D &Pos, const std::string &text) +{ + edit->textX->string = text.c_str(); + edit->textPos->translation = SbVec3f(Pos.fX,Pos.fY,zText); +} + void ViewProviderSketch::setPositionText(const Base::Vector2D &Pos) { char buf[40]; diff --git a/src/Mod/Sketcher/Gui/ViewProviderSketch.h b/src/Mod/Sketcher/Gui/ViewProviderSketch.h index 2c98d71eb..356d4414d 100644 --- a/src/Mod/Sketcher/Gui/ViewProviderSketch.h +++ b/src/Mod/Sketcher/Gui/ViewProviderSketch.h @@ -200,6 +200,7 @@ protected: /// build up the visual of the constraints void rebuildConstraintsVisual(void); + void setPositionText(const Base::Vector2D &Pos, const std::string &txt); void setPositionText(const Base::Vector2D &Pos); void resetPositionText(void);