[TD]Section UI changes

This commit is contained in:
wandererfan
2019-11-13 14:45:57 -05:00
committed by WandererFan
parent 57aa0cdb5c
commit e0a7284135
6 changed files with 355 additions and 153 deletions

View File

@@ -252,13 +252,13 @@ App::DocumentObjectExecReturn *DrawViewSection::execute(void)
if(!isReallyInBox(gp_Pnt(orgPnt.x,orgPnt.y,orgPnt.z), centerBox)) {
Base::Console().Warning("DVS: SectionOrigin doesn't intersect part in %s\n",getNameInDocument());
Base::Console().Warning("DVS: Using center of bounding box.\n");
double Xmin,Ymin,Zmin,Xmax,Ymax,Zmax;
centerBox.Get(Xmin,Ymin,Zmin,Xmax,Ymax,Zmax);
orgPnt = Base::Vector3d((Xmax + Xmin)/2.0,
(Ymax + Ymin)/2.0,
(Zmax + Zmin)/2.0);
SectionOrigin.setValue(orgPnt);
// Base::Console().Warning("DVS: Using center of bounding box.\n");
// double Xmin,Ymin,Zmin,Xmax,Ymax,Zmax;
// centerBox.Get(Xmin,Ymin,Zmin,Xmax,Ymax,Zmax);
// orgPnt = Base::Vector3d((Xmax + Xmin)/2.0,
// (Ymax + Ymin)/2.0,
// (Zmax + Zmin)/2.0);
// SectionOrigin.setValue(orgPnt);
}
// Make the extrusion face
@@ -281,35 +281,50 @@ App::DocumentObjectExecReturn *DrawViewSection::execute(void)
}
TopoDS_Shape rawShape = mkCut.Shape();
// BRepTools::Write(myShape, "DVSCopy.brep"); //debug
// BRepTools::Write(prism, "DVSTool.brep"); //debug
// BRepTools::Write(rawShape, "DVSResult.brep"); //debug
if (debugSection()) {
BRepTools::Write(myShape, "DVSCopy.brep"); //debug
BRepTools::Write(aProjFace, "DVSFace.brep"); //debug
BRepTools::Write(prism, "DVSTool.brep"); //debug
BRepTools::Write(rawShape, "DVSResult.brep"); //debug
}
Bnd_Box testBox;
BRepBndLib::Add(rawShape, testBox);
testBox.SetGap(0.0);
if (testBox.IsVoid()) { //prism & input don't intersect. rawShape is garbage, don't bother.
Base::Console().Message("INFO - DVS::execute - prism & input don't intersect\n");
if (testBox.IsVoid()) { //prism & input don't intersect. rawShape is garbage, don't bother.
Base::Console().Warning("DVS::execute - prism & input don't intersect - %s\n", Label.getValue());
return DrawView::execute();
}
m_cutShape = rawShape;
m_cutShape = TechDraw::moveShape(m_cutShape, //centre on origin
-SectionOrigin.getValue());
// m_cutShape = TechDraw::moveShape(m_cutShape, //centre on origin
// -SectionOrigin.getValue());
if (debugSection()) {
BRepTools::Write(m_cutShape, "DVSMCut.brep"); //debug
}
gp_Pnt inputCenter;
gp_Ax2 viewAxis;
try {
inputCenter = TechDraw::findCentroid(rawShape,
Direction.getValue());
TopoDS_Shape mirroredShape = TechDraw::mirrorShape(rawShape,
inputCenter,
getScale());
TopoDS_Shape scaledShape = TechDraw::scaleShape(rawShape,
getScale());
TopoDS_Shape mirroredShape = TechDraw::mirrorShape(scaledShape,
inputCenter,
1.0);
// getScale());
viewAxis = getSectionCS(SectionDirection.getValueAsString());
if (!DrawUtil::fpCompare(Rotation.getValue(),0.0)) {
mirroredShape = TechDraw::rotateShape(mirroredShape,
viewAxis,
Rotation.getValue());
}
if (debugSection()) {
BRepTools::Write(scaledShape, "DVSScaled.brep"); //debug
BRepTools::Write(mirroredShape, "DVSMirror.brep"); //debug
DrawUtil::dumpCS("DVS::execute - CS to GO", viewAxis);
}
geometryObject = buildGeometryObject(mirroredShape,viewAxis);
#if MOD_TECHDRAW_HANDLE_FACES
@@ -552,14 +567,75 @@ bool DrawViewSection::isReallyInBox (const gp_Pnt p, const Bnd_Box& bb) const
return !bb.IsOut(p);
}
void DrawViewSection::setNormalFromBase(const std::string sectionName)
void DrawViewSection::setCSFromBase(const std::string sectionName)
{
// Base::Console().Message("DVS::setNormalFromBase(%s)\n", sectionName.c_str());
Base::Vector3d normal = getSectionVector(sectionName);
Direction.setValue(normal);
SectionNormal.setValue(normal);
gp_Ax2 CS = getCSFromBase(sectionName);
gp_Dir gDir = CS.Direction();
Base::Vector3d vDir(gDir.X(),
gDir.Y(),
gDir.Z());
Direction.setValue(vDir);
SectionNormal.setValue(vDir);
}
gp_Ax2 DrawViewSection::getCSFromBase(const std::string sectionName)
{
// Base::Console().Message("DVS::getCSFromBase(%s)\n", sectionName.c_str());
Base::Vector3d sectionNormal;
Base::Vector3d sectionXDir;
Base::Vector3d origin(0.0, 0.0, 0.0);
Base::Vector3d dvpDir = getBaseDVP()->Direction.getValue();
gp_Ax2 dvpCS = getBaseDVP()->getViewAxis(origin,
dvpDir);
// flip); //what to do with this!??
if (debugSection()) {
DrawUtil::dumpCS("DVS::getCSFromBase - dvp VA", dvpCS);
}
gp_Dir dvpUp = dvpCS.YDirection();
gp_Dir dvpRight = dvpCS.XDirection();
Base::Vector3d dir = getBaseDVP()->Direction.getValue();
Base::Vector3d up(dvpUp.X(), dvpUp.Y(), dvpUp.Z());
Base::Vector3d right(dvpRight.X(), dvpRight.Y(), dvpRight.Z());
if (sectionName == "Up") {
// sectionNormal = up * -1.0;
sectionNormal = up;
sectionXDir = right; //
} else if (sectionName == "Down") {
// sectionNormal = up;
sectionNormal = up * -1.0;
sectionXDir = right;
} else if (sectionName == "Left") {
sectionNormal = right;
sectionXDir = dir * -1.0;
} else if (sectionName == "Right") {
sectionNormal = right * -1.0;
sectionXDir = dir;
} else {
Base::Console().Log("Error - DVS::getCSFromBase - bad sectionName: %s\n",sectionName.c_str());
sectionNormal = right;
sectionXDir = dir;
}
gp_Dir dvsDir(sectionNormal.x,
sectionNormal.y,
sectionNormal.z);
gp_Dir dvsXDir(sectionXDir.x,
sectionXDir.y,
sectionXDir.z);
gp_Pnt dvsLoc(0.0, 0.0, 0.0);
gp_Ax2 CS(dvsLoc,
dvsDir,
dvsXDir);
if (debugSection()) {
DrawUtil::dumpCS("DVS::getCSFromBase - sectionCS out", CS);
}
return CS;
}
//! calculate the section Normal/Projection Direction given section name
//TODO: this should take base view rotation into account.
Base::Vector3d DrawViewSection::getSectionVector (const std::string sectionName)
@@ -788,6 +864,15 @@ void DrawViewSection::getParameters()
FuseBeforeCut.setValue(fuseFirst);
}
bool DrawViewSection::debugSection(void) const
{
Base::Reference<ParameterGrp> hGrp = App::GetApplication().GetUserParameter()
.GetGroup("BaseApp")->GetGroup("Preferences")->GetGroup("Mod/TechDraw/debug");
bool result = hGrp->GetBool("debugSection",false);
return result;
}
// Python Drawing feature ---------------------------------------------------------
namespace App {

View File

@@ -91,7 +91,8 @@ public:
std::vector<TechDraw::Face*> getFaceGeometry();
Base::Vector3d getSectionVector (const std::string sectionName);
void setNormalFromBase(const std::string sectionName);
void setCSFromBase(const std::string sectionName);
gp_Ax2 getCSFromBase(const std::string sectionName);
gp_Ax2 rotateCSCardinal(gp_Ax2 oldCS, int cardinal) const;
gp_Ax2 rotateCSArbitrary(gp_Ax2 oldCS,
@@ -121,13 +122,14 @@ protected:
std::vector<TopoDS_Wire> sectionFaceWires;
std::vector<LineSet> m_lineSets;
gp_Pln getSectionPlane() const;
TopoDS_Compound findSectionPlaneIntersections(const TopoDS_Shape& shape);
TopoDS_Face projectFace(const TopoDS_Shape &face,
gp_Pnt faceCenter,
const Base::Vector3d &direction);
void getParameters(void);
bool debugSection(void) const;
TopoDS_Shape m_cutShape;
};

View File

@@ -810,7 +810,7 @@ TopoDS_Shape TechDraw::rotateShape(const TopoDS_Shape &input,
return transShape;
}
//!scales a shape about a origin
//!scales a shape about origin
TopoDS_Shape TechDraw::scaleShape(const TopoDS_Shape &input,
double scale)
{

View File

@@ -98,6 +98,8 @@ TaskSectionView::TaskSectionView(TechDraw::DrawViewPart* base) :
this, SLOT(onRightClicked(bool)));
connect(ui->pbLeft, SIGNAL(clicked(bool)),
this, SLOT(onLeftClicked(bool)));
connect(ui->pbApply, SIGNAL(clicked(bool)),
this, SLOT(onApplyClicked(bool)));
setUiPrimary();
}
@@ -137,8 +139,10 @@ TaskSectionView::TaskSectionView(TechDraw::DrawViewSection* section) :
this, SLOT(onRightClicked(bool)));
connect(ui->pbLeft, SIGNAL(clicked(bool)),
this, SLOT(onLeftClicked(bool)));
connect(ui->pbApply, SIGNAL(clicked(bool)),
this, SLOT(onApplyClicked(bool)));
m_dirName = m_section->SectionDirection.getValue();
m_dirName = m_section->SectionDirection.getValueAsString();
saveSectionState();
setUiEdit();
}
@@ -193,7 +197,7 @@ void TaskSectionView::saveSectionState()
m_saveNormal = m_section->SectionNormal.getValue();
m_saveDirection = m_section->Direction.getValue();
m_saveOrigin = m_section->SectionOrigin.getValue();
m_saveDirName = m_section->SectionDirection.getValue();
m_saveDirName = m_section->SectionDirection.getValueAsString();
m_saved = true;
}
}
@@ -253,9 +257,17 @@ void TaskSectionView::onRightClicked(bool b)
applyQuick("Right");
}
bool TaskSectionView::apply()
void TaskSectionView::onApplyClicked(bool b)
{
// Base::Console().Message("TSV::apply()\n");
// Base::Console().Message("TSV::onApplyClicked()\n");
Q_UNUSED(b);
checkAll(false);
apply();
}
void TaskSectionView::apply(void)
{
// Base::Console().Message("TSV::apply() - m_dirName: %s\n", m_dirName.c_str());
if (m_dirName.empty()) {
std::string msg = Base::Tools::toStdString(tr("TSV::apply - No section direction picked yet"));
Base::Console().Error((msg + "\n").c_str());
@@ -263,7 +275,6 @@ bool TaskSectionView::apply()
checkAll(false);
applyQuick(m_dirName);
}
return true;
}
void TaskSectionView::checkAll(bool b)
@@ -280,13 +291,11 @@ void TaskSectionView::applyQuick(std::string dir)
// Base::Console().Message("TSV::applyQuick(%s)\n", dir.c_str());
m_dirName = dir;
Gui::Command::openCommand("Apply Quick");
m_dirName = dir;
if (m_section == nullptr) {
m_section = createSectionView();
}
updateSectionView();
m_section->recomputeFeature();
// m_section->requestPaint();
m_base->requestPaint();
}
@@ -354,18 +363,18 @@ void TaskSectionView::updateSectionView(void)
Command::doCommand(Command::Doc,"App.activeDocument().%s.SectionSymbol = '%s'",
sectionName.c_str(),
temp.c_str());
m_section->setNormalFromBase(m_dirName.c_str());
m_section->setCSFromBase(m_dirName.c_str());
}
}
void TaskSectionView::saveButtons(QPushButton* btnOK,
QPushButton* btnCancel,
QPushButton* btnApply)
{
m_btnOK = btnOK;
m_btnCancel = btnCancel;
m_btnApply = btnApply;
}
//void TaskSectionView::saveButtons(QPushButton* btnOK,
// QPushButton* btnCancel,
// QPushButton* btnApply)
//{
// m_btnOK = btnOK;
// m_btnCancel = btnCancel;
// m_btnApply = btnApply;
//}
//std::string TaskSectionView::prefViewSection()
//{
@@ -385,12 +394,10 @@ bool TaskSectionView::accept()
if (m_section == nullptr) {
apply();
}
Gui::Command::updateActive();
Gui::Command::commitCommand();
} else {
Gui::Command::openCommand("Edit SectionView");
try {
updateSectionView();
apply();
}
catch (...) {
Base::Console().Error("TSV::accept - failed to update section\n");
@@ -401,7 +408,6 @@ bool TaskSectionView::accept()
}
Gui::Command::doCommand(Gui::Command::Gui,"Gui.ActiveDocument.resetEdit()");
if (m_section != nullptr) {
// m_section->recomputeFeature();
m_section->requestPaint();
}
if (m_base != nullptr) {
@@ -424,13 +430,11 @@ bool TaskSectionView::reject()
"App.activeDocument().removeObject('%s')",
SectionName.c_str());
} else {
Base::Console().Message("TSV::reject() - edit mode\n");
restoreSectionState();
//check undo stack?
m_section->requestPaint();
m_base->requestPaint();
}
}
Gui::Command::doCommand(Gui::Command::Gui,"App.activeDocument().recompute()");
@@ -475,42 +479,17 @@ void TaskDlgSectionView::update()
//widget->updateTask();
}
void TaskDlgSectionView::modifyStandardButtons(QDialogButtonBox* box)
{
QPushButton* btnOK = box->button(QDialogButtonBox::Ok);
QPushButton* btnCancel = box->button(QDialogButtonBox::Cancel);
QPushButton* btnApply = box->button(QDialogButtonBox::Apply);
widget->saveButtons(btnOK, btnCancel, btnApply);
}
//==== calls from the TaskView ===============================================================
void TaskDlgSectionView::open()
{
}
void TaskDlgSectionView::clicked(int i)
{
// Q_UNUSED(i);
// Base::Console().Message("TDSV::clicked(%X)\n",i);
if (i == QMessageBox::Apply) {
widget->apply();
}
}
bool TaskDlgSectionView::accept()
{
widget->accept();
return true;
}
//bool TaskDlgSectionView::apply()
//{
// Base::Console().Message("TDSV::apply()\n");
// widget->apply();
// return true;
//}
bool TaskDlgSectionView::reject()
{
widget->reject();

View File

@@ -48,19 +48,14 @@ public:
public:
virtual bool accept();
virtual bool apply();
virtual bool reject();
void modifyStandardButtons(QDialogButtonBox* box);
void saveButtons(QPushButton* btnOK,
QPushButton* btnCancel,
QPushButton* btnApply);
protected Q_SLOTS:
void onUpClicked(bool b);
void onDownClicked(bool b);
void onLeftClicked(bool b);
void onRightClicked(bool b);
void onApplyClicked(bool b);
protected:
void blockButtons(bool b);
@@ -69,6 +64,7 @@ protected:
void saveSectionState();
void restoreSectionState();
void apply(void);
void applyQuick(std::string dir);
void applyAligned(void);
@@ -80,8 +76,6 @@ protected:
void checkAll(bool b);
// std::string prefViewSection();
private:
Ui_TaskSectionView * ui;
TechDraw::DrawViewPart* m_base;
@@ -99,10 +93,6 @@ private:
std::string m_dirName;
QPushButton* m_btnOK;
QPushButton* m_btnCancel;
QPushButton* m_btnApply;
bool m_createMode;
bool m_saved;
@@ -121,7 +111,7 @@ public:
/// is called the TaskView when the dialog is opened
virtual void open();
/// is called by the framework if an button is clicked which has no accept or reject role
virtual void clicked(int);
/* virtual void clicked(int);*/
/// is called by the framework if the dialog is accepted (Ok)
virtual bool accept();
/// is called by the framework if the dialog is rejected (Cancel)
@@ -133,8 +123,8 @@ public:
{ return false; }
virtual QDialogButtonBox::StandardButtons getStandardButtons() const
{ return QDialogButtonBox::Ok | QDialogButtonBox::Apply | QDialogButtonBox::Cancel; }
virtual void modifyStandardButtons(QDialogButtonBox* box);
{ return QDialogButtonBox::Ok | QDialogButtonBox::Cancel; }
/* virtual void modifyStandardButtons(QDialogButtonBox* box);*/
void update();

View File

@@ -6,8 +6,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>434</width>
<height>368</height>
<width>368</width>
<height>450</height>
</rect>
</property>
<property name="sizePolicy">
@@ -19,7 +19,7 @@
<property name="minimumSize">
<size>
<width>250</width>
<height>300</height>
<height>450</height>
</size>
</property>
<property name="windowTitle">
@@ -37,7 +37,7 @@
<property name="minimumSize">
<size>
<width>350</width>
<height>350</height>
<height>400</height>
</size>
</property>
<property name="frameShape">
@@ -49,6 +49,9 @@
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<layout class="QFormLayout" name="formLayout_2">
<property name="fieldGrowthPolicy">
<enum>QFormLayout::AllNonFixedFieldsGrow</enum>
</property>
<item row="1" column="0">
<widget class="QLabel" name="label_7">
<property name="text">
@@ -66,7 +69,7 @@
<item row="2" column="0">
<widget class="QLabel" name="label_2">
<property name="text">
<string>Symbol</string>
<string>Identifier</string>
</property>
</widget>
</item>
@@ -77,62 +80,25 @@
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label">
<property name="text">
<string>Section Origin X</string>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="Gui::QuantitySpinBox" name="sbOrgX">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Location of section plane in 3D coordinates&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="unit" stdset="0">
<string notr="true"/>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QLabel" name="label_4">
<property name="text">
<string>Section Origin Y</string>
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="Gui::QuantitySpinBox" name="sbOrgY">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Location of section plane in 3D coordinates&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="unit" stdset="0">
<string notr="true"/>
</property>
</widget>
</item>
<item row="5" column="0">
<widget class="QLabel" name="label_5">
<property name="text">
<string>Section Origin Z</string>
</property>
</widget>
</item>
<item row="5" column="1">
<widget class="Gui::QuantitySpinBox" name="sbOrgZ">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Location of section plane in 3D coordinates&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="unit" stdset="0">
<string notr="true"/>
</property>
</widget>
</item>
</layout>
</item>
<item>
<widget class="Line" name="line">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_4">
<property name="text">
<string>Section Orientation</string>
</property>
</widget>
</item>
<item>
<layout class="QGridLayout" name="gridLayout_3">
<item row="1" column="3">
<item row="0" column="3">
<widget class="QPushButton" name="pbRight">
<property name="toolTip">
<string>Looking right</string>
@@ -156,7 +122,7 @@
</property>
</widget>
</item>
<item row="1" column="0">
<item row="0" column="0">
<widget class="QPushButton" name="pbUp">
<property name="toolTip">
<string>Looking up</string>
@@ -186,7 +152,7 @@
</property>
</widget>
</item>
<item row="1" column="2">
<item row="0" column="2">
<widget class="QPushButton" name="pbLeft">
<property name="toolTip">
<string>Looking left</string>
@@ -210,7 +176,7 @@
</property>
</widget>
</item>
<item row="1" column="1">
<item row="0" column="1">
<widget class="QPushButton" name="pbDown">
<property name="toolTip">
<string>Looking down</string>
@@ -234,19 +200,199 @@
</property>
</widget>
</item>
</layout>
</item>
<item>
<widget class="Line" name="line_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_3">
<property name="text">
<string>Section Plane Location</string>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item>
<layout class="QFormLayout" name="formLayout">
<property name="fieldGrowthPolicy">
<enum>QFormLayout::AllNonFixedFieldsGrow</enum>
</property>
<item row="0" column="0">
<widget class="QLabel" name="label_9">
<property name="font">
<font>
<weight>50</weight>
<bold>false</bold>
</font>
<widget class="QLabel" name="label_10">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>150</width>
<height>0</height>
</size>
</property>
<property name="text">
<string>X</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="Gui::QuantitySpinBox" name="sbOrgX">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>150</width>
<height>24</height>
</size>
</property>
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Location of section plane in 3D coordinates&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="unit" stdset="0">
<string notr="true"/>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_11">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>150</width>
<height>0</height>
</size>
</property>
<property name="text">
<string>Y</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="Gui::QuantitySpinBox" name="sbOrgY">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>150</width>
<height>24</height>
</size>
</property>
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Location of section plane in 3D coordinates&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="unit" stdset="0">
<string notr="true"/>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_12">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>150</width>
<height>0</height>
</size>
</property>
<property name="text">
<string>Z</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="Gui::QuantitySpinBox" name="sbOrgZ">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>150</width>
<height>24</height>
</size>
</property>
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Location of section plane in 3D coordinates&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="unit" stdset="0">
<string notr="true"/>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="1">
<widget class="QPushButton" name="pbApply">
<property name="text">
<string>Apply</string>
</property>
</widget>
</item>
<item row="0" column="0">
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="0" column="2">
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
<item>