Fixed merge issues

This commit is contained in:
Markus Lampert
2018-09-03 12:52:03 -07:00
committed by wmayer
parent 7a65e48d33
commit 18bf6b6cb8
8 changed files with 389 additions and 234 deletions

View File

@@ -7,14 +7,14 @@
<x>0</x>
<y>0</y>
<width>432</width>
<height>673</height>
<height>1160</height>
</rect>
</property>
<property name="windowTitle">
<string>Job Edit</string>
</property>
<property name="currentIndex">
<number>2</number>
<number>0</number>
</property>
<widget class="QWidget" name="tabGeneral">
<attribute name="title">
@@ -32,63 +32,79 @@
<x>0</x>
<y>0</y>
<width>412</width>
<height>549</height>
<height>1036</height>
</rect>
</property>
<attribute name="label">
<string>Job</string>
</attribute>
<layout class="QFormLayout" name="formLayout_4">
<item row="0" column="0">
<widget class="QLabel" name="label">
<property name="text">
<layout class="QVBoxLayout" name="verticalLayout_17">
<item>
<widget class="QGroupBox" name="groupBox_6">
<property name="title">
<string>Label</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_16">
<item>
<widget class="QLineEdit" name="jobLabel"/>
</item>
</layout>
</widget>
</item>
<item row="0" column="1">
<widget class="QLineEdit" name="jobLabel"/>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_2">
<property name="text">
<item>
<widget class="QGroupBox" name="groupBox_4">
<property name="title">
<string>Model</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_14">
<item>
<widget class="QListWidget" name="jobModel">
<property name="selectionMode">
<enum>QAbstractItemView::MultiSelection</enum>
</property>
</widget>
</item>
<item>
<widget class="QWidget" name="widget_3" native="true">
<layout class="QHBoxLayout" name="horizontalLayout_6">
<item>
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>334</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QPushButton" name="jobModelEdit">
<property name="text">
<string>Edit</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
</item>
<item row="1" column="1">
<widget class="QComboBox" name="jobModel">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_5">
<property name="text">
<item>
<widget class="QGroupBox" name="groupBox_5">
<property name="title">
<string>Description</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_15">
<item>
<widget class="QPlainTextEdit" name="jobDescription"/>
</item>
</layout>
</widget>
</item>
<item row="2" column="1">
<widget class="QPlainTextEdit" name="jobDescription"/>
</item>
<item row="3" column="1">
<spacer name="verticalSpacer_4">
<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="templateExport">
@@ -190,7 +206,7 @@
<x>0</x>
<y>0</y>
<width>418</width>
<height>762</height>
<height>1117</height>
</rect>
</property>
<attribute name="label">
@@ -392,55 +408,11 @@
</widget>
</item>
<item>
<widget class="QGroupBox" name="orientGroup">
<property name="title">
<string>Orientation</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QPushButton" name="orientXAxis">
<property name="text">
<string>X-Axis</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="orientYAxis">
<property name="text">
<string>Y-Axis</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="orientZAxis">
<property name="text">
<string>Z-Axis</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="alignGroup">
<widget class="QGroupBox" name="modelAlignGroup">
<property name="title">
<string>Alignment</string>
</property>
<layout class="QGridLayout" name="gridLayout_2">
<item row="1" column="0">
<widget class="QPushButton" name="setOrigin">
<property name="text">
<string>Set Origin</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QPushButton" name="moveToOrigin">
<property name="text">
<string>Move to Origin</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QPushButton" name="centerInStock">
<property name="text">
@@ -455,6 +427,285 @@
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QPushButton" name="setOrigin">
<property name="text">
<string>Set Origin</string>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QPushButton" name="moveToOrigin">
<property name="text">
<string>Move to Origin</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="modelSetGroup">
<property name="title">
<string>Set</string>
</property>
<layout class="QGridLayout" name="gridLayout_5">
<item row="0" column="0">
<widget class="QPushButton" name="modelSetXAxis">
<property name="text">
<string>X-Axis</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QPushButton" name="modelSetYAxis">
<property name="text">
<string>Y-Axis</string>
</property>
</widget>
</item>
<item row="0" column="2">
<widget class="QPushButton" name="modelSetZAxis">
<property name="text">
<string>Z-Axis</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QPushButton" name="modelSetY0">
<property name="text">
<string>Y=0</string>
</property>
</widget>
</item>
<item row="1" column="2">
<widget class="QPushButton" name="modelSetZ0">
<property name="text">
<string>Z=0</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QPushButton" name="modelSetX0">
<property name="text">
<string>X=0</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="modelMoveGroup">
<property name="title">
<string>Move - XY</string>
</property>
<layout class="QGridLayout" name="gridLayout_3">
<item row="0" column="1">
<widget class="QPushButton" name="modelMoveUp">
<property name="text">
<string/>
</property>
<property name="icon">
<iconset resource="../Path.qrc">
<normaloff>:/icons/arrow-up.svg</normaloff>:/icons/arrow-up.svg</iconset>
</property>
<property name="iconSize">
<size>
<width>32</width>
<height>32</height>
</size>
</property>
</widget>
</item>
<item row="0" column="2">
<widget class="QPushButton" name="modelMoveRightUp">
<property name="text">
<string/>
</property>
<property name="icon">
<iconset resource="../Path.qrc">
<normaloff>:/icons/arrow-right-up.svg</normaloff>:/icons/arrow-right-up.svg</iconset>
</property>
<property name="iconSize">
<size>
<width>32</width>
<height>32</height>
</size>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QPushButton" name="modelMoveLeftUp">
<property name="text">
<string/>
</property>
<property name="icon">
<iconset resource="../Path.qrc">
<normaloff>:/icons/arrow-left-up.svg</normaloff>:/icons/arrow-left-up.svg</iconset>
</property>
<property name="iconSize">
<size>
<width>32</width>
<height>32</height>
</size>
</property>
</widget>
</item>
<item row="1" column="2">
<widget class="QPushButton" name="modelMoveRight">
<property name="text">
<string/>
</property>
<property name="icon">
<iconset resource="../Path.qrc">
<normaloff>:/icons/arrow-right.svg</normaloff>:/icons/arrow-right.svg</iconset>
</property>
<property name="iconSize">
<size>
<width>32</width>
<height>32</height>
</size>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QDoubleSpinBox" name="modelMoveValue">
<property name="minimum">
<double>-1000.000000000000000</double>
</property>
<property name="maximum">
<double>1000.000000000000000</double>
</property>
<property name="value">
<double>1.000000000000000</double>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QPushButton" name="modelMoveLeft">
<property name="text">
<string/>
</property>
<property name="icon">
<iconset resource="../Path.qrc">
<normaloff>:/icons/arrow-left.svg</normaloff>:/icons/arrow-left.svg</iconset>
</property>
<property name="iconSize">
<size>
<width>32</width>
<height>32</height>
</size>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QPushButton" name="modelMoveLeftDown">
<property name="text">
<string/>
</property>
<property name="icon">
<iconset resource="../Path.qrc">
<normaloff>:/icons/arrow-left-down.svg</normaloff>:/icons/arrow-left-down.svg</iconset>
</property>
<property name="iconSize">
<size>
<width>32</width>
<height>32</height>
</size>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QPushButton" name="modelMoveDown">
<property name="text">
<string/>
</property>
<property name="icon">
<iconset resource="../Path.qrc">
<normaloff>:/icons/arrow-down.svg</normaloff>:/icons/arrow-down.svg</iconset>
</property>
<property name="iconSize">
<size>
<width>32</width>
<height>32</height>
</size>
</property>
</widget>
</item>
<item row="2" column="2">
<widget class="QPushButton" name="modelMoveRightDown">
<property name="text">
<string/>
</property>
<property name="icon">
<iconset resource="../Path.qrc">
<normaloff>:/icons/arrow-right-down.svg</normaloff>:/icons/arrow-right-down.svg</iconset>
</property>
<property name="iconSize">
<size>
<width>32</width>
<height>32</height>
</size>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="modelRotateGroup">
<property name="title">
<string>Rotate - XY</string>
</property>
<layout class="QGridLayout" name="gridLayout_6">
<item row="0" column="0">
<widget class="QPushButton" name="modelRotateLeft">
<property name="text">
<string/>
</property>
<property name="icon">
<iconset resource="../Path.qrc">
<normaloff>:/icons/arrow-ccw.svg</normaloff>:/icons/arrow-ccw.svg</iconset>
</property>
<property name="iconSize">
<size>
<width>32</width>
<height>32</height>
</size>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QDoubleSpinBox" name="modelRotateValue">
<property name="minimum">
<double>-180.000000000000000</double>
</property>
<property name="maximum">
<double>360.000000000000000</double>
</property>
<property name="value">
<double>90.000000000000000</double>
</property>
</widget>
</item>
<item row="0" column="2">
<widget class="QPushButton" name="modelRotateRight">
<property name="text">
<string/>
</property>
<property name="icon">
<iconset resource="../Path.qrc">
<normaloff>:/icons/arrow-cw.svg</normaloff>:/icons/arrow-cw.svg</iconset>
</property>
<property name="iconSize">
<size>
<width>32</width>
<height>32</height>
</size>
</property>
</widget>
</item>
</layout>
</widget>
</item>
@@ -642,8 +893,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>412</width>
<height>549</height>
<width>312</width>
<height>169</height>
</rect>
</property>
<attribute name="label">
@@ -976,9 +1227,6 @@
</customwidget>
</customwidgets>
<tabstops>
<tabstop>jobLabel</tabstop>
<tabstop>jobModel</tabstop>
<tabstop>jobDescription</tabstop>
<tabstop>postProcessorOutputFile</tabstop>
<tabstop>postProcessorSetOutputFile</tabstop>
<tabstop>postProcessor</tabstop>
@@ -996,13 +1244,6 @@
<tabstop>stockBoxLength</tabstop>
<tabstop>stockBoxWidth</tabstop>
<tabstop>stockBoxHeight</tabstop>
<tabstop>orientXAxis</tabstop>
<tabstop>orientYAxis</tabstop>
<tabstop>orientZAxis</tabstop>
<tabstop>setOrigin</tabstop>
<tabstop>moveToOrigin</tabstop>
<tabstop>centerInStock</tabstop>
<tabstop>centerInStockXY</tabstop>
<tabstop>toolControllerEdit</tabstop>
<tabstop>toolControllerAdd</tabstop>
<tabstop>toolControllerDelete</tabstop>
@@ -1015,6 +1256,7 @@
</tabstops>
<resources>
<include location="../../../../../Gui/Icons/resource.qrc"/>
<include location="../Path.qrc"/>
</resources>
<connections/>
</ui>

