Fixed drilling depths and circular hole remove logic.

This commit is contained in:
Markus Lampert
2017-09-26 21:35:33 -07:00
parent 4c0f25b174
commit 11db427b2e
3 changed files with 33 additions and 41 deletions

View File

@@ -156,7 +156,6 @@ class ObjectOp(PathOp.ObjectOp):
return False
if len(obj.Base) == 0 and not haveLocations(self, obj):
# Arch PanelSheet
features = []
if self.baseIsArchPanel(obj, self.baseobject):
holeshapes = self.baseobject.Proxy.getHoles(self.baseobject, transform=True)

View File

@@ -54,6 +54,9 @@ class TaskPanelHoleGeometryPage(PathOpGui.TaskPanelBaseGeometryPage):
'''getForm() ... load and return page'''
return FreeCADGui.PySideUic.loadUi(":/panels/PageBaseHoleGeometryEdit.ui")
def initPage(self, obj):
self.updating = False
def setFields(self, obj):
'''setFields(obj) ... fill form with values from obj'''
PathLog.track()
@@ -85,38 +88,43 @@ class TaskPanelHoleGeometryPage(PathOpGui.TaskPanelBaseGeometryPage):
self.form.baseList.resizeColumnToContents(0)
self.form.baseList.blockSignals(False)
self.itemActivated()
def itemActivated(self):
'''itemActivated() ... callback when item in table is selected'''
PathLog.track()
FreeCADGui.Selection.clearSelection()
activatedRows = []
for item in self.form.baseList.selectedItems():
row = item.row()
if not row in activatedRows:
activatedRows.append(row)
obj = item.data(self.DataObject)
sub = str(item.data(self.DataObjectSub))
PathLog.debug("itemActivated() -> %s.%s" % (obj.Label, sub))
if sub:
FreeCADGui.Selection.addSelection(obj, sub)
else:
FreeCADGui.Selection.addSelection(obj)
#FreeCADGui.updateGui()
if self.form.baseList.selectedItems():
self.form.deleteBase.setEnabled(True)
FreeCADGui.Selection.clearSelection()
activatedRows = []
for item in self.form.baseList.selectedItems():
row = item.row()
if not row in activatedRows:
activatedRows.append(row)
obj = item.data(self.DataObject)
sub = str(item.data(self.DataObjectSub))
PathLog.debug("itemActivated() -> %s.%s" % (obj.Label, sub))
if sub:
FreeCADGui.Selection.addSelection(obj, sub)
else:
FreeCADGui.Selection.addSelection(obj)
else:
self.form.deleteBase.setEnabled(False)
def deleteBase(self):
'''deleteBase() ... callback for push button'''
PathLog.track()
deletedRows = []
selected = self.form.baseList.selectedItems()
for item in selected:
row = self.form.baseList.row(item)
if not row in deletedRows:
deletedRows.append(row)
self.form.baseList.removeRow(row)
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)
self.form.baseList.blockSignals(False)
#self.obj.Proxy.execute(self.obj)
FreeCAD.ActiveDocument.recompute()
self.setFields(self.obj);
def updateBase(self):
'''updateBase() ... helper function to transfer current table to obj'''
@@ -130,7 +138,9 @@ class TaskPanelHoleGeometryPage(PathOpGui.TaskPanelBaseGeometryPage):
PathLog.debug("keeping (%s.%s)" % (obj.Label, sub))
newlist.append(base)
PathLog.debug("obj.Base=%s newlist=%s" % (self.obj.Base, newlist))
self.updating = True
self.obj.Base = newlist
self.updating = False
def checkedChanged(self):
'''checkeChanged() ... callback when checked status of a base feature changed'''
@@ -161,7 +171,7 @@ class TaskPanelHoleGeometryPage(PathOpGui.TaskPanelBaseGeometryPage):
def updateData(self, obj, prop):
'''updateData(obj, prop) ... callback whenever a property of the model changed'''
if prop in ['Base', 'Disabled']:
if not self.updating and prop in ['Base', 'Disabled']:
self.setFields(obj)
class TaskPanelOpPage(PathOpGui.TaskPanelPage):

View File

@@ -40,7 +40,7 @@ __author__ = "sliptonic (Brad Collette)"
__url__ = "http://www.freecadweb.org"
__doc__ = "Path Drilling operation."
if False:
if True:
PathLog.setLevel(PathLog.Level.DEBUG, PathLog.thisModule())
PathLog.trackModule(PathLog.thisModule())
else:
@@ -116,27 +116,10 @@ class ObjectDrilling(PathCircularHoleBase.ObjectOp):
self.commandlist.append(Path.Command('G80'))
def setDepths(self, obj, zmax, zmin, bb):
'''setDepths(obj, zmax, zmin, bb) ... call base implementation and set RetractHeight accordingly.'''
super(self.__class__, self).setDepths(obj, zmax, zmin, bb)
if zmax is not None:
obj.RetractHeight = zmax + 1.0
else:
obj.RetractHeight = 6.0
def opSetDefaultValues(self, obj):
'''opSetDefaultValues(obj) ... set default value for RetractHeight'''
obj.RetractHeight = 10
def opOnChanged(self, obj, prop):
'''opOnChanged(obj, prop) ... if Locations changed, check if depths should be calculated.'''
super(self.__class__, self).opOnChanged(obj, prop)
if prop == 'Locations' and not 'Restore' in obj.State and obj.Locations and not obj.Base:
if not hasattr(self, 'baseobject'):
job = PathUtils.findParentJob(obj)
if job and job.Base:
self.setupDepthsFrom(obj, [], job.Base)
def Create(name):
'''Create(name) ... Creates and returns a Drilling operation.'''
obj = FreeCAD.ActiveDocument.addObject("Path::FeaturePython", name)