From 739b0e37ee6ce461cdfa550f3a5d410470f18f6c Mon Sep 17 00:00:00 2001 From: Trygve Laugstøl Date: Wed, 25 May 2016 23:31:20 +0200 Subject: o Working FreeCAD module for creating boxes useful for laser cutting. --- BoxerGui.py | 89 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 BoxerGui.py (limited to 'BoxerGui.py') diff --git a/BoxerGui.py b/BoxerGui.py new file mode 100644 index 0000000..b4d6258 --- /dev/null +++ b/BoxerGui.py @@ -0,0 +1,89 @@ +import FreeCAD +from FreeCAD import Gui +from PySide import QtGui, QtCore +import Boxer, BoxerDockWidget + +class BoxerDocumentObserver: + def __init__(self): + pass + +# def slotCreatedDocument(self, doc): +# print('slotCreatedDocument') + + def slotDeletedDocument(self, doc): + print('slotDeletedDocument') + gui.dockWidget.ui.generateButton.setEnabled(False) + +# def slotRelabelDocument(self, doc): +# print('slotRelabelDocument') + + def slotActivateDocument(self, doc): + print('slotActivateDocument') + gui.dockWidget.ui.generateButton.setEnabled(True) + +# def slotCreatedObject(self, obj): +# print('slotCreatedObject') + +# def slotDeletedObject(self, obj): +# print('slotDeletedObject') + +# def slotChangedObject(self, obj, prop): +# print('slotChangedObject') + +class BoxerGui(object): + + def __init__(self): + self.cfg = Boxer.BoxCfg().outerDimmensions(100, 100, 100) + self.cfg.notchUnitWidth = 10 + self.cfg.thickness = 10 + + def setupGui(self): + doc = FreeCAD.ActiveDocument + + self.dockWidget = dockWidget = QtGui.QDockWidget() + dockWidget.setWindowTitle("Box config") + dockWidget.ui = BoxerDockWidget.Ui_BoxerDockWidget() + dockWidget.generateClicked = self.generateButtonClick + dockWidget.ui.setupUi(dockWidget) + dockWidget.ui.generateButton.setEnabled(doc is not None) + dockWidget.ui.outerWidth.setValue(self.cfg.outerWidth) + dockWidget.ui.outerHeight.setValue(self.cfg.outerHeight) + dockWidget.ui.outerDepth.setValue(self.cfg.outerDepth) + dockWidget.ui.thickness.setValue(self.cfg.thickness) + dockWidget.ui.notchSize.setValue(self.cfg.notchUnitWidth) + + self.documentObserver = BoxerDocumentObserver() + FreeCAD.addDocumentObserver(self.documentObserver) + + def generateButtonClick(self): + ui = self.dockWidget.ui + + self.cfg.outerDimmensions( + ui.outerWidth.value(), + ui.outerHeight.value(), + ui.outerDepth.value()) + self.cfg.thickness = self.dockWidget.ui.thickness.value() + self.cfg.notchSize = self.dockWidget.ui.notchSize.value() + + self.cfg.prt() + self.removeBox() + doc = FreeCAD.ActiveDocument + Boxer.makeBox(doc, self.cfg) + + def removeBox(self): + doc = FreeCAD.ActiveDocument + + def rm(name): + o = getattr(doc, name, None); + if hasattr(doc, name): + doc.removeObject(name) + + rm("Top") + rm("Back") + rm("Left") + rm("Front") + rm("Right") + rm("Bottom") + +gui = BoxerGui() +gui.setupGui() -- cgit v1.2.3