From 09385d9d0008155f582ab92a5914d59e9ccd0331 Mon Sep 17 00:00:00 2001 From: donovaly Date: Tue, 2 Feb 2021 04:11:10 +0100 Subject: [PATCH] fix issue reported by @chennes also fix annoying variable naming - different variables representing different types should not have the same name also update a comment according to depending PRs --- src/Mod/PartDesign/App/FeatureHole.cpp | 52 +++++++++---------- src/Mod/PartDesign/Gui/TaskHoleParameters.cpp | 4 ++ 2 files changed, 30 insertions(+), 26 deletions(-) diff --git a/src/Mod/PartDesign/App/FeatureHole.cpp b/src/Mod/PartDesign/App/FeatureHole.cpp index eb4914bec3..af43e512bf 100644 --- a/src/Mod/PartDesign/App/FeatureHole.cpp +++ b/src/Mod/PartDesign/App/FeatureHole.cpp @@ -639,10 +639,10 @@ Hole::Hole() void Hole::updateHoleCutParams() { - std::string holeCutType = HoleCutType.getValueAsString(); + std::string holeCutTypeStr = HoleCutType.getValueAsString(); // there is no cut, thus return - if (holeCutType == "None") + if (holeCutTypeStr == "None") return; if (ThreadType.getValue() < 0) { @@ -654,23 +654,23 @@ void Hole::updateHoleCutParams() double diameterVal = Diameter.getValue(); // handle thread types - std::string threadType = ThreadType.getValueAsString(); - if (threadType == "ISOMetricProfile" || threadType == "ISOMetricFineProfile") { + std::string threadTypeStr = ThreadType.getValueAsString(); + if (threadTypeStr == "ISOMetricProfile" || threadTypeStr == "ISOMetricFineProfile") { if (ThreadSize.getValue() < 0) { throw Base::IndexError("Thread size out of range"); return; } - std::string threadSize{ ThreadSize.getValueAsString() }; + std::string threadSizeStr = ThreadSize.getValueAsString(); // we don't update for these settings but we need to set a value for new holes // furthermore we must assure the hole cut diameter is not <= the hole diameter // if we have a cut but the values are zero, we assume it is a new hole // we take in this case the values from the norm ISO 4762 or ISO 10642 - if (holeCutType == "Counterbore") { + if (holeCutTypeStr == "Counterbore") { // read ISO 4762 values - const CutDimensionSet& counter = find_cutDimensionSet(threadType, "ISO 4762"); - const CounterBoreDimension& dimen = counter.get_bore(threadSize); + const CutDimensionSet& counter = find_cutDimensionSet(threadTypeStr, "ISO 4762"); + const CounterBoreDimension& dimen = counter.get_bore(threadSizeStr); if (HoleCutDiameter.getValue() == 0.0 || HoleCutDiameter.getValue() <= diameterVal) { // there is no norm defining counterbores for all sizes, thus we need to use the // same fallback as for the case HoleCutTypeMap.count(key) @@ -690,11 +690,11 @@ void Hole::updateHoleCutParams() HoleCutDepth.setReadOnly(false); HoleCutCountersinkAngle.setReadOnly(true); } - else if (holeCutType == "Countersink") { + else if (holeCutTypeStr == "Countersink") { // read ISO 10642 values - const CutDimensionSet& counter = find_cutDimensionSet(threadType, "ISO 10642"); + const CutDimensionSet& counter = find_cutDimensionSet(threadTypeStr, "ISO 10642"); if (HoleCutDiameter.getValue() == 0.0 || HoleCutDiameter.getValue() <= diameterVal) { - const CounterSinkDimension& dimen = counter.get_sink(threadSize); + const CounterSinkDimension& dimen = counter.get_sink(threadSizeStr); if (dimen.diameter != 0.0) { HoleCutDiameter.setValue(dimen.diameter); } @@ -712,14 +712,14 @@ void Hole::updateHoleCutParams() } // cut definition - CutDimensionKey key { threadType, holeCutType }; + CutDimensionKey key { threadTypeStr, holeCutTypeStr }; if (HoleCutTypeMap.count(key)) { const CutDimensionSet &counter = find_cutDimensionSet(key); if (counter.cut_type == CutDimensionSet::Counterbore) { // disable HoleCutCountersinkAngle and reset it to ISO's default HoleCutCountersinkAngle.setValue(90.0); HoleCutCountersinkAngle.setReadOnly(true); - const CounterBoreDimension &dimen = counter.get_bore(threadSize); + const CounterBoreDimension &dimen = counter.get_bore(threadSizeStr); if (dimen.thread == "None") { // valid values for visual feedback HoleCutDiameter.setValue(Diameter.getValue() + 0.1); @@ -751,7 +751,7 @@ void Hole::updateHoleCutParams() HoleCutCustomValues.setReadOnly(false); } } else if (counter.cut_type == CutDimensionSet::Countersink) { - const CounterSinkDimension &dimen = counter.get_sink(threadSize); + const CounterSinkDimension &dimen = counter.get_sink(threadSizeStr); if (dimen.thread == "None") { // valid values for visual feedback HoleCutDiameter.setValue(Diameter.getValue() + 0.1); @@ -795,13 +795,13 @@ void Hole::updateHoleCutParams() // user defined None, Counterbore and Countersink // handle legacy types but don’t change user settings for // user defined None, Counterbore and Countersink - else if (holeCutType == "Cheesehead (deprecated)") { + else if (holeCutTypeStr == "Cheesehead (deprecated)") { HoleCutDiameter.setValue(diameterVal * 1.6); HoleCutDepth.setValue(diameterVal * 0.6); HoleCutDiameter.setReadOnly(false); HoleCutDepth.setReadOnly(false); } - else if (holeCutType == "Countersink socket screw (deprecated)") { + else if (holeCutTypeStr == "Countersink socket screw (deprecated)") { HoleCutDiameter.setValue(diameterVal * 2.0); HoleCutDepth.setValue(diameterVal * 0.0); if (HoleCutCountersinkAngle.getValue() == 0.0) { @@ -811,7 +811,7 @@ void Hole::updateHoleCutParams() HoleCutDepth.setReadOnly(false); HoleCutCountersinkAngle.setReadOnly(false); } - else if (holeCutType == "Cap screw (deprecated)") { + else if (holeCutTypeStr == "Cap screw (deprecated)") { HoleCutDiameter.setValue(diameterVal * 1.5); HoleCutDepth.setValue(diameterVal * 1.25); HoleCutDiameter.setReadOnly(false); @@ -824,7 +824,7 @@ void Hole::updateHoleCutParams() // furthermore we must assure the hole cut diameter is not <= the hole diameter // if we have a cut but the values are zero, we assume it is a new hole // we use rules of thumbs as proposal - if (holeCutType == "Counterbore") { + if (holeCutTypeStr == "Counterbore") { if (HoleCutDiameter.getValue() == 0.0 || HoleCutDiameter.getValue() <= diameterVal) { HoleCutDiameter.setValue(diameterVal * 1.6); HoleCutDepth.setValue(diameterVal * 0.9); @@ -834,17 +834,17 @@ void Hole::updateHoleCutParams() HoleCutDiameter.setReadOnly(false); HoleCutDepth.setReadOnly(false); } - else if (holeCutType == "Countersink") { + else if (holeCutTypeStr == "Countersink") { if (HoleCutDiameter.getValue() == 0.0 || HoleCutDiameter.getValue() <= diameterVal) { HoleCutDiameter.setValue(diameterVal * 1.7); // 82 degrees for UTS, 90 otherwise - if (threadType != "None") + if (threadTypeStr != "None") HoleCutCountersinkAngle.setValue(82.0); else HoleCutCountersinkAngle.setValue(90.0); } if (HoleCutCountersinkAngle.getValue() == 0.0) { - if (threadType != "None") + if (threadTypeStr != "None") HoleCutCountersinkAngle.setValue(82.0); else HoleCutCountersinkAngle.setValue(90.0); @@ -1043,11 +1043,11 @@ void Hole::updateDiameterParam() void Hole::onChanged(const App::Property *prop) { if (prop == &ThreadType) { - std::string type, holeCutType; + std::string type, holeCutTypeStr; if (ThreadType.isValid()) type = ThreadType.getValueAsString(); if (HoleCutType.isValid()) - holeCutType = HoleCutType.getValueAsString(); + holeCutTypeStr = HoleCutType.getValueAsString(); if (type == "None" ) { ThreadSize.setEnums(ThreadSize_None_Enums); @@ -1126,19 +1126,19 @@ void Hole::onChanged(const App::Property *prop) Diameter.setReadOnly(true); } - if (holeCutType == "None") { + if (holeCutTypeStr == "None") { HoleCutCustomValues.setReadOnly(true); HoleCutDiameter.setReadOnly(true); HoleCutDepth.setReadOnly(true); HoleCutCountersinkAngle.setReadOnly(true); } - else if (holeCutType == "Counterbore") { + else if (holeCutTypeStr == "Counterbore") { HoleCutCustomValues.setReadOnly(true); HoleCutDiameter.setReadOnly(false); HoleCutDepth.setReadOnly(false); HoleCutCountersinkAngle.setReadOnly(true); } - else if (holeCutType == "Countersink") { + else if (holeCutTypeStr == "Countersink") { HoleCutCustomValues.setReadOnly(true); HoleCutDiameter.setReadOnly(false); HoleCutDepth.setReadOnly(false); diff --git a/src/Mod/PartDesign/Gui/TaskHoleParameters.cpp b/src/Mod/PartDesign/Gui/TaskHoleParameters.cpp index c1648446f7..6dc77ad8ef 100644 --- a/src/Mod/PartDesign/Gui/TaskHoleParameters.cpp +++ b/src/Mod/PartDesign/Gui/TaskHoleParameters.cpp @@ -537,6 +537,10 @@ void TaskHoleParameters::threadSizeChanged(int index) pcHole->ThreadSize.setValue(index); recomputeFeature(); + + // apply the recompute result to the widgets + ui->HoleCutCustomValues->setDisabled(pcHole->HoleCutCustomValues.isReadOnly()); + ui->HoleCutCustomValues->setChecked(pcHole->HoleCutCustomValues.getValue()); } void TaskHoleParameters::threadClassChanged(int index)