From 2cc6c1f5041aa21886fa494bae2f50c47df16d63 Mon Sep 17 00:00:00 2001 From: wandererfan Date: Wed, 20 Dec 2023 17:53:28 -0500 Subject: [PATCH] [TD]fix vertex-edge dimension --- src/Mod/TechDraw/Gui/CommandCreateDims.cpp | 6 +++--- src/Mod/TechDraw/Gui/DimensionValidators.cpp | 15 ++++++++------- src/Mod/TechDraw/Gui/DimensionValidators.h | 1 + 3 files changed, 12 insertions(+), 10 deletions(-) diff --git a/src/Mod/TechDraw/Gui/CommandCreateDims.cpp b/src/Mod/TechDraw/Gui/CommandCreateDims.cpp index f711fc9182..a222310437 100644 --- a/src/Mod/TechDraw/Gui/CommandCreateDims.cpp +++ b/src/Mod/TechDraw/Gui/CommandCreateDims.cpp @@ -429,7 +429,7 @@ void execDistance(Gui::Command* cmd) StringVector acceptableGeometry({"Edge", "Vertex"}); std::vector minimumCounts({1, 2}); std::vector acceptableDimensionGeometrys( - {isVertical, isHorizontal, isDiagonal}); + {isVertical, isHorizontal, isDiagonal, isHybrid}); //what 2d geometry configuration did we receive? DimensionGeometryType geometryRefs2d = validateDimSelection( @@ -528,7 +528,7 @@ void execDistanceX(Gui::Command* cmd) //Define the geometric configuration required for a length dimension StringVector acceptableGeometry({"Edge", "Vertex"}); std::vector minimumCounts({1, 2}); - std::vector acceptableDimensionGeometrys({isHorizontal, isDiagonal}); + std::vector acceptableDimensionGeometrys({isHorizontal, isDiagonal, isHybrid}); //what 2d geometry configuration did we receive? DimensionGeometryType geometryRefs2d = validateDimSelection( @@ -627,7 +627,7 @@ void execDistanceY(Gui::Command* cmd) //Define the geometric configuration required for a length dimension StringVector acceptableGeometry({"Edge", "Vertex"}); std::vector minimumCounts({1, 2}); - std::vector acceptableDimensionGeometrys({isVertical, isDiagonal}); + std::vector acceptableDimensionGeometrys({isVertical, isDiagonal, isHybrid}); //what 2d geometry configuration did we receive? DimensionGeometryType geometryRefs2d = validateDimSelection( diff --git a/src/Mod/TechDraw/Gui/DimensionValidators.cpp b/src/Mod/TechDraw/Gui/DimensionValidators.cpp index 9635e740f8..7ee54c9e05 100644 --- a/src/Mod/TechDraw/Gui/DimensionValidators.cpp +++ b/src/Mod/TechDraw/Gui/DimensionValidators.cpp @@ -278,7 +278,12 @@ bool TechDraw::checkGeometryOccurences(StringVector subNames, GeomCountMap keyed //return the first valid configuration contained in the already validated references DimensionGeometryType TechDraw::getGeometryConfiguration(ReferenceVector valid2dReferences) { - DimensionGeometryType config = isValidMultiEdge(valid2dReferences); + DimensionGeometryType config = isValidHybrid(valid2dReferences); + if (config > isInvalid) { + return config; + } + + config = isValidMultiEdge(valid2dReferences); if (config > isInvalid) { return config; } @@ -290,10 +295,6 @@ DimensionGeometryType TechDraw::getGeometryConfiguration(ReferenceVector valid2d if (config > isInvalid) { return config; } - config = isValidHybrid(valid2dReferences); - if (config > isInvalid) { - return config; - } // no valid configuration found return isInvalid; @@ -660,7 +661,7 @@ DimensionGeometryType TechDraw::isValidHybrid(ReferenceVector refs) } if (vertexCount > 0 && edgeCount > 0) { //must be a diagonal dim? could it be isHorizontal or isVertical? - return isDiagonal; + return isHybrid; } return isInvalid; @@ -670,7 +671,7 @@ DimensionGeometryType TechDraw::isValidHybrid(ReferenceVector refs) DimensionGeometryType TechDraw::isValidHybrid3d(DrawViewPart* dvp, ReferenceVector refs) { (void)dvp; - //we don't have a special check for 3d in this case + //we can reuse the 2d check here. return isValidHybrid(refs); } diff --git a/src/Mod/TechDraw/Gui/DimensionValidators.h b/src/Mod/TechDraw/Gui/DimensionValidators.h index f52d4d4881..b47da57c3e 100644 --- a/src/Mod/TechDraw/Gui/DimensionValidators.h +++ b/src/Mod/TechDraw/Gui/DimensionValidators.h @@ -59,6 +59,7 @@ enum DimensionGeometryEnum { isAngle3Pt, isMultiEdge, isZLimited, + isHybrid, isViewReference //never needs to be specified in the acceptable list };