From e7af8b5c01dda258100483fa803faf108330457a Mon Sep 17 00:00:00 2001 From: donovaly Date: Fri, 13 Nov 2020 03:30:42 +0100 Subject: [PATCH] [PD] hole UTS fixes - propose cut values also for UTS profiles - the UTS defines coarse and fine while for ISO it is regular and fine, thus fix the name - for the dialog: set minimum values to zero (angles etc. cannot be negative) --- src/Mod/PartDesign/App/FeatureHole.cpp | 42 +++++++++++++++---- src/Mod/PartDesign/Gui/TaskHoleParameters.cpp | 2 +- src/Mod/PartDesign/Gui/TaskHoleParameters.ui | 30 +++++++++++++ 3 files changed, 66 insertions(+), 8 deletions(-) diff --git a/src/Mod/PartDesign/App/FeatureHole.cpp b/src/Mod/PartDesign/App/FeatureHole.cpp index 7a6c1d5061..2c635f7f2e 100644 --- a/src/Mod/PartDesign/App/FeatureHole.cpp +++ b/src/Mod/PartDesign/App/FeatureHole.cpp @@ -498,17 +498,23 @@ Hole::Hole() void Hole::updateHoleCutParams() { + std::string holeCutType = HoleCutType.getValueAsString(); + + // there is no cut, thus return + if (holeCutType == "None") + return; + + if (ThreadType.getValue() < 0) { + throw Base::IndexError("Thread type out of range"); + return; + } + std::string threadType = ThreadType.getValueAsString(); - if (threadType == "ISOMetricProfile" || threadType == "ISOMetricFineProfile") { - std::string holeCutType = HoleCutType.getValueAsString(); - if (ThreadType.getValue() < 0) - throw Base::IndexError("Thread type out of range"); - if (ThreadSize.getValue() < 0) + if (ThreadSize.getValue() < 0) { throw Base::IndexError("Thread size out of range"); - - if (holeCutType == "None") return; + } // get diameter and size double diameter = threadDescription[ThreadType.getValue()][ThreadSize.getValue()].diameter; @@ -580,6 +586,28 @@ void Hole::updateHoleCutParams() HoleCutDepth.setValue(diameter * 1.25); } } + else { // we have an UTS profile + // get diameter + double diameter = threadDescription[ThreadType.getValue()][ThreadSize.getValue()].diameter; + + // we don't update for these settings but we need to set a value for new holes + // 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 (HoleCutDiameter.getValue() == 0.0) { + HoleCutDiameter.setValue(diameter * 1.6); + HoleCutDepth.setValue(diameter * 0.9); + } + if (HoleCutDepth.getValue() == 0.0) + HoleCutDepth.setValue(diameter * 0.9); + } + else if (holeCutType == "Countersink") { + if (HoleCutDiameter.getValue() == 0.0) { + HoleCutDiameter.setValue(diameter * 1.7); + HoleCutCountersinkAngle.setValue(82.0); + } + } + } } void Hole::updateDiameterParam() diff --git a/src/Mod/PartDesign/Gui/TaskHoleParameters.cpp b/src/Mod/PartDesign/Gui/TaskHoleParameters.cpp index db370304c5..6dcfe8d44b 100644 --- a/src/Mod/PartDesign/Gui/TaskHoleParameters.cpp +++ b/src/Mod/PartDesign/Gui/TaskHoleParameters.cpp @@ -72,7 +72,7 @@ TaskHoleParameters::TaskHoleParameters(ViewProviderHole *HoleView, QWidget *pare ui->ThreadType->addItem(tr("None"), QByteArray("None")); ui->ThreadType->addItem(tr("ISO metric regular profile"), QByteArray("ISO")); ui->ThreadType->addItem(tr("ISO metric fine profile"), QByteArray("ISO")); - ui->ThreadType->addItem(tr("UTS regular profile"), QByteArray("UTS")); + ui->ThreadType->addItem(tr("UTS coarse profile"), QByteArray("UTS")); ui->ThreadType->addItem(tr("UTS fine profile"), QByteArray("UTS")); ui->ThreadType->addItem(tr("UTS extra fine profile"), QByteArray("UTS")); diff --git a/src/Mod/PartDesign/Gui/TaskHoleParameters.ui b/src/Mod/PartDesign/Gui/TaskHoleParameters.ui index 2127434a3d..055ab6ae98 100644 --- a/src/Mod/PartDesign/Gui/TaskHoleParameters.ui +++ b/src/Mod/PartDesign/Gui/TaskHoleParameters.ui @@ -29,6 +29,9 @@ deg + + 0.000000000000000 + @@ -78,6 +81,9 @@ mm + + 0.000000000000000 + @@ -98,6 +104,9 @@ mm + + 0.000000000000000 + @@ -115,6 +124,9 @@ mm + + 0.000000000000000 + @@ -122,6 +134,9 @@ mm + + 0.000000000000000 + @@ -132,6 +147,9 @@ mm + + 0.000000000000000 + @@ -185,6 +203,9 @@ deg + + 0.000000000000000 + @@ -200,6 +221,9 @@ mm + + 0.000000000000000 + @@ -274,6 +298,9 @@ deg + + 0.000000000000000 + @@ -288,6 +315,9 @@ deg + + 0.000000000000000 +