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
+
-