Added combined dialog for TC editing - refactored UI controller into separate class.
This commit is contained in:
@@ -54,6 +54,7 @@
|
||||
<file>panels/DlgJobChooser.ui</file>
|
||||
<file>panels/DlgJobCreate.ui</file>
|
||||
<file>panels/DlgSelectPostProcessor.ui</file>
|
||||
<file>panels/DlgToolControllerEdit.ui</file>
|
||||
<file>panels/DlgToolCopy.ui</file>
|
||||
<file>panels/DlgTCChooser.ui</file>
|
||||
<file>panels/DogboneEdit.ui</file>
|
||||
|
||||
534
src/Mod/Path/Gui/Resources/panels/DlgToolControllerEdit.ui
Normal file
534
src/Mod/Path/Gui/Resources/panels/DlgToolControllerEdit.ui
Normal file
@@ -0,0 +1,534 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>Dialog</class>
|
||||
<widget class="QDialog" name="Dialog">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>492</width>
|
||||
<height>648</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Dialog</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<item>
|
||||
<widget class="QToolBox" name="toolBox">
|
||||
<widget class="QWidget" name="toolBoxPage1" native="true">
|
||||
<attribute name="label">
|
||||
<string>Controller</string>
|
||||
</attribute>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_2">
|
||||
<item>
|
||||
<widget class="QGroupBox" name="groupBox_4">
|
||||
<property name="title">
|
||||
<string>Controller Name / Tool Number</string>
|
||||
</property>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||
<item>
|
||||
<widget class="QLineEdit" name="tcName">
|
||||
<property name="readOnly">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QSpinBox" name="tcNumber"/>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QFrame" name="frame">
|
||||
<property name="frameShape">
|
||||
<enum>QFrame::StyledPanel</enum>
|
||||
</property>
|
||||
<property name="frameShadow">
|
||||
<enum>QFrame::Raised</enum>
|
||||
</property>
|
||||
<layout class="QFormLayout" name="formLayout">
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="label">
|
||||
<property name="text">
|
||||
<string>Horiz. Feed</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="label_2">
|
||||
<property name="text">
|
||||
<string>Vert. Feed</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="0">
|
||||
<widget class="QLabel" name="label_5">
|
||||
<property name="text">
|
||||
<string>Horiz Rapid</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="0">
|
||||
<widget class="QLabel" name="label_4">
|
||||
<property name="text">
|
||||
<string>Vert Rapid</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="Gui::InputField" name="horizFeed">
|
||||
<property name="minimum" stdset="0">
|
||||
<double>0.000000000000000</double>
|
||||
</property>
|
||||
<property name="unit" stdset="0">
|
||||
<string notr="true">mm/s</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="Gui::InputField" name="vertFeed">
|
||||
<property name="minimum" stdset="0">
|
||||
<double>0.000000000000000</double>
|
||||
</property>
|
||||
<property name="unit" stdset="0">
|
||||
<string notr="true">mm/s</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="1">
|
||||
<widget class="Gui::InputField" name="horizRapid">
|
||||
<property name="minimum" stdset="0">
|
||||
<double>0.000000000000000</double>
|
||||
</property>
|
||||
<property name="unit" stdset="0">
|
||||
<string notr="true">mm/s</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="1">
|
||||
<widget class="Gui::InputField" name="vertRapid">
|
||||
<property name="minimum" stdset="0">
|
||||
<double>0.000000000000000</double>
|
||||
</property>
|
||||
<property name="unit" stdset="0">
|
||||
<string notr="true">mm/s</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QGroupBox" name="groupBox_3">
|
||||
<property name="title">
|
||||
<string>Spindle</string>
|
||||
</property>
|
||||
<layout class="QFormLayout" name="formLayout_2">
|
||||
<property name="fieldGrowthPolicy">
|
||||
<enum>QFormLayout::AllNonFixedFieldsGrow</enum>
|
||||
</property>
|
||||
<item row="0" column="1">
|
||||
<widget class="QComboBox" name="spindleDirection">
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Forward</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Reverse</string>
|
||||
</property>
|
||||
</item>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="0">
|
||||
<widget class="QDoubleSpinBox" name="spindleSpeed">
|
||||
<property name="minimum">
|
||||
<double>0.000000000000000</double>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<double>100000.000000000000000</double>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="verticalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>40</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<widget class="QWidget" name="toolBoxPage2" native="true">
|
||||
<attribute name="label">
|
||||
<string>Tool</string>
|
||||
</attribute>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_3">
|
||||
<item>
|
||||
<widget class="QGroupBox" name="groupBox_2">
|
||||
<property name="title">
|
||||
<string>Tool Properties</string>
|
||||
</property>
|
||||
<layout class="QFormLayout" name="formLayout_3">
|
||||
<property name="fieldGrowthPolicy">
|
||||
<enum>QFormLayout::AllNonFixedFieldsGrow</enum>
|
||||
</property>
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="label_3">
|
||||
<property name="text">
|
||||
<string>Name</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="QLineEdit" name="toolName">
|
||||
<property name="maxLength">
|
||||
<number>50</number>
|
||||
</property>
|
||||
<property name="placeholderText">
|
||||
<string>Display Name</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="0">
|
||||
<widget class="QLabel" name="label_6">
|
||||
<property name="text">
|
||||
<string>Type</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="1">
|
||||
<widget class="QComboBox" name="toolType">
|
||||
<property name="currentIndex">
|
||||
<number>6</number>
|
||||
</property>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Drill</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>CenterDrill</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>CounterSink</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>CounterBore</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Reamer</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Tap</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>EndMill</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>SlotCutter</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>BallEndMill</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>ChamferMill</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>CornerRound</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Engraver</string>
|
||||
</property>
|
||||
</item>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="0">
|
||||
<widget class="QLabel" name="label_7">
|
||||
<property name="text">
|
||||
<string>Material</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="1">
|
||||
<widget class="QComboBox" name="toolMaterial">
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>HighSpeedSteel</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>HighCarbonSteel</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>CastAlloy</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Carbide</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Ceramics</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Diamond</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Sialon</string>
|
||||
</property>
|
||||
</item>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="6" column="0">
|
||||
<widget class="QLabel" name="label_8">
|
||||
<property name="text">
|
||||
<string>Diameter</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="8" column="0">
|
||||
<widget class="QLabel" name="label_9">
|
||||
<property name="text">
|
||||
<string>Length Offset</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="12" column="0">
|
||||
<widget class="QLabel" name="label_10">
|
||||
<property name="text">
|
||||
<string>Flat Radius</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="14" column="0">
|
||||
<widget class="QLabel" name="label_11">
|
||||
<property name="text">
|
||||
<string>Corner Radius</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="16" column="0">
|
||||
<widget class="QLabel" name="label_12">
|
||||
<property name="text">
|
||||
<string>Cutting Edge Angle</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="18" column="0">
|
||||
<widget class="QLabel" name="label_13">
|
||||
<property name="text">
|
||||
<string>Cutting Edge Height</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="6" column="1">
|
||||
<widget class="Gui::InputField" name="toolDiameter">
|
||||
<property name="text">
|
||||
<string>0 mm</string>
|
||||
</property>
|
||||
<property name="singleStep" stdset="0">
|
||||
<double>0.125000000000000</double>
|
||||
</property>
|
||||
<property name="maximum" stdset="0">
|
||||
<double>100.000000000000000</double>
|
||||
</property>
|
||||
<property name="minimum" stdset="0">
|
||||
<double>0.000000000000000</double>
|
||||
</property>
|
||||
<property name="unit" stdset="0">
|
||||
<string notr="true">mm</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="8" column="1">
|
||||
<widget class="Gui::InputField" name="toolLengthOffset">
|
||||
<property name="text">
|
||||
<string>0 mm</string>
|
||||
</property>
|
||||
<property name="maximum" stdset="0">
|
||||
<double>100.000000000000000</double>
|
||||
</property>
|
||||
<property name="minimum" stdset="0">
|
||||
<double>0.000000000000000</double>
|
||||
</property>
|
||||
<property name="unit" stdset="0">
|
||||
<string notr="true">mm</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="12" column="1">
|
||||
<widget class="Gui::InputField" name="toolFlatRadius">
|
||||
<property name="text">
|
||||
<string>0 mm</string>
|
||||
</property>
|
||||
<property name="maximum" stdset="0">
|
||||
<double>100.000000000000000</double>
|
||||
</property>
|
||||
<property name="minimum" stdset="0">
|
||||
<double>0.000000000000000</double>
|
||||
</property>
|
||||
<property name="unit" stdset="0">
|
||||
<string notr="true">mm</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="14" column="1">
|
||||
<widget class="Gui::InputField" name="toolCornerRadius">
|
||||
<property name="text">
|
||||
<string>0 mm</string>
|
||||
</property>
|
||||
<property name="maximum" stdset="0">
|
||||
<double>100.000000000000000</double>
|
||||
</property>
|
||||
<property name="minimum" stdset="0">
|
||||
<double>0.000000000000000</double>
|
||||
</property>
|
||||
<property name="unit" stdset="0">
|
||||
<string notr="true">mm</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="18" column="1">
|
||||
<widget class="Gui::InputField" name="toolCuttingEdgeHeight">
|
||||
<property name="text">
|
||||
<string>0 mm</string>
|
||||
</property>
|
||||
<property name="maximum" stdset="0">
|
||||
<double>100.000000000000000</double>
|
||||
</property>
|
||||
<property name="minimum" stdset="0">
|
||||
<double>0.000000000000000</double>
|
||||
</property>
|
||||
<property name="unit" stdset="0">
|
||||
<string notr="true">mm</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="16" column="1">
|
||||
<widget class="Gui::InputField" name="toolCuttingEdgeAngle">
|
||||
<property name="unit" stdset="0">
|
||||
<string notr="true">°</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="label_14">
|
||||
<property name="frameShape">
|
||||
<enum>QFrame::WinPanel</enum>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Any modifications only affect this ToolController!</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
<property name="wordWrap">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QDialogButtonBox" name="buttonBox">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="standardButtons">
|
||||
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<customwidgets>
|
||||
<customwidget>
|
||||
<class>Gui::InputField</class>
|
||||
<extends>QLineEdit</extends>
|
||||
<header>Gui/InputField.h</header>
|
||||
</customwidget>
|
||||
</customwidgets>
|
||||
<resources/>
|
||||
<connections>
|
||||
<connection>
|
||||
<sender>buttonBox</sender>
|
||||
<signal>accepted()</signal>
|
||||
<receiver>Dialog</receiver>
|
||||
<slot>accept()</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel">
|
||||
<x>248</x>
|
||||
<y>254</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel">
|
||||
<x>157</x>
|
||||
<y>274</y>
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
<connection>
|
||||
<sender>buttonBox</sender>
|
||||
<signal>rejected()</signal>
|
||||
<receiver>Dialog</receiver>
|
||||
<slot>reject()</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel">
|
||||
<x>316</x>
|
||||
<y>260</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel">
|
||||
<x>286</x>
|
||||
<y>274</y>
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
</connections>
|
||||
</ui>
|
||||
@@ -86,8 +86,8 @@
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>378</width>
|
||||
<height>477</height>
|
||||
<width>294</width>
|
||||
<height>309</height>
|
||||
</rect>
|
||||
</property>
|
||||
<attribute name="label">
|
||||
@@ -225,8 +225,8 @@
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>378</width>
|
||||
<height>403</height>
|
||||
<width>368</width>
|
||||
<height>399</height>
|
||||
</rect>
|
||||
</property>
|
||||
<attribute name="label">
|
||||
@@ -443,8 +443,8 @@
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>378</width>
|
||||
<height>403</height>
|
||||
<width>142</width>
|
||||
<height>41</height>
|
||||
</rect>
|
||||
</property>
|
||||
<attribute name="label">
|
||||
@@ -468,8 +468,8 @@
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>378</width>
|
||||
<height>403</height>
|
||||
<width>142</width>
|
||||
<height>41</height>
|
||||
</rect>
|
||||
</property>
|
||||
<attribute name="label">
|
||||
@@ -532,12 +532,18 @@
|
||||
</column>
|
||||
<column>
|
||||
<property name="text">
|
||||
<string>H-Feed</string>
|
||||
<string>Feed</string>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset theme="object-flip-horizontal"/>
|
||||
</property>
|
||||
</column>
|
||||
<column>
|
||||
<property name="text">
|
||||
<string>V-Feed</string>
|
||||
<string>Feed</string>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset theme="object-flip-vertical"/>
|
||||
</property>
|
||||
</column>
|
||||
<column>
|
||||
@@ -744,6 +750,9 @@
|
||||
<item row="0" column="1">
|
||||
<widget class="Gui::InputField" name="defaultSafeHeight"/>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="Gui::InputField" name="defaultClearanceHeight"/>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="label_15">
|
||||
<property name="text">
|
||||
@@ -751,9 +760,6 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="Gui::InputField" name="defaultClearanceHeight"/>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
@@ -782,6 +788,46 @@
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QGroupBox" name="groupBox">
|
||||
<property name="title">
|
||||
<string>Rapid Speed</string>
|
||||
</property>
|
||||
<property name="checkable">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<layout class="QFormLayout" name="formLayout">
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="label_3">
|
||||
<property name="text">
|
||||
<string>Horizontal</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="Gui::InputField" name="lineEdit"/>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="Gui::InputField" name="lineEdit_2"/>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="label_4">
|
||||
<property name="text">
|
||||
<string>Vertical</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
<zorder>label_15</zorder>
|
||||
<zorder>label_3</zorder>
|
||||
<zorder>lineEdit</zorder>
|
||||
<zorder>lineEdit_2</zorder>
|
||||
<zorder>label_4</zorder>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="verticalSpacer_3">
|
||||
<property name="orientation">
|
||||
|
||||
@@ -132,7 +132,7 @@ class ObjectOp(PathOp.ObjectOp):
|
||||
obj.Side = "Inside"
|
||||
|
||||
except Exception as e:
|
||||
PathLog.error(translate("PatArea", "Error in calculating depths: %s" % e))
|
||||
PathLog.error(translate("PatArea", "Error in calculating depths: %s") % e)
|
||||
obj.StartDepth = 5.0
|
||||
obj.ClearanceHeight = 10.0
|
||||
obj.SafeHeight = 8.0
|
||||
|
||||
@@ -96,6 +96,10 @@ class TaskPanel:
|
||||
self.deleteOnReject = deleteOnReject
|
||||
self.form = FreeCADGui.PySideUic.loadUi(":/panels/PathEdit.ui")
|
||||
|
||||
vUnit = FreeCAD.Units.Quantity(1, FreeCAD.Units.Velocity).getUserPreferred()[2]
|
||||
self.form.toolControllerList.horizontalHeaderItem(1).setText('#')
|
||||
self.form.toolControllerList.horizontalHeaderItem(2).setText(vUnit)
|
||||
self.form.toolControllerList.horizontalHeaderItem(3).setText(vUnit)
|
||||
self.form.toolControllerList.horizontalHeader().setResizeMode(0, QtGui.QHeaderView.Stretch)
|
||||
self.form.toolControllerList.resizeColumnsToContents()
|
||||
|
||||
@@ -110,7 +114,6 @@ class TaskPanel:
|
||||
for o in PathJob.ObjectJob.baseCandidates():
|
||||
self.form.infoModel.addItem(o.Label, o)
|
||||
|
||||
|
||||
self.postProcessorDefaultTooltip = self.form.postProcessor.toolTip()
|
||||
self.postProcessorArgsDefaultTooltip = self.form.postProcessorArguments.toolTip()
|
||||
|
||||
|
||||
@@ -35,7 +35,7 @@ import xml.etree.ElementTree as xml
|
||||
from FreeCAD import Units
|
||||
from PySide import QtCore, QtGui
|
||||
|
||||
if True:
|
||||
if False:
|
||||
PathLog.setLevel(PathLog.Level.DEBUG, PathLog.thisModule())
|
||||
PathLog.trackModule(PathLog.thisModule())
|
||||
else:
|
||||
@@ -190,8 +190,7 @@ class ViewProvider:
|
||||
def setEdit(self, vobj, mode):
|
||||
# this is executed when the object is double-clicked in the tree
|
||||
FreeCADGui.Control.closeDialog()
|
||||
taskd = TaskPanel()
|
||||
taskd.obj = vobj.Object
|
||||
taskd = TaskPanel(vobj.Object)
|
||||
FreeCADGui.Control.showDialog(taskd)
|
||||
taskd.setupUi()
|
||||
|
||||
@@ -252,109 +251,13 @@ class CommandPathToolController:
|
||||
PathLog.track()
|
||||
Create()
|
||||
|
||||
class TaskPanel:
|
||||
def __init__(self):
|
||||
self.form = FreeCADGui.PySideUic.loadUi(":/panels/ToolControl.ui")
|
||||
#self.form = FreeCADGui.PySideUic.loadUi(FreeCAD.getHomePath() + "Mod/Path/ToolControl.ui")
|
||||
self.editform = FreeCADGui.PySideUic.loadUi(":/panels/ToolEdit.ui")
|
||||
class ToolControllerEditor:
|
||||
|
||||
self.updating = False
|
||||
self.toolrep = None
|
||||
|
||||
def accept(self):
|
||||
self.getFields()
|
||||
|
||||
FreeCADGui.ActiveDocument.resetEdit()
|
||||
FreeCADGui.Control.closeDialog()
|
||||
if self.toolrep is not None:
|
||||
FreeCAD.ActiveDocument.removeObject(self.toolrep.Name)
|
||||
FreeCAD.ActiveDocument.recompute()
|
||||
FreeCADGui.Selection.removeObserver(self.s)
|
||||
|
||||
def reject(self):
|
||||
FreeCADGui.Control.closeDialog()
|
||||
if self.toolrep is not None:
|
||||
FreeCAD.ActiveDocument.removeObject(self.toolrep.Name)
|
||||
FreeCAD.ActiveDocument.recompute()
|
||||
FreeCADGui.Selection.removeObserver(self.s)
|
||||
|
||||
def getFields(self):
|
||||
if self.obj:
|
||||
if hasattr(self.obj, "Label"):
|
||||
self.obj.Label = self.form.tcoName.text()
|
||||
if hasattr(self.obj, "VertFeed"):
|
||||
self.obj.VertFeed = self.form.vertFeed.text()
|
||||
if hasattr(self.obj, "HorizFeed"):
|
||||
self.obj.HorizFeed = self.form.horizFeed.text()
|
||||
if hasattr(self.obj, "VertRapid"):
|
||||
self.obj.VertRapid = self.form.vertRapid.text()
|
||||
if hasattr(self.obj, "HorizRapid"):
|
||||
self.obj.HorizRapid = self.form.horizRapid.text()
|
||||
if hasattr(self.obj, "ToolNumber"):
|
||||
self.obj.ToolNumber = self.form.uiToolNum.value()
|
||||
if hasattr(self.obj, "SpindleSpeed"):
|
||||
self.obj.SpindleSpeed = self.form.spindleSpeed.value()
|
||||
if hasattr(self.obj, "SpindleDir"):
|
||||
self.obj.SpindleDir = str(self.form.cboSpindleDirection.currentText())
|
||||
|
||||
self.obj.Proxy.execute(self.obj)
|
||||
|
||||
def setFields(self):
|
||||
self.form.tcoName.setText(self.obj.Label)
|
||||
self.form.uiToolNum.setValue(self.obj.ToolNumber)
|
||||
self.form.vertFeed.setText(self.obj.VertFeed.UserString)
|
||||
self.form.horizFeed.setText(self.obj.HorizFeed.UserString)
|
||||
self.form.vertRapid.setText(self.obj.VertRapid.UserString)
|
||||
self.form.horizRapid.setText(self.obj.HorizRapid.UserString)
|
||||
|
||||
self.form.spindleSpeed.setValue(self.obj.SpindleSpeed)
|
||||
|
||||
index = self.form.cboSpindleDirection.findText(self.obj.SpindleDir, QtCore.Qt.MatchFixedString)
|
||||
if index >= 0:
|
||||
self.form.cboSpindleDirection.setCurrentIndex(index)
|
||||
|
||||
try:
|
||||
tool = self.obj.Tool
|
||||
self.form.txtToolType.setText(tool.ToolType)
|
||||
self.form.txtToolMaterial.setText(tool.Material)
|
||||
diam = Units.Quantity(tool.Diameter, FreeCAD.Units.Length)
|
||||
self.form.txtToolDiameter.setText(diam.getUserPreferred()[0])
|
||||
self.form.txtToolName.setText(tool.Name)
|
||||
except:
|
||||
self.form.txtToolType.setText("UNDEFINED")
|
||||
self.form.txtToolMaterial.setText("UNDEFINED")
|
||||
self.form.txtToolDiameter.setText("UNDEFINED")
|
||||
|
||||
radius = tool.Diameter / 2
|
||||
length = tool.CuttingEdgeHeight
|
||||
t = Part.makeCylinder(radius, length)
|
||||
self.toolrep.Shape = t
|
||||
|
||||
def open(self):
|
||||
self.s = SelObserver()
|
||||
# install the function mode resident
|
||||
FreeCADGui.Selection.addObserver(self.s)
|
||||
|
||||
def getStandardButtons(self):
|
||||
return int(QtGui.QDialogButtonBox.Ok)
|
||||
|
||||
def edit(self, item, column):
|
||||
if not self.updating:
|
||||
self.resetObject()
|
||||
|
||||
def resetObject(self, remove=None):
|
||||
"transfers the values from the widget to the object"
|
||||
FreeCAD.ActiveDocument.recompute()
|
||||
|
||||
def setupUi(self):
|
||||
self.form.tcoName.editingFinished.connect(self.getFields)
|
||||
self.form.cmdEditLocal.clicked.connect(self.editTool)
|
||||
|
||||
t = Part.makeCylinder(1, 1)
|
||||
self.toolrep = FreeCAD.ActiveDocument.addObject("Part::Feature", "tool")
|
||||
self.toolrep.Shape = t
|
||||
|
||||
self.setFields()
|
||||
def __init__(self, obj, asDialog):
|
||||
self.form = FreeCADGui.PySideUic.loadUi(":/panels/DlgToolControllerEdit.ui")
|
||||
if not asDialog:
|
||||
self.form.buttonBox.hide()
|
||||
self.obj = obj
|
||||
|
||||
def getType(self, tooltype):
|
||||
"gets a combobox index number for a given type or viceversa"
|
||||
@@ -381,45 +284,135 @@ class TaskPanel:
|
||||
else:
|
||||
return matslist[material]
|
||||
|
||||
def editTool(self):
|
||||
toolnum = self.obj.ToolNumber
|
||||
def updateUi(self):
|
||||
PathLog.info("updateUI")
|
||||
tc = self.obj
|
||||
self.form.tcName.setText(tc.Label)
|
||||
self.form.tcNumber.setValue(tc.ToolNumber)
|
||||
self.form.horizFeed.setText(tc.HorizFeed.UserString)
|
||||
self.form.vertFeed.setText(tc.VertFeed.UserString)
|
||||
self.form.horizRapid.setText(tc.HorizRapid.UserString)
|
||||
self.form.vertRapid.setText(tc.VertRapid.UserString)
|
||||
self.form.spindleSpeed.setValue(tc.SpindleSpeed)
|
||||
index = self.form.spindleDirection.findText(tc.SpindleDir, QtCore.Qt.MatchFixedString)
|
||||
if index >= 0:
|
||||
self.form.spindleDirection.setCurrentIndex(index)
|
||||
|
||||
self.form.toolName.setText(tc.Tool.Name)
|
||||
self.form.toolType.setCurrentIndex(self.getType(tc.Tool.ToolType))
|
||||
self.form.toolMaterial.setCurrentIndex(self.getMaterial(tc.Tool.Material))
|
||||
self.form.toolDiameter.setText(FreeCAD.Units.Quantity(tc.Tool.Diameter, FreeCAD.Units.Length).UserString)
|
||||
self.form.toolLengthOffset.setText(FreeCAD.Units.Quantity(tc.Tool.LengthOffset, FreeCAD.Units.Length).UserString)
|
||||
self.form.toolFlatRadius.setText(FreeCAD.Units.Quantity(tc.Tool.FlatRadius, FreeCAD.Units.Length).UserString)
|
||||
self.form.toolCornerRadius.setText(FreeCAD.Units.Quantity(tc.Tool.CornerRadius, FreeCAD.Units.Length).UserString)
|
||||
self.form.toolCuttingEdgeAngle.setText(FreeCAD.Units.Quantity(tc.Tool.CuttingEdgeAngle, FreeCAD.Units.Angle).UserString)
|
||||
self.form.toolCuttingEdgeHeight.setText(FreeCAD.Units.Quantity(tc.Tool.CuttingEdgeHeight, FreeCAD.Units.Length).UserString)
|
||||
|
||||
def updateToolController(self):
|
||||
PathLog.info("updateToolController")
|
||||
tc = self.obj
|
||||
try:
|
||||
tc.Label = self.form.tcName.text()
|
||||
tc.ToolNumber = self.form.tcNumber.value()
|
||||
tc.HorizFeed = self.form.horizFeed.text()
|
||||
tc.VertFeed = self.form.vertFeed.text()
|
||||
tc.HorizRapid = self.form.horizRapid.text()
|
||||
tc.VertRapid = self.form.vertRapid.text()
|
||||
tc.SpindleSpeed = self.form.spindleSpeed.value()
|
||||
tc.SpindleDir = self.form.spindleDirection.currentText()
|
||||
|
||||
tc.Tool.Name = str(self.form.toolName.text())
|
||||
tc.Tool.ToolType = self.getType(self.form.toolType.currentIndex())
|
||||
tc.Tool.Material = self.getMaterial(self.form.toolMaterial.currentIndex())
|
||||
tc.Tool.Diameter = FreeCAD.Units.parseQuantity(self.form.toolDiameter.text())
|
||||
tc.Tool.LengthOffset = FreeCAD.Units.parseQuantity(self.form.toolLengthOffset.text())
|
||||
tc.Tool.FlatRadius = FreeCAD.Units.parseQuantity(self.form.toolFlatRadius.text())
|
||||
tc.Tool.CornerRadius = FreeCAD.Units.parseQuantity(self.form.toolCornerRadius.text())
|
||||
tc.Tool.CuttingEdgeAngle = FreeCAD.Units.Quantity(self.form.toolCuttingEdgeAngle.text())
|
||||
tc.Tool.CuttingEdgeHeight = FreeCAD.Units.parseQuantity(self.form.toolCuttingEdgeHeight.text())
|
||||
except Exception as e:
|
||||
PathLog.error(translate("PathToolController", "Error updating TC: %s") % e)
|
||||
|
||||
|
||||
def refresh(self):
|
||||
self.form.blockSignals(True)
|
||||
self.updateToolController()
|
||||
self.updateUi()
|
||||
self.form.blockSignals(False)
|
||||
|
||||
def setupUi(self):
|
||||
self.form.tcName.editingFinished.connect(self.refresh)
|
||||
self.form.horizFeed.editingFinished.connect(self.refresh)
|
||||
self.form.vertFeed.editingFinished.connect(self.refresh)
|
||||
self.form.horizRapid.editingFinished.connect(self.refresh)
|
||||
self.form.vertRapid.editingFinished.connect(self.refresh)
|
||||
|
||||
self.form.toolName.editingFinished.connect(self.refresh)
|
||||
self.form.toolDiameter.editingFinished.connect(self.refresh)
|
||||
self.form.toolLengthOffset.editingFinished.connect(self.refresh)
|
||||
self.form.toolFlatRadius.editingFinished.connect(self.refresh)
|
||||
self.form.toolCornerRadius.editingFinished.connect(self.refresh)
|
||||
self.form.toolCuttingEdgeAngle.editingFinished.connect(self.refresh)
|
||||
self.form.toolCuttingEdgeHeight.editingFinished.connect(self.refresh)
|
||||
|
||||
class TaskPanel:
|
||||
|
||||
def __init__(self, obj):
|
||||
self.editor = ToolControllerEditor(obj, False)
|
||||
self.form = self.editor.form
|
||||
self.updating = False
|
||||
self.toolrep = None
|
||||
self.obj = obj
|
||||
|
||||
def accept(self):
|
||||
self.getFields()
|
||||
|
||||
FreeCADGui.ActiveDocument.resetEdit()
|
||||
FreeCADGui.Control.closeDialog()
|
||||
if self.toolrep is not None:
|
||||
FreeCAD.ActiveDocument.removeObject(self.toolrep.Name)
|
||||
FreeCAD.ActiveDocument.recompute()
|
||||
|
||||
def reject(self):
|
||||
FreeCADGui.Control.closeDialog()
|
||||
if self.toolrep is not None:
|
||||
FreeCAD.ActiveDocument.removeObject(self.toolrep.Name)
|
||||
FreeCAD.ActiveDocument.recompute()
|
||||
|
||||
def getFields(self):
|
||||
self.editor.updateToolController()
|
||||
self.obj.Proxy.execute(self.obj)
|
||||
|
||||
def setFields(self):
|
||||
self.editor.updateUi()
|
||||
|
||||
tool = self.obj.Tool
|
||||
editform = FreeCADGui.PySideUic.loadUi(":/panels/ToolEdit.ui")
|
||||
radius = tool.Diameter / 2
|
||||
length = tool.CuttingEdgeHeight
|
||||
t = Part.makeCylinder(radius, length)
|
||||
self.toolrep.Shape = t
|
||||
|
||||
editform.NameField.setText(tool.Name)
|
||||
editform.TypeField.setCurrentIndex(self.getType(tool.ToolType))
|
||||
editform.MaterialField.setCurrentIndex(self.getMaterial(tool.Material))
|
||||
editform.DiameterField.setText(FreeCAD.Units.Quantity(tool.Diameter, FreeCAD.Units.Length).UserString)
|
||||
editform.LengthOffsetField.setText(FreeCAD.Units.Quantity(tool.LengthOffset, FreeCAD.Units.Length).UserString)
|
||||
editform.FlatRadiusField.setText(FreeCAD.Units.Quantity(tool.FlatRadius, FreeCAD.Units.Length).UserString)
|
||||
editform.CornerRadiusField.setText(FreeCAD.Units.Quantity(tool.CornerRadius, FreeCAD.Units.Length).UserString)
|
||||
editform.CuttingEdgeAngleField.setText(FreeCAD.Units.Quantity(tool.CuttingEdgeAngle, FreeCAD.Units.Angle).UserString)
|
||||
editform.CuttingEdgeHeightField.setText(FreeCAD.Units.Quantity(tool.CuttingEdgeHeight, FreeCAD.Units.Length).UserString)
|
||||
def getStandardButtons(self):
|
||||
return int(QtGui.QDialogButtonBox.Ok)
|
||||
|
||||
r = editform.exec_()
|
||||
if r:
|
||||
if editform.NameField.text():
|
||||
tool.Name = str(editform.NameField.text()) #FIXME: not unicode safe!
|
||||
tool.ToolType = self.getType(editform.TypeField.currentIndex())
|
||||
tool.Material = self.getMaterial(editform.MaterialField.currentIndex())
|
||||
tool.Diameter = FreeCAD.Units.parseQuantity(editform.DiameterField.text())
|
||||
tool.LengthOffset = FreeCAD.Units.parseQuantity(editform.LengthOffsetField.text())
|
||||
tool.FlatRadius = FreeCAD.Units.parseQuantity(editform.FlatRadiusField.text())
|
||||
tool.CornerRadius = FreeCAD.Units.parseQuantity(editform.CornerRadiusField.text())
|
||||
tool.CuttingEdgeAngle = FreeCAD.Units.Quantity(editform.CuttingEdgeAngleField.text())
|
||||
tool.CuttingEdgeHeight = FreeCAD.Units.parseQuantity(editform.CuttingEdgeHeightField.text())
|
||||
self.obj.Tool = tool
|
||||
self.setFields()
|
||||
def edit(self, item, column):
|
||||
if not self.updating:
|
||||
self.resetObject()
|
||||
|
||||
def resetObject(self, remove=None):
|
||||
"transfers the values from the widget to the object"
|
||||
FreeCAD.ActiveDocument.recompute()
|
||||
|
||||
def setupUi(self):
|
||||
t = Part.makeCylinder(1, 1)
|
||||
self.toolrep = FreeCAD.ActiveDocument.addObject("Part::Feature", "tool")
|
||||
self.toolrep.Shape = t
|
||||
|
||||
self.setFields()
|
||||
self.editor.setupUi()
|
||||
|
||||
|
||||
|
||||
class SelObserver:
|
||||
def __init__(self):
|
||||
pass
|
||||
|
||||
def __del__(self):
|
||||
pass
|
||||
|
||||
if FreeCAD.GuiUp:
|
||||
# register the FreeCAD command
|
||||
FreeCADGui.addCommand('Path_ToolController', CommandPathToolController())
|
||||
|
||||
Reference in New Issue
Block a user