PD(hole taskpanel): Include depth on diagram

feat(PD): hole diagram add include depth
refactor(PD): hole taskpanel: images add background
This commit is contained in:
Alfredo Monclus
2025-01-22 23:19:12 -03:00
committed by Chris Hennes
parent be3ce13a7c
commit de7a237a8a
15 changed files with 745 additions and 292 deletions

View File

@@ -122,14 +122,6 @@ TaskHoleParameters::TaskHoleParameters(ViewProviderHole* HoleView, QWidget* pare
}
ui->HoleCutType->setCurrentIndex(pcHole->HoleCutType.getValue());
bool isNotCut = pcHole->HoleCutType.getValue() == 0L;
ui->labelHoleCutDiameter->setHidden(isNotCut);
ui->labelHoleCutDepth->setHidden(isNotCut);
ui->labelHoleCutCountersinkAngle->setHidden(isNotCut);
ui->HoleCutDiameter->setHidden(isNotCut);
ui->HoleCutDepth->setHidden(isNotCut);
ui->HoleCutCountersinkAngle->setHidden(isNotCut);
ui->HoleCutCustomValues->setChecked(pcHole->HoleCutCustomValues.getValue());
ui->HoleCutCustomValues->setHidden(
pcHole->HoleCutType.getValue() < 5
@@ -191,7 +183,7 @@ TaskHoleParameters::TaskHoleParameters(ViewProviderHole* HoleView, QWidget* pare
std::string(pcHole->ThreadDepthType.getValueAsString()) == "Dimension"
);
setCutPixmap();
setCutDiagram();
// clang-format off
connect(ui->Threaded, &QCheckBox::clicked,
@@ -334,7 +326,7 @@ void TaskHoleParameters::threadDepthChanged(double value)
{
if (auto hole = getObject<PartDesign::Hole>()) {
hole->ThreadDepth.setValue(value);
setCutPixmap();
setCutDiagram();
recomputeFeature();
}
}
@@ -398,57 +390,28 @@ void TaskHoleParameters::holeCutTypeChanged(int index)
// the type is a countersink and thus if HoleCutCountersinkAngle can be enabled
std::string HoleCutTypeString = hole->HoleCutType.getValueAsString();
bool isNotCut = HoleCutTypeString == "None";
ui->labelHoleCutDiameter->setHidden(isNotCut);
ui->labelHoleCutDepth->setHidden(isNotCut);
ui->labelHoleCutCountersinkAngle->setHidden(isNotCut);
ui->HoleCutDiameter->setHidden(isNotCut);
ui->HoleCutDepth->setHidden(isNotCut);
ui->HoleCutCountersinkAngle->setHidden(isNotCut);
if (HoleCutTypeString == "None" || HoleCutTypeString == "Counterbore"
|| HoleCutTypeString == "Countersink" || HoleCutTypeString == "Counterdrill") {
if (
HoleCutTypeString == "None"
|| HoleCutTypeString == "Counterbore"
|| HoleCutTypeString == "Countersink"
|| HoleCutTypeString == "Counterdrill"
) {
ui->HoleCutCustomValues->setVisible(false);
if (HoleCutTypeString == "None") {
ui->HoleCutDiameter->setEnabled(false);
ui->HoleCutDepth->setEnabled(false);
ui->labelHoleCutCountersinkAngle->setVisible(false);
ui->HoleCutCountersinkAngle->setVisible(false);
}
if (HoleCutTypeString == "Counterbore") {
ui->labelHoleCutCountersinkAngle->setVisible(false);
ui->HoleCutCountersinkAngle->setVisible(false);
}
if (HoleCutTypeString == "Countersink") {
ui->labelHoleCutCountersinkAngle->setVisible(true);
ui->HoleCutCountersinkAngle->setVisible(true);
}
}
else { // screw definition
// we can have the case that we have no normed values
// in this case HoleCutCustomValues is read-only AND true
if (ui->HoleCutCustomValues->isChecked()) {
ui->HoleCutDiameter->setEnabled(true);
ui->HoleCutDepth->setEnabled(true);
if (!hole->HoleCutCountersinkAngle.isReadOnly()) {
ui->HoleCutCountersinkAngle->setVisible(true);
ui->labelHoleCutCountersinkAngle->setVisible(true);
ui->HoleCutCountersinkAngle->setEnabled(true);
}
}
else {
ui->HoleCutCustomValues->setVisible(true);
ui->HoleCutDiameter->setEnabled(false);
ui->HoleCutDepth->setEnabled(false);
ui->HoleCutCountersinkAngle->setEnabled(false);
ui->labelHoleCutCountersinkAngle->setVisible(true);
ui->HoleCutCountersinkAngle->setVisible(true);
}
bool isCustom = ui->HoleCutCustomValues->isChecked();
ui->HoleCutDiameter->setEnabled(isCustom);
ui->HoleCutDepth->setEnabled(isCustom);
ui->HoleCutCountersinkAngle->setEnabled(
isCustom && !hole->HoleCutCountersinkAngle.isReadOnly()
);
}
setCutPixmap();
setCutDiagram();
}
void TaskHoleParameters::setCutPixmap()
void TaskHoleParameters::setCutDiagram()
{
auto hole = getObject<PartDesign::Hole>();
const std::string holeCutTypeString = hole->HoleCutType.getValueAsString();
@@ -465,54 +428,46 @@ void TaskHoleParameters::setCutPixmap()
holeCutTypeString == "Counterbore"
|| hole->isDynamicCounterbore(threadTypeString, holeCutTypeString)
);
bool isCounterdrill = (
holeCutTypeString == "Counterdrill"
);
bool isCounterdrill = (holeCutTypeString == "Counterdrill");
bool includeAngle = hole->DrillForDepth.getValue();
bool isNotCut = holeCutTypeString == "None";
ui->labelHoleCutDiameter->setHidden(isNotCut);
ui->labelHoleCutDepth->setHidden(isNotCut);
ui->HoleCutDiameter->setHidden(isNotCut);
ui->HoleCutDepth->setHidden(isNotCut);
std::string baseFileName;
if (isCounterbore) {
if (isAngled) {
ui->cutDiagram->setPixmap(
QPixmap(QString::fromUtf8(":/images/hole_counterbore_angled.svg"))
);
} else {
ui->cutDiagram->setPixmap(
QPixmap(QString::fromUtf8(":/images/hole_counterbore_flat.svg"))
);
}
baseFileName = "hole_counterbore";
ui->HoleCutCountersinkAngle->setVisible(false);
ui->labelHoleCutCountersinkAngle->setVisible(false);
}
else if (isCountersink) {
if (isAngled) {
ui->cutDiagram->setPixmap(
QPixmap(QString::fromUtf8(":/images/hole_countersink_angled.svg"))
);
} else {
ui->cutDiagram->setPixmap(
QPixmap(QString::fromUtf8(":/images/hole_countersink_flat.svg"))
);
}
baseFileName = "hole_countersink";
ui->HoleCutCountersinkAngle->setVisible(true);
ui->labelHoleCutCountersinkAngle->setVisible(true);
}
else if (isCounterdrill) {
if (isAngled) {
ui->cutDiagram->setPixmap(
QPixmap(QString::fromUtf8(":/images/hole_counterdrill_angled.svg"))
);
} else {
ui->cutDiagram->setPixmap(
QPixmap(QString::fromUtf8(":/images/hole_counterdrill_flat.svg"))
);
}
baseFileName = "hole_counterdrill";
ui->HoleCutCountersinkAngle->setVisible(true);
ui->labelHoleCutCountersinkAngle->setVisible(true);
}
else {
if (isAngled) {
ui->cutDiagram->setPixmap(
QPixmap(QString::fromUtf8(":/images/hole_none_angled.svg"))
);
} else {
ui->cutDiagram->setPixmap(
QPixmap(QString::fromUtf8(":/images/hole_none_flat.svg"))
);
}
baseFileName = "hole_none";
ui->HoleCutCountersinkAngle->setVisible(false);
ui->labelHoleCutCountersinkAngle->setVisible(false);
}
if (isAngled) {
baseFileName += includeAngle ? "_angled_included" : "_angled";
} else {
baseFileName += "_flat";
}
ui->cutDiagram->setPixmap(
QPixmap(QString::fromUtf8((":images/" + baseFileName + ".svg").c_str()))
);
}
void TaskHoleParameters::holeCutCustomValuesChanged()
@@ -599,7 +554,7 @@ void TaskHoleParameters::depthChanged(int index)
ui->DrillPointAngled->setEnabled(DepthisDimension);
ui->DrillPointAngle->setEnabled(DepthisDimension);
ui->DrillForDepth->setEnabled(DepthisDimension);
setCutPixmap();
setCutDiagram();
}
void TaskHoleParameters::depthValueChanged(double value)
@@ -617,7 +572,7 @@ void TaskHoleParameters::drillPointChanged()
hole->DrillPoint.setValue(angled);
ui->DrillPointAngle->setEnabled(angled);
ui->DrillForDepth->setEnabled(angled);
setCutPixmap();
setCutDiagram();
recomputeFeature();
}
}
@@ -636,6 +591,7 @@ void TaskHoleParameters::drillForDepthChanged()
hole->DrillForDepth.setValue(ui->DrillForDepth->isChecked());
recomputeFeature();
}
setCutDiagram();
}
void TaskHoleParameters::taperedChanged()