diff --git a/Calepinage.FCMacro b/Calepinage.FCMacro new file mode 100644 index 0000000..7442b79 --- /dev/null +++ b/Calepinage.FCMacro @@ -0,0 +1,96 @@ +import importSVG +import FreeCAD +import FreeCADGui +import Draft +import os + +class WindowDialog(): + def __init__(self): + self.ui_file = os.path.join(FreeCAD.getUserMacroDir(True), 'Calepinage/Calepinage.ui') + self.form = FreeCADGui.PySideUic.loadUi(self.ui_file) + self._connect_widgets() + self.form.show() + + def _connect_widgets(self): + self.form.pushButtonSVG.pressed.connect(lambda: self.export(False)) + self.form.pushButtonCalepinage.pressed.connect(lambda: self.export(True)) + +# -------- MODIFICATION DE LA MACRO "exportSketchEnMasse-SVG" de Gauthier Brière -------- # + + def _exportSketchBasic(self, sketchList): + outputRacine = App.activeDocument().getFileName().rpartition('.')[0] + for __O__ in sketchList: + __obj__ = [] + __obj__.append(__O__) + + print('Export SVG de : ' + __obj__[0].Label) + + oldPlace = __obj__[0].Placement + __obj__[0].Placement=App.Placement(App.Vector(0,0,0), App.Rotation(App.Vector(1,0,0),0), App.Vector(0,0,0)) + fichierSVG = u"" + outputRacine + '--' + __obj__[0].Label + '.svg' + importSVG.export(__obj__, fichierSVG) + __obj__[0].Placement = oldPlace + App.ActiveDocument.removeObject(__O__.Label) + + App.activeDocument().recompute() + + def _exportSketchCalepinage(self, sketchList, plateLength, plateWidth, spacing, laserSize): + outputRacine = App.activeDocument().getFileName().rpartition('.')[0] + __obj__ = [] + for __O__ in sketchList: + __obj__.append(__O__) + + print('Export SVG de : ' + __obj__[0].Label) + + oldPlace = __obj__[0].Placement + __obj__[0].Placement=App.Placement(App.Vector(0,0,0), App.Rotation(App.Vector(1,0,0),0), App.Vector(0,0,0)) + fichierSVG = u"" + outputRacine + '--' + __obj__[0].Label + '.svg' + importSVG.export(__obj__, fichierSVG) + __obj__[0].Placement = oldPlace + App.ActiveDocument.removeObject(__O__.Label) + + print('Export SVG de : ' + __obj__[0].Label) + importSVG.export(__obj__, fichierSVG) + App.activeDocument().recompute() + +# -------- END -------- # + + +# -------- MODIFICATION DE MA MACRO "QuickSVGExport" -------- # + + def export(self, isCalepinage): + plateLength = self.form.doubleSpinBoxLength.value() + plateWidth = self.form.doubleSpinBoxWidth.value() + spacing = self.form.doubleSpinBoxSpacing.value() + laserSize = self.form.doubleSpinBoxLaserSize.value() + sketchList = [] + for selectedObject in FreeCADGui.Selection.getSelectionEx(): + try: + if hasattr(selectedObject.Object, 'Dir'): + sv0 = Draft.make_shape2dview(selectedObject.Object, FreeCAD.Vector(selectedObject.Object.Dir)) + elif hasattr(selectedObject.Object, 'Objects'): + for child in selectedObject.Object.Objects: + if hasattr(child, 'Dir'): + sv0 = Draft.make_shape2dview(selectedObject.Object, FreeCAD.Vector(child.Dir)) + break + print("FAILURE IF") + FreeCAD.ActiveDocument.recompute() + sk = Draft.make_sketch(sv0, autoconstraints=True) + sk.ViewObject.LineColor = (1.0, 0.0, 0.0) + FreeCAD.ActiveDocument.recompute() + sketchList.append(sk) + if hasattr(sv0, 'Name'): + App.ActiveDocument.removeObject(sv0.Name) + except: + print("FAILURE TRY") + + if isCalepinage: + self._exportSketchCalepinage(sketchList, plateLength, plateWidth, spacing, laserSize) + else: + self._exportSketchBasic(sketchList) + +# -------- END -------- # + + +if __name__ == '__main__': + d = WindowDialog() \ No newline at end of file diff --git a/Calepinage/Calepinage.ui b/Calepinage/Calepinage.ui new file mode 100644 index 0000000..0addf89 --- /dev/null +++ b/Calepinage/Calepinage.ui @@ -0,0 +1,141 @@ + + + Calepinage + + + Qt::WindowModal + + + + 0 + 0 + 400 + 200 + + + + Calepinage + + + + + + + + + Longueur du plateau (mm) : + + + + + + + 999999.000000000000000 + + + 50.000000000000000 + + + + + + + Largeur du plateau (mm) : + + + + + + + 999999.000000000000000 + + + 50.000000000000000 + + + + + + + Espacement (mm) : + + + + + + + 999999.000000000000000 + + + 5.000000000000000 + + + + + + + Epaisseur du laser (mm) : + + + + + + + 999999.000000000000000 + + + 5.000000000000000 + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + Calepinage + + + Qt::AlignVCenter + + + + 0 + 50 + + + + + + + + Export en .svg +(sans calepinage) + + + Qt::AlignVCenter + + + + 0 + 50 + + + + + + + + +