diff --git a/src/Mod/TechDraw/Gui/DlgPrefsTechDrawDimensions.ui b/src/Mod/TechDraw/Gui/DlgPrefsTechDrawDimensions.ui
index 958eb04f9b..f64d0e683a 100644
--- a/src/Mod/TechDraw/Gui/DlgPrefsTechDrawDimensions.ui
+++ b/src/Mod/TechDraw/Gui/DlgPrefsTechDrawDimensions.ui
@@ -559,6 +559,40 @@ Multiplier of 'Font Size'
+ -
+
+
+
+ true
+
+
+
+ Controls the size of spacing between dimension line and dimension text for ISO dimensions.
+
+
+ Line Spacing - ISO
+
+
+
+ -
+
+
+ <html><head/><body><p>Controls the size of spacing between dimension line and dimension text. Value * linewidth is the line spacing.</p></body></html>
+
+
+ Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
+
+
+
+
+
+ LineSpacingFactorISO
+
+
+ Mod/TechDraw/Dimensions
+
+
+
diff --git a/src/Mod/TechDraw/Gui/QGIViewDimension.cpp b/src/Mod/TechDraw/Gui/QGIViewDimension.cpp
index 168bff0b35..3a3371b7a1 100644
--- a/src/Mod/TechDraw/Gui/QGIViewDimension.cpp
+++ b/src/Mod/TechDraw/Gui/QGIViewDimension.cpp
@@ -849,7 +849,7 @@ Base::Vector2d QGIViewDimension::getIsoRefOutsetPoint(const Base::BoundBox2d& la
{
return Base::Vector2d(right ? labelRectangle.MinX - getDefaultIsoReferenceLineOverhang()
: labelRectangle.MaxX + getDefaultIsoReferenceLineOverhang(),
- labelRectangle.MinY - getDefaultIsoDimensionLineSpacing());
+ labelRectangle.MinY - getIsoDimensionLineSpacing());
}
Base::Vector2d QGIViewDimension::getIsoRefJointPoint(const Base::BoundBox2d& labelRectangle,
@@ -1146,10 +1146,10 @@ bool QGIViewDimension::constructDimensionArc(
double borderRadius = (labelRectangle.GetCenter() - arcCenter).Length();
if (borderRadius > arcRadius) {
- borderRadius = arcRadius + getDefaultIsoDimensionLineSpacing();
+ borderRadius = arcRadius + getIsoDimensionLineSpacing();
}
else if (borderRadius < arcRadius) {
- borderRadius = arcRadius - getDefaultIsoDimensionLineSpacing();
+ borderRadius = arcRadius - getIsoDimensionLineSpacing();
}
// ISO oriented labels are symmetrical along their center axis
@@ -1576,7 +1576,7 @@ void QGIViewDimension::drawDistanceExecutive(const Base::Vector2d& startPoint,
labelCenter
+ Base::Vector2d::FromPolar(
placementFactor
- * (labelRectangle.Height() * 0.5 + getDefaultIsoDimensionLineSpacing()),
+ * (labelRectangle.Height() * 0.5 + getIsoDimensionLineSpacing()),
lineAngle + M_PI_2));
// Compute the dimensional line start and end crossings with (virtual) extension lines
@@ -1786,7 +1786,7 @@ void QGIViewDimension::drawDistanceOverride(const Base::Vector2d& startPoint,
labelCenter
+ Base::Vector2d::FromPolar(
placementFactor
- * (labelRectangle.Height() * 0.5 + getDefaultIsoDimensionLineSpacing()),
+ * (labelRectangle.Height() * 0.5 + getIsoDimensionLineSpacing()),
lineAngle + M_PI_2));
// Compute the dimensional line start and end crossings with (virtual) extension lines
@@ -1990,7 +1990,7 @@ void QGIViewDimension::drawRadiusExecutive(const Base::Vector2d& centerPoint,
double lineAngle;
double devAngle = computeLineAndLabelAngles(centerPoint, labelCenter,
labelRectangle.Height() * 0.5
- + getDefaultIsoDimensionLineSpacing(),
+ + getIsoDimensionLineSpacing(),
lineAngle, labelAngle);
// Is there point on the arc, where line from center intersects it perpendicularly?
@@ -2014,7 +2014,7 @@ void QGIViewDimension::drawRadiusExecutive(const Base::Vector2d& centerPoint,
devAngle = computeLineAndLabelAngles(arcPoint, labelCenter,
labelRectangle.Height() * 0.5
- + getDefaultIsoDimensionLineSpacing(),
+ + getIsoDimensionLineSpacing(),
lineAngle, labelAngle);
lineAngle = DrawUtil::angleComposition(lineAngle, M_PI);
@@ -2239,7 +2239,7 @@ void QGIViewDimension::drawDiameter(TechDraw::DrawViewDimension* dimension,
double lineAngle;
double devAngle = computeLineAndLabelAngles(curveCenter, labelCenter,
labelRectangle.Height() * 0.5
- + getDefaultIsoDimensionLineSpacing(),
+ + getIsoDimensionLineSpacing(),
lineAngle, labelAngle);
// Correct the label center distance projected on the leader line and subtract radius
@@ -2437,7 +2437,7 @@ void QGIViewDimension::drawAngle(TechDraw::DrawViewDimension* dimension,
arcRadius = labelDirection.Length()
- placementFactor
- * (labelRectangle.Height() * 0.5 + getDefaultIsoDimensionLineSpacing());
+ * (labelRectangle.Height() * 0.5 + getIsoDimensionLineSpacing());
if (arcRadius < 0.0) {
arcRadius = labelDirection.Length();
}
@@ -2633,6 +2633,13 @@ double QGIViewDimension::getDefaultIsoDimensionLineSpacing() const
return Rez::appX(m_lineWidth * 2.0);
}
+// Returns the line spacing for ISO dimension based on the user inputted factor
+double QGIViewDimension::getIsoDimensionLineSpacing() const
+{
+ auto vp = static_cast(getViewProvider(getViewObject()));
+ return Rez::appX(m_lineWidth * vp->LineSpacingFactorISO.getValue());
+}
+
double QGIViewDimension::getDefaultIsoReferenceLineOverhang() const
{
// Not specified directly but seems to be exactly Line Width according to ISO 129-1 Annex A
diff --git a/src/Mod/TechDraw/Gui/QGIViewDimension.h b/src/Mod/TechDraw/Gui/QGIViewDimension.h
index 70c25d7d88..ce6708a68a 100644
--- a/src/Mod/TechDraw/Gui/QGIViewDimension.h
+++ b/src/Mod/TechDraw/Gui/QGIViewDimension.h
@@ -294,6 +294,7 @@ private:
double getDefaultExtensionLineOverhang() const;
double getDefaultArrowTailLength() const;
double getDefaultIsoDimensionLineSpacing() const;
+ double getIsoDimensionLineSpacing() const;
double getDefaultIsoReferenceLineOverhang() const;
double getDefaultAsmeHorizontalLeaderLength() const;
diff --git a/src/Mod/TechDraw/Gui/ViewProviderDimension.cpp b/src/Mod/TechDraw/Gui/ViewProviderDimension.cpp
index 63a50ae4cc..8732c238d6 100644
--- a/src/Mod/TechDraw/Gui/ViewProviderDimension.cpp
+++ b/src/Mod/TechDraw/Gui/ViewProviderDimension.cpp
@@ -1,4 +1,4 @@
-/***************************************************************************
+/***************************************************************************
* Copyright (c) 2004 Jürgen Riegel *
* Copyright (c) 2012 Luke Parry *
* *
@@ -86,6 +86,8 @@ ViewProviderDimension::ViewProviderDimension()
"Adjusts the gap between dimension point and extension line");
ADD_PROPERTY_TYPE(GapFactorASME, (Preferences::GapASME()), group, App::Prop_None,
"Adjusts the gap between dimension point and extension line");
+ ADD_PROPERTY_TYPE(LineSpacingFactorISO, (2.0), group, App::Prop_None,
+ "Adjusts the gap between dimension line and dimension text");
StackOrder.setValue(ZVALUE::DIMENSION);
}
@@ -198,7 +200,8 @@ void ViewProviderDimension::onChanged(const App::Property* p)
(p == &RenderingExtent) ||
(p == &FlipArrowheads) ||
(p == &GapFactorASME) ||
- (p == &GapFactorISO)) {
+ (p == &GapFactorISO) ||
+ p == &LineSpacingFactorISO) {
QGIView* qgiv = getQView();
if (qgiv) {
qgiv->updateView(true);
diff --git a/src/Mod/TechDraw/Gui/ViewProviderDimension.h b/src/Mod/TechDraw/Gui/ViewProviderDimension.h
index 783c16943a..8a72f9abec 100644
--- a/src/Mod/TechDraw/Gui/ViewProviderDimension.h
+++ b/src/Mod/TechDraw/Gui/ViewProviderDimension.h
@@ -1,4 +1,4 @@
-/***************************************************************************
+/***************************************************************************
* Copyright (c) 2004 Jürgen Riegel *
* Copyright (c) 2012 Luke Parry *
* *
@@ -66,6 +66,7 @@ public:
App::PropertyFloat GapFactorISO;
App::PropertyFloat GapFactorASME;
+ App::PropertyFloat LineSpacingFactorISO;
void attach(App::DocumentObject *) override;
bool useNewSelectionModel() const override {return false;}