View File

@@ -118,7 +118,6 @@ class TaskPanelHoleGeometryPage(PathOpGui.TaskPanelBaseGeometryPage):
selected = [self.form.baseList.row(item) for item in self.form.baseList.selectedItems()]
self.form.baseList.blockSignals(True)
for row in sorted(list(set(selected)), key=lambda row: -row):
print("row = %d" % row)
self.form.baseList.removeRow(row)
self.updateBase()
self.form.baseList.resizeColumnToContents(0)

View File

@@ -36,7 +36,7 @@ from PySide import QtCore
__doc__ = "Class and implementation of Path Engrave operation"
if True:
if False:
PathLog.setLevel(PathLog.Level.DEBUG, PathLog.thisModule())
PathLog.trackModule(PathLog.thisModule())
else:

View File

@@ -123,10 +123,9 @@ class ObjectOp(PathOp.ObjectOp):
params.update({'Z': z, 'F': self.horizFeed})
self.commandlist.append(Path.Command(cmd.Name, params))
def opSetDefaultValues(self, obj):
def opSetDefaultValues(self, obj, job):
'''opSetDefaultValues(obj) ... set depths for engraving'''
if PathOp.FeatureDepths & self.opFeatures(obj):
job = PathUtils.findParentJob(obj)
if job and len(job.Model.Group) > 0:
bb = job.Proxy.modelBoundBox(job)
obj.OpStartDepth = bb.ZMax

