Fixed drilling depths and circular hole remove logic.
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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):
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user