TechDraw: Implement smart dimension tool.
This commit is contained in:
@@ -25,6 +25,7 @@
|
||||
#include "PreCompiled.h"
|
||||
|
||||
#include <Base/Tools.h>
|
||||
#include <App/Application.h>
|
||||
|
||||
#include "DlgPrefsTechDrawDimensionsImp.h"
|
||||
#include "ui_DlgPrefsTechDrawDimensions.h"
|
||||
@@ -67,6 +68,61 @@ void DlgPrefsTechDrawDimensionsImp::saveSettings()
|
||||
ui->pdsbGapISO->onSave();
|
||||
ui->pdsbGapASME->onSave();
|
||||
ui->pdsbLineSpacingFactorISO->onSave();
|
||||
|
||||
enum
|
||||
{
|
||||
DimensionSingleTool,
|
||||
DimensionSeparateTools,
|
||||
DimensionBoth
|
||||
};
|
||||
|
||||
// Dimensioning constraints mode
|
||||
ParameterGrp::handle hGrp = App::GetApplication().GetParameterGroupByPath(
|
||||
"User parameter:BaseApp/Preferences/Mod/TechDraw/dimensioning");
|
||||
bool singleTool = true;
|
||||
bool SeparatedTools = false;
|
||||
int index = ui->dimensioningMode->currentIndex();
|
||||
switch (index) {
|
||||
case DimensionSeparateTools:
|
||||
singleTool = false;
|
||||
SeparatedTools = true;
|
||||
break;
|
||||
case DimensionBoth:
|
||||
singleTool = true;
|
||||
SeparatedTools = true;
|
||||
break;
|
||||
}
|
||||
hGrp->SetBool("SingleDimensioningTool", singleTool);
|
||||
hGrp->SetBool("SeparatedDimensioningTools", SeparatedTools);
|
||||
|
||||
ui->radiusDiameterMode->setEnabled(index != 1);
|
||||
|
||||
enum
|
||||
{
|
||||
DimensionAutoRadiusDiam,
|
||||
DimensionDiameter,
|
||||
DimensionRadius
|
||||
};
|
||||
|
||||
bool Diameter = true;
|
||||
bool Radius = true;
|
||||
index = ui->radiusDiameterMode->currentIndex();
|
||||
switch (index) {
|
||||
case DimensionDiameter:
|
||||
Diameter = true;
|
||||
Radius = false;
|
||||
break;
|
||||
case DimensionRadius:
|
||||
Diameter = false;
|
||||
Radius = true;
|
||||
break;
|
||||
}
|
||||
hGrp->SetBool("DimensioningDiameter", Diameter);
|
||||
hGrp->SetBool("DimensioningRadius", Radius);
|
||||
|
||||
if (property("dimensioningMode").toInt() != ui->dimensioningMode->currentIndex()) {
|
||||
requireRestart();
|
||||
}
|
||||
}
|
||||
|
||||
void DlgPrefsTechDrawDimensionsImp::loadSettings()
|
||||
@@ -101,6 +157,42 @@ void DlgPrefsTechDrawDimensionsImp::loadSettings()
|
||||
ui->pdsbGapASME->onRestore();
|
||||
ui->pdsbLineSpacingFactorISO->onRestore();
|
||||
|
||||
|
||||
// Dimensioning constraints mode
|
||||
ui->dimensioningMode->clear();
|
||||
ui->dimensioningMode->addItem(tr("Single tool"));
|
||||
ui->dimensioningMode->addItem(tr("Separated tools"));
|
||||
ui->dimensioningMode->addItem(tr("Both"));
|
||||
|
||||
ParameterGrp::handle hGrp = App::GetApplication().GetParameterGroupByPath(
|
||||
"User parameter:BaseApp/Preferences/Mod/TechDraw/dimensioning");
|
||||
bool singleTool = hGrp->GetBool("SingleDimensioningTool", true);
|
||||
bool SeparatedTools = hGrp->GetBool("SeparatedDimensioningTools", true);
|
||||
int index = SeparatedTools ? (singleTool ? 2 : 1) : 0;
|
||||
ui->dimensioningMode->setCurrentIndex(index);
|
||||
setProperty("dimensioningMode", index);
|
||||
connect(ui->dimensioningMode,
|
||||
QOverload<int>::of(&QComboBox::currentIndexChanged),
|
||||
this,
|
||||
&DlgPrefsTechDrawDimensionsImp::dimensioningModeChanged);
|
||||
|
||||
ui->radiusDiameterMode->setEnabled(index != 1);
|
||||
|
||||
// Dimensioning constraints mode
|
||||
ui->radiusDiameterMode->clear();
|
||||
ui->radiusDiameterMode->addItem(tr("Auto"));
|
||||
ui->radiusDiameterMode->addItem(tr("Diameter"));
|
||||
ui->radiusDiameterMode->addItem(tr("Radius"));
|
||||
|
||||
bool Diameter = hGrp->GetBool("DimensioningDiameter", true);
|
||||
bool Radius = hGrp->GetBool("DimensioningRadius", true);
|
||||
index = Diameter ? (Radius ? 0 : 1) : 2;
|
||||
ui->radiusDiameterMode->setCurrentIndex(index);
|
||||
}
|
||||
|
||||
void DlgPrefsTechDrawDimensionsImp::dimensioningModeChanged(int index)
|
||||
{
|
||||
ui->radiusDiameterMode->setEnabled(index != 1);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user