From c77b63d2bdce663ee40eddda33453120b7570bf2 Mon Sep 17 00:00:00 2001 From: donovaly Date: Sat, 21 Mar 2020 02:28:03 +0100 Subject: [PATCH] [TD] add property for section line style see https://forum.freecadweb.org/viewtopic.php?f=35&t=44320 --- src/Mod/TechDraw/Gui/QGISectionLine.cpp | 6 ++++++ src/Mod/TechDraw/Gui/QGISectionLine.h | 1 + src/Mod/TechDraw/Gui/QGIViewPart.cpp | 1 + src/Mod/TechDraw/Gui/ViewProviderViewPart.cpp | 12 ++++++++++++ src/Mod/TechDraw/Gui/ViewProviderViewPart.h | 3 +++ 5 files changed, 23 insertions(+) diff --git a/src/Mod/TechDraw/Gui/QGISectionLine.cpp b/src/Mod/TechDraw/Gui/QGISectionLine.cpp index 7cff57aa7d..04db4f6916 100644 --- a/src/Mod/TechDraw/Gui/QGISectionLine.cpp +++ b/src/Mod/TechDraw/Gui/QGISectionLine.cpp @@ -285,6 +285,12 @@ QColor QGISectionLine::getSectionColor() } //SectionLineStyle +void QGISectionLine::setSectionStyle(int style) +{ + Qt::PenStyle sectStyle = static_cast (style); + setStyle(sectStyle); +} + Qt::PenStyle QGISectionLine::getSectionStyle() { Base::Reference hGrp = App::GetApplication().GetUserParameter().GetGroup("BaseApp")-> diff --git a/src/Mod/TechDraw/Gui/QGISectionLine.h b/src/Mod/TechDraw/Gui/QGISectionLine.h index 2858505843..ff14e257d0 100644 --- a/src/Mod/TechDraw/Gui/QGISectionLine.h +++ b/src/Mod/TechDraw/Gui/QGISectionLine.h @@ -54,6 +54,7 @@ public: void setDirection(double xDir,double yDir); void setDirection(Base::Vector3d dir); void setFont(QFont f, double fsize); + void setSectionStyle(int style); virtual void draw(); protected: diff --git a/src/Mod/TechDraw/Gui/QGIViewPart.cpp b/src/Mod/TechDraw/Gui/QGIViewPart.cpp index e730986132..46b53832c5 100644 --- a/src/Mod/TechDraw/Gui/QGIViewPart.cpp +++ b/src/Mod/TechDraw/Gui/QGIViewPart.cpp @@ -848,6 +848,7 @@ void QGIViewPart::drawSectionLine(TechDraw::DrawViewSection* viewSection, bool b QGISectionLine* sectionLine = new QGISectionLine(); addToGroup(sectionLine); sectionLine->setSymbol(const_cast(viewSection->SectionSymbol.getValue())); + sectionLine->setSectionStyle(vp->SectionLineStyle.getValue()); //TODO: handle oblique section lines? //find smallest internal angle(normalDir,get?Dir()) and use -1*get?Dir() +/- angle diff --git a/src/Mod/TechDraw/Gui/ViewProviderViewPart.cpp b/src/Mod/TechDraw/Gui/ViewProviderViewPart.cpp index 84c4d4aaca..345c65b7c9 100644 --- a/src/Mod/TechDraw/Gui/ViewProviderViewPart.cpp +++ b/src/Mod/TechDraw/Gui/ViewProviderViewPart.cpp @@ -56,6 +56,14 @@ using namespace TechDrawGui; PROPERTY_SOURCE(TechDrawGui::ViewProviderViewPart, TechDrawGui::ViewProviderDrawingView) +const char* ViewProviderViewPart::LineStyleEnums[] = { "NoLine", + "Continuous", + "Dash", + "Dot", + "DashDot", + "DashDotDot", + NULL }; + //************************************************************************** // Construction/Destruction @@ -100,6 +108,9 @@ ViewProviderViewPart::ViewProviderViewPart() //properties that affect Section Line ADD_PROPERTY_TYPE(ShowSectionLine ,(true) ,dgroup,App::Prop_None,"Show/hide section line if applicable"); + int defLineStyle = hGrp->GetFloat("SectionLine", 2); + SectionLineStyle.setEnums(LineStyleEnums); + ADD_PROPERTY_TYPE(SectionLineStyle, (defLineStyle), dgroup, App::Prop_None, "Show/hide section line if applicable"); //properties that affect Detail Highlights ADD_PROPERTY_TYPE(HighlightAdjust,(0.0),hgroup,App::Prop_None,"Adjusts the rotation of the Detail highlight"); @@ -127,6 +138,7 @@ void ViewProviderViewPart::onChanged(const App::Property* prop) prop == &(ArcCenterMarks) || prop == &(CenterScale) || prop == &(ShowSectionLine) || + prop == &(SectionLineStyle) || prop == &(HorizCenterLine) || prop == &(VertCenterLine) ) { // redraw QGIVP diff --git a/src/Mod/TechDraw/Gui/ViewProviderViewPart.h b/src/Mod/TechDraw/Gui/ViewProviderViewPart.h index 23e6b05ff1..202268341d 100644 --- a/src/Mod/TechDraw/Gui/ViewProviderViewPart.h +++ b/src/Mod/TechDraw/Gui/ViewProviderViewPart.h @@ -52,9 +52,12 @@ public: App::PropertyBool HorizCenterLine; App::PropertyBool VertCenterLine; App::PropertyBool ShowSectionLine; + App::PropertyEnumeration SectionLineStyle; App::PropertyFloat HighlightAdjust; App::PropertyBool ShowAllEdges; + static const char* LineStyleEnums[]; + virtual void attach(App::DocumentObject *); virtual void setDisplayMode(const char* ModeName); virtual bool useNewSelectionModel(void) const {return false;}