PartDesign: Add HoleCuteType "Counterdrill"
This commit is contained in:
@@ -68,7 +68,7 @@ const char* Hole::DrillPointEnums[] = { "Flat", "Angled", nullp
|
||||
|
||||
/* "None" profile */
|
||||
|
||||
const char* Hole::HoleCutType_None_Enums[] = { "None", "Counterbore", "Countersink", nullptr };
|
||||
const char* Hole::HoleCutType_None_Enums[] = { "None", "Counterbore", "Countersink", "Counterdrill", nullptr };
|
||||
const char* Hole::ThreadSize_None_Enums[] = { "None", nullptr };
|
||||
const char* Hole::ThreadClass_None_Enums[] = { "None", nullptr };
|
||||
|
||||
@@ -475,7 +475,7 @@ const Hole::UTSClearanceDefinition Hole::UTSHoleDiameters[22] =
|
||||
};
|
||||
|
||||
/* ISO coarse metric enums */
|
||||
std::vector<std::string> Hole::HoleCutType_ISOmetric_Enums = { "None", "Counterbore", "Countersink", "Cheesehead (deprecated)", "Countersink socket screw (deprecated)", "Cap screw (deprecated)" };
|
||||
std::vector<std::string> Hole::HoleCutType_ISOmetric_Enums = { "None", "Counterbore", "Countersink", "Cheesehead (deprecated)", "Countersink socket screw (deprecated)", "Cap screw (deprecated)", "Counterdrill" };
|
||||
const char* Hole::ThreadSize_ISOmetric_Enums[] = { "M1", "M1.1", "M1.2", "M1.4", "M1.6",
|
||||
"M1.8", "M2", "M2.2", "M2.5", "M3",
|
||||
"M3.5", "M4", "M4.5", "M5", "M6",
|
||||
@@ -486,7 +486,7 @@ const char* Hole::ThreadSize_ISOmetric_Enums[] = { "M1", "M1.1", "M1.2", "M1
|
||||
"M52", "M56", "M60", "M64", "M68", nullptr };
|
||||
const char* Hole::ThreadClass_ISOmetric_Enums[] = { "4G", "4H", "5G", "5H", "6G", "6H", "7G", "7H","8G", "8H", nullptr };
|
||||
|
||||
std::vector<std::string> Hole::HoleCutType_ISOmetricfine_Enums = { "None", "Counterbore", "Countersink", "Cheesehead (deprecated)", "Countersink socket screw (deprecated)", "Cap screw (deprecated)" };
|
||||
std::vector<std::string> Hole::HoleCutType_ISOmetricfine_Enums = { "None", "Counterbore", "Countersink", "Cheesehead (deprecated)", "Countersink socket screw (deprecated)", "Cap screw (deprecated)", "Counterdrill" };
|
||||
const char* Hole::ThreadSize_ISOmetricfine_Enums[] = {
|
||||
"M1x0.2", "M1.1x0.2", "M1.2x0.2", "M1.4x0.2",
|
||||
"M1.6x0.2", "M1.8x0.2", "M2x0.25", "M2.2x0.25",
|
||||
@@ -597,7 +597,7 @@ const double Hole::ThreadRunout[ThreadRunout_size][2] = {
|
||||
/* Details from https://en.wikipedia.org/wiki/Unified_Thread_Standard */
|
||||
|
||||
/* UTS coarse */
|
||||
const char* Hole::HoleCutType_UNC_Enums[] = { "None", "Counterbore", "Countersink", nullptr};
|
||||
const char* Hole::HoleCutType_UNC_Enums[] = { "None", "Counterbore", "Countersink", "Counterdrill", nullptr};
|
||||
const char* Hole::ThreadSize_UNC_Enums[] = { "#1", "#2", "#3", "#4", "#5", "#6",
|
||||
"#8", "#10", "#12",
|
||||
"1/4", "5/16", "3/8", "7/16", "1/2", "9/16",
|
||||
@@ -608,7 +608,7 @@ const char* Hole::ThreadSize_UNC_Enums[] = { "#1", "#2", "#3", "#4", "#5", "#6
|
||||
const char* Hole::ThreadClass_UNC_Enums[] = { "1B", "2B", "3B", nullptr };
|
||||
|
||||
/* UTS fine */
|
||||
const char* Hole::HoleCutType_UNF_Enums[] = { "None", "Counterbore", "Countersink", nullptr};
|
||||
const char* Hole::HoleCutType_UNF_Enums[] = { "None", "Counterbore", "Countersink", "Counterdrill", nullptr};
|
||||
const char* Hole::ThreadSize_UNF_Enums[] = { "#0", "#1", "#2", "#3", "#4", "#5", "#6",
|
||||
"#8", "#10", "#12",
|
||||
"1/4", "5/16", "3/8", "7/16", "1/2", "9/16",
|
||||
@@ -617,7 +617,7 @@ const char* Hole::ThreadSize_UNF_Enums[] = { "#0", "#1", "#2", "#3", "#4", "#5
|
||||
const char* Hole::ThreadClass_UNF_Enums[] = { "1B", "2B", "3B", nullptr };
|
||||
|
||||
/* UTS extrafine */
|
||||
const char* Hole::HoleCutType_UNEF_Enums[] = { "None", "Counterbore", "Countersink", nullptr};
|
||||
const char* Hole::HoleCutType_UNEF_Enums[] = { "None", "Counterbore", "Countersink", "Counterdrill", nullptr};
|
||||
const char* Hole::ThreadSize_UNEF_Enums[] = { "#12", "1/4", "5/16", "3/8", "7/16", "1/2",
|
||||
"9/16", "5/8", "11/16", "3/4", "13/16", "7/8",
|
||||
"15/16", "1", "1 1/16", "1 1/8", "1 1/4",
|
||||
@@ -760,7 +760,7 @@ void Hole::updateHoleCutParams()
|
||||
HoleCutDepth.setReadOnly(false);
|
||||
HoleCutCountersinkAngle.setReadOnly(true);
|
||||
}
|
||||
else if (holeCutTypeStr == "Countersink") {
|
||||
else if (holeCutTypeStr == "Countersink" || holeCutTypeStr == "Counterdrill") {
|
||||
// read ISO 10642 values
|
||||
const CutDimensionSet& counter = find_cutDimensionSet(threadTypeStr, "ISO 10642");
|
||||
if (HoleCutDiameter.getValue() == 0.0 || HoleCutDiameter.getValue() <= diameterVal) {
|
||||
@@ -776,6 +776,9 @@ void Hole::updateHoleCutParams()
|
||||
if (HoleCutCountersinkAngle.getValue() == 0.0) {
|
||||
HoleCutCountersinkAngle.setValue(counter.angle);
|
||||
}
|
||||
if (HoleCutDepth.getValue() == 0.0 && holeCutTypeStr == "Counterdrill") {
|
||||
HoleCutDepth.setValue(1.0);
|
||||
}
|
||||
HoleCutDiameter.setReadOnly(false);
|
||||
HoleCutDepth.setReadOnly(false);
|
||||
HoleCutCountersinkAngle.setReadOnly(false);
|
||||
@@ -905,7 +908,7 @@ void Hole::updateHoleCutParams()
|
||||
HoleCutDiameter.setReadOnly(false);
|
||||
HoleCutDepth.setReadOnly(false);
|
||||
}
|
||||
else if (holeCutTypeStr == "Countersink") {
|
||||
else if (holeCutTypeStr == "Countersink" || holeCutTypeStr == "Counterdrill") {
|
||||
if (HoleCutDiameter.getValue() == 0.0 || HoleCutDiameter.getValue() <= diameterVal) {
|
||||
HoleCutDiameter.setValue(diameterVal * 1.7);
|
||||
// 82 degrees for UTS, 90 otherwise
|
||||
@@ -920,6 +923,9 @@ void Hole::updateHoleCutParams()
|
||||
else
|
||||
HoleCutCountersinkAngle.setValue(90.0);
|
||||
}
|
||||
if (HoleCutDepth.getValue() == 0.0 && holeCutTypeStr == "Counterdrill") {
|
||||
HoleCutDepth.setValue(1.0);
|
||||
}
|
||||
HoleCutDiameter.setReadOnly(false);
|
||||
HoleCutDepth.setReadOnly(false);
|
||||
HoleCutCountersinkAngle.setReadOnly(false);
|
||||
@@ -1702,6 +1708,7 @@ App::DocumentObjectExecReturn* Hole::execute()
|
||||
holeCutType == "Cheesehead (deprecated)" ||
|
||||
holeCutType == "Cap screw (deprecated)" ||
|
||||
isDynamicCounterbore(threadType, holeCutType));
|
||||
bool isCounterdrill = (holeCutType == "Counterdrill");
|
||||
|
||||
double TaperedAngleVal = Tapered.getValue() ? Base::toRadians(TaperedAngle.getValue()) : Base::toRadians(90.0);
|
||||
double radiusBottom = Diameter.getValue() / 2.0 - length / tan(TaperedAngleVal);
|
||||
@@ -1716,7 +1723,7 @@ App::DocumentObjectExecReturn* Hole::execute()
|
||||
if (TaperedAngleVal <= 0.0 || TaperedAngleVal > Base::toRadians(180.0))
|
||||
return new App::DocumentObjectExecReturn("Hole error: Invalid taper angle");
|
||||
|
||||
if (isCountersink || isCounterbore) {
|
||||
if (isCountersink || isCounterbore || isCounterdrill) {
|
||||
double holeCutRadius = HoleCutDiameter.getValue() / 2.0;
|
||||
double holeCutDepth = HoleCutDepth.getValue();
|
||||
double countersinkAngle = Base::toRadians(HoleCutCountersinkAngle.getValue() / 2.0);
|
||||
|
||||
@@ -362,7 +362,7 @@ void TaskHoleParameters::holeCutTypeChanged(int index)
|
||||
// the type is a countersink and thus if HoleCutCountersinkAngle can be enabled
|
||||
std::string HoleCutTypeString = pcHole->HoleCutType.getValueAsString();
|
||||
if (HoleCutTypeString == "None" || HoleCutTypeString == "Counterbore"
|
||||
|| HoleCutTypeString == "Countersink") {
|
||||
|| HoleCutTypeString == "Countersink" || HoleCutTypeString == "Counterdrill") {
|
||||
ui->HoleCutCustomValues->setEnabled(false);
|
||||
if (HoleCutTypeString == "None") {
|
||||
ui->HoleCutDiameter->setEnabled(false);
|
||||
@@ -424,8 +424,9 @@ void TaskHoleParameters::holeCutDiameterChanged(double value)
|
||||
void TaskHoleParameters::holeCutDepthChanged(double value)
|
||||
{
|
||||
PartDesign::Hole* pcHole = static_cast<PartDesign::Hole*>(vp->getObject());
|
||||
std::string HoleCutTypeString = pcHole->HoleCutType.getValueAsString();
|
||||
|
||||
if (ui->HoleCutCountersinkAngle->isEnabled()) {
|
||||
if (ui->HoleCutCountersinkAngle->isEnabled() && HoleCutTypeString != "Counterdrill") {
|
||||
// we have a countersink and recalculate the HoleCutDiameter
|
||||
|
||||
// store current depth
|
||||
|
||||
Reference in New Issue
Block a user