View File

@@ -80,115 +80,6 @@ class CommandJobCreate:
FreeCADGui.doCommand('PathScripts.PathJobGui.Create(%s, %s)' % ([o.Name for o in base], template))
class DlgJobTemplateExport:
DataObject = QtCore.Qt.ItemDataRole.UserRole
def __init__(self, job, parent=None):
self.job = job
self.dialog = FreeCADGui.PySideUic.loadUi(":/panels/DlgJobTemplateExport.ui")
if parent:
self.dialog.setParent(parent)
parent.layout().addWidget(self.dialog)
self.dialog.dialogButtonBox.hide()
else:
self.dialog.exportButtonBox.hide()
self.updateUI()
self.dialog.toolsGroup.clicked.connect(self.checkUncheckTools)
def exportButton(self):
return self.dialog.exportButton
def updateUI(self):
job = self.job
if job.PostProcessor:
ppHint = "%s %s %s" % (job.PostProcessor, job.PostProcessorArgs, job.PostProcessorOutputFile)
self.dialog.postProcessingHint.setText(ppHint)
else:
self.dialog.postProcessingGroup.setEnabled(False)
self.dialog.postProcessingGroup.setChecked(False)
if job.Stock and not PathJob.isResourceClone(job, 'Stock', 'Stock'):
stockType = PathStock.StockType.FromStock(job.Stock)
if stockType == PathStock.StockType.FromBase:
seHint = translate('PathJob', "Base -/+ %.2f/%.2f %.2f/%.2f %.2f/%.2f") % (job.Stock.ExtXneg, job.Stock.ExtXpos, job.Stock.ExtYneg, job.Stock.ExtYpos, job.Stock.ExtZneg, job.Stock.ExtZpos)
self.dialog.stockPlacement.setChecked(False)
elif stockType == PathStock.StockType.CreateBox:
seHint = translate('PathJob', "Box: %.2f x %.2f x %.2f") % (job.Stock.Length, job.Stock.Width, job.Stock.Height)
elif stockType == PathStock.StockType.CreateCylinder:
seHint = translate('PathJob', "Cylinder: %.2f x %.2f") % (job.Stock.Radius, job.Stock.Height)
else:
seHint = '-'
PathLog.error(translate('PathJob', 'Unsupported stock type'))
self.dialog.stockExtentHint.setText(seHint)
spHint = "%s" % job.Stock.Placement
self.dialog.stockPlacementHint.setText(spHint)
rapidChanged = not job.SetupSheet.Proxy.hasDefaultToolRapids()
depthsChanged = not job.SetupSheet.Proxy.hasDefaultOperationDepths()
heightsChanged = not job.SetupSheet.Proxy.hasDefaultOperationHeights()
opsWithSettings = job.SetupSheet.Proxy.operationsWithSettings()
settingsChanged = rapidChanged or depthsChanged or heightsChanged or 0 != len(opsWithSettings)
self.dialog.settingsGroup.setChecked(settingsChanged)
self.dialog.settingToolRapid.setChecked(rapidChanged)
self.dialog.settingOperationDepths.setChecked(depthsChanged)
self.dialog.settingOperationHeights.setChecked(heightsChanged)
self.dialog.settingsOpsList.clear()
for op in opsWithSettings:
item = QtGui.QListWidgetItem(op)
item.setCheckState(QtCore.Qt.CheckState.Checked)
self.dialog.settingsOpsList.addItem(item)
self.dialog.toolsList.clear()
for tc in sorted(job.ToolController, key=lambda o: o.Label):
item = QtGui.QListWidgetItem(tc.Label)
item.setData(self.DataObject, tc)
item.setCheckState(QtCore.Qt.CheckState.Checked)
self.dialog.toolsList.addItem(item)
def checkUncheckTools(self):
state = QtCore.Qt.CheckState.Checked if self.dialog.toolsGroup.isChecked() else QtCore.Qt.CheckState.Unchecked
for i in range(self.dialog.toolsList.count()):
self.dialog.toolsList.item(i).setCheckState(state)
def includePostProcessing(self):
return self.dialog.postProcessingGroup.isChecked()
def includeToolControllers(self):
tcs = []
for i in range(self.dialog.toolsList.count()):
item = self.dialog.toolsList.item(i)
if item.checkState() == QtCore.Qt.CheckState.Checked:
tcs.append(item.data(self.DataObject))
return tcs
def includeStock(self):
return self.dialog.stockGroup.isChecked()
def includeStockExtent(self):
return self.dialog.stockExtent.isChecked()
def includeStockPlacement(self):
return self.dialog.stockPlacement.isChecked()
def includeSettings(self):
return self.dialog.settingsGroup.isChecked()
def includeSettingToolRapid(self):
return self.dialog.settingToolRapid.isChecked()
def includeSettingOperationHeights(self):
return self.dialog.settingOperationHeights.isChecked()
def includeSettingOperationDepths(self):
return self.dialog.settingOperationDepths.isChecked()
def includeSettingOpsSettings(self):
ops = []
for i in range(self.dialog.settingsOpsList.count()):
item = self.dialog.settingsOpsList.item(i)
if item.checkState() == QtCore.Qt.CheckState.Checked:
ops.append(item.text())
return ops
def exec_(self):
return self.dialog.exec_()
class CommandJobTemplateExport:
'''
Command to export a template of a given job.

View File

@@ -183,7 +183,20 @@ class JobTemplateExport:
def __init__(self, job, parent=None):
self.job = job
self.dialog = FreeCADGui.PySideUic.loadUi(":/panels/DlgJobTemplateExport.ui")
if parent:
self.dialog.setParent(parent)
parent.layout().addWidget(self.dialog)
self.dialog.dialogButtonBox.hide()
else:
self.dialog.exportButtonBox.hide()
self.updateUI()
self.dialog.toolsGroup.clicked.connect(self.checkUncheckTools)
def exportButton(self):
return self.dialog.exportButton
def updateUI(self):
job = self.job
if job.PostProcessor:
ppHint = "%s %s %s" % (job.PostProcessor, job.PostProcessorArgs, job.PostProcessorOutputFile)
self.dialog.postProcessingHint.setText(ppHint)
@@ -210,20 +223,26 @@ class JobTemplateExport:
rapidChanged = not job.SetupSheet.Proxy.hasDefaultToolRapids()
depthsChanged = not job.SetupSheet.Proxy.hasDefaultOperationDepths()
heightsChanged = not job.SetupSheet.Proxy.hasDefaultOperationHeights()
settingsChanged = rapidChanged or depthsChanged or heightsChanged
opsWithSettings = job.SetupSheet.Proxy.operationsWithSettings()
settingsChanged = rapidChanged or depthsChanged or heightsChanged or 0 != len(opsWithSettings)
self.dialog.settingsGroup.setChecked(settingsChanged)
self.dialog.settingToolRapid.setChecked(rapidChanged)
self.dialog.settingOperationDepths.setChecked(depthsChanged)
self.dialog.settingOperationHeights.setChecked(heightsChanged)
self.dialog.settingsOpsList.clear()
for op in opsWithSettings:
item = QtGui.QListWidgetItem(op)
item.setCheckState(QtCore.Qt.CheckState.Checked)
self.dialog.settingsOpsList.addItem(item)
self.dialog.toolsList.clear()
for tc in sorted(job.ToolController, key=lambda o: o.Label):
item = QtGui.QListWidgetItem(tc.Label)
item.setData(self.DataObject, tc)
item.setCheckState(QtCore.Qt.CheckState.Checked)
self.dialog.toolsList.addItem(item)
self.dialog.toolsGroup.clicked.connect(self.checkUncheckTools)
def checkUncheckTools(self):
state = QtCore.Qt.CheckState.Checked if self.dialog.toolsGroup.isChecked() else QtCore.Qt.CheckState.Unchecked
for i in range(self.dialog.toolsList.count()):
@@ -256,6 +275,14 @@ class JobTemplateExport:
def includeSettingOperationDepths(self):
return self.dialog.settingOperationDepths.isChecked()
def includeSettingOpsSettings(self):
ops = []
for i in range(self.dialog.settingsOpsList.count()):
item = self.dialog.settingsOpsList.item(i)
if item.checkState() == QtCore.Qt.CheckState.Checked:
ops.append(item.text())
return ops
def exec_(self):
return self.dialog.exec_()

View File

@@ -27,6 +27,7 @@ import DraftVecUtils
import FreeCAD
import FreeCADGui
import PathScripts.PathJob as PathJob
import PathScripts.PathJobCmd as PathJobCmd
import PathScripts.PathJobDlg as PathJobDlg
import PathScripts.PathGeom as PathGeom
import PathScripts.PathGui as PathGui
@@ -474,7 +475,7 @@ class TaskPanel:
self.obj = vobj.Object
self.deleteOnReject = deleteOnReject
self.form = FreeCADGui.PySideUic.loadUi(":/panels/PathEdit.ui")
self.template = PathJobCmd.DlgJobTemplateExport(self.obj, self.form.jobBox.widget(1))
self.template = PathJobDlg.JobTemplateExport(self.obj, self.form.jobBox.widget(1))
vUnit = FreeCAD.Units.Quantity(1, FreeCAD.Units.Velocity).getUserPreferred()[2]
self.form.toolControllerList.horizontalHeaderItem(1).setText('#')
@@ -911,8 +912,6 @@ class TaskPanel:
PathLog.track(index, force)
if force or not self.stockFromBase:
self.stockFromBase = StockFromBaseBoundBoxEdit(self.obj, self.form, force)
else:
PathLog.error('wtf')
self.stockEdit = self.stockFromBase
def setupCreateBoxEdit():
PathLog.track(index, force)
@@ -963,7 +962,7 @@ class TaskPanel:
self.template.updateUI()
def refreshStock(self):
self.updateStockEditor(self.form.stock.currentIndex())
self.updateStockEditor(self.form.stock.currentIndex(), True)
def alignCenterInStock(self):
bbs = self.obj.Stock.Shape.BoundBox
@@ -1065,6 +1064,8 @@ class TaskPanel:
self.template.updateUI()
def setupUi(self, activate):
self.setupGlobal.setupUi()
self.setupOps.setupUi()
self.updateStockEditor(-1, True)
self.setFields()

View File

@@ -112,7 +112,7 @@ class StockFromBase(Stock):
obj.ExtZpos= 1.0
# placement is only tracked on creation
bb = shapeBoundBox(base.Group)
bb = shapeBoundBox(base.Group) if base else None
if bb:
obj.Placement = FreeCAD.Placement(FreeCAD.Vector(bb.XMin, bb.YMin, bb.ZMin), FreeCAD.Rotation())
else:
@@ -225,9 +225,7 @@ def SetupStockObject(obj, stockType):
def CreateFromBase(job, neg=None, pos=None, placement=None):
PathLog.track(job.Label, neg, pos, placement)
base = job.Model if job and hasattr(job, 'Model') else None
if base:
base.Shape.tessellate(0.1)
base = job.Model if job else None
obj = FreeCAD.ActiveDocument.addObject('Part::FeaturePython', 'Stock')
proxy = StockFromBase(obj, base)
@@ -250,9 +248,7 @@ def CreateFromBase(job, neg=None, pos=None, placement=None):
return obj
def CreateBox(job, extent=None, placement=None):
base = job.Model.Group if job else None
if base:
base.Shape.tessellate(0.1)
base = job.Model if job else None
obj = FreeCAD.ActiveDocument.addObject('Part::FeaturePython', 'Stock')
proxy = StockCreateBox(obj)
@@ -261,24 +257,24 @@ def CreateBox(job, extent=None, placement=None):
obj.Width = extent.y
obj.Height = extent.z
elif base:
bb = shapeBoundBox(base)
bb = shapeBoundBox(base.Group)
obj.Length = max(bb.XLength, 1)
obj.Width = max(bb.YLength, 1)
obj.Height = max(bb.ZLength, 1)
if placement:
obj.Placement = placement
elif base:
bb = shapeBoundBox(base)
bb = shapeBoundBox(base.Group)
origin = FreeCAD.Vector(bb.XMin, bb.YMin, bb.ZMin)
obj.Placement = FreeCAD.Placement(origin, FreeCAD.Vector(), 0)
SetupStockObject(obj, StockType.CreateBox)
return obj
def CreateCylinder(job, radius=None, height=None, placement=None):
base = job.Model.Group if job else None
base = job.Model if job else None
obj = FreeCAD.ActiveDocument.addObject('Part::FeaturePython', 'Stock')
if base:
base.Shape.tessellate(0.1) obj = FreeCAD.ActiveDocument.addObject('Part::FeaturePython', 'Stock')
proxy = StockCreateCylinder(obj)
if radius:
@@ -287,14 +283,14 @@ def CreateCylinder(job, radius=None, height=None, placement=None):
if height:
obj.Height = height
elif base:
bb = shapeBoundBox(base)
bb = shapeBoundBox(base.Group)
obj.Radius = math.sqrt(bb.XLength ** 2 + bb.YLength ** 2) / 2.0
obj.Height = max(bb.ZLength, 1)
if placement:
obj.Placement = placement
elif base:
bb = shapeBoundBox(base)
bb = shapeBoundBox(base.Group)
origin = FreeCAD.Vector((bb.XMin + bb.XMax)/2, (bb.YMin + bb.YMax)/2, bb.ZMin)
obj.Placement = FreeCAD.Placement(origin, FreeCAD.Vector(), 0)