diff --git a/Calepinage.FCMacro b/Calepinage.FCMacro index 7442b79..870106b 100644 --- a/Calepinage.FCMacro +++ b/Calepinage.FCMacro @@ -36,22 +36,115 @@ class WindowDialog(): def _exportSketchCalepinage(self, sketchList, plateLength, plateWidth, spacing, laserSize): outputRacine = App.activeDocument().getFileName().rpartition('.')[0] + copy_sketchList = sketchList[:] __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) + currentX = 0.0 + currentY = 0.0 + isSVGFull = False + YBlockCounter = 0 + SVGNameCounter = 1 - print('Export SVG de : ' + __obj__[0].Label) - importSVG.export(__obj__, fichierSVG) - App.activeDocument().recompute() + while len(copy_sketchList) > 0: + maxY = 0.0 + counter = 0 + for __O__ in copy_sketchList: + boundingBox = __O__.Shape.BoundBox + if boundingBox.XLength + currentX > plateLength: + counter += 1 + continue + if boundingBox.YLength + currentY > plateWidth: + YBlockCounter += 1 + if YBlockCounter >= len(copy_sketchList): + isSVGFull = True + break + continue + __obj__.insert(0, __O__) + maxY = boundingBox.YLength if boundingBox.YLength > maxY else maxY + + 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)) + if currentX == 0.0: + __obj__[0].Placement.Base = FreeCAD.Vector(currentX, currentY, 0.0) + else: + __obj__[0].Placement.Base = FreeCAD.Vector(currentX + spacing, currentY, 0.0) + + currentX += boundingBox.XLength + +# __obj__[0].Placement = oldPlace +# App.ActiveDocument.removeObject(__O__.Label) + copy_sketchList.pop(counter) + counter += 1 + App.activeDocument().recompute() + + currentY += maxY + spacing + App.activeDocument().recompute() + + if isSVGFull or len(copy_sketchList) == 0: + fichierSVG = u"" + outputRacine + '--CALEPINAGE-' + str(SVGNameCounter) + '.svg' + print('Export SVG de : --CALEPINAGE-' + str(SVGNameCounter) + '.svg') + importSVG.export(__obj__, fichierSVG) + for __i__ in __obj__: + App.ActiveDocument.removeObject(__i__.Label) + + __obj__ = [] + App.activeDocument().recompute() + currentX = 0.0 + currentY = 0.0 + isSVGFull = False + SVGNameCounter += 1 + SVGBlockCounter = 0 + '''def _exportSketchCalepinage(self, sketchList, plateLength, plateWidth, spacing, laserSize): + outputRacine = App.activeDocument().getFileName().rpartition('.')[0] + copy_sketchList = sketchList[:] + objects_to_export = [] + currentX = 0.0 + currentY = 0.0 + isSVGFull = False + YBlockCounter = 0 + SVGNameCounter = 1 + + while len(copy_sketchList) != 0: + maxY = 0.0 + counter = 0 + for obj in copy_sketchList: + boundingBox = obj.Shape.BoundBox + if boundingBox.XLength + currentX > plateLength: + counter += 1 + continue + if boundingBox.YLength + currentY > plateWidth: + YBlockCounter += 1 + if YBlockCounter >= len(copy_sketchList): + isSVGFull = True + break + continue + objects_to_export.insert(0, obj) + maxY = boundingBox.YLength if boundingBox.YLength > maxY else maxY + + oldPlace = objects_to_export[0].Placement + objects_to_export[0].Placement = App.Placement(App.Vector(0, 0, 0), App.Rotation(App.Vector(1, 0, 0), 0), App.Vector(0, 0, 0)) + if currentX == 0.0: + objects_to_export[0].Placement.Base = FreeCAD.Vector(currentX, currentY, 0.0) + else: + objects_to_export[0].Placement.Base = FreeCAD.Vector(currentX + spacing, currentY, 0.0) + + currentX += boundingBox.XLength + counter_to_remove = copy_sketchList.index(obj) + copy_sketchList.pop(counter_to_remove) + counter += 1 + App.activeDocument().recompute() + + currentY += maxY + spacing + App.activeDocument().recompute() + + if isSVGFull or len(copy_sketchList) == 0: + fichierSVG = outputRacine + '--CALEPINAGE-' + str(SVGNameCounter) + '.svg' + print('Export SVG de : --CALEPINAGE-' + str(SVGNameCounter) + '.svg') + importSVG.export(objects_to_export, fichierSVG) + for i in objects_to_export: + App.ActiveDocument.removeObject(i.Label) + App.activeDocument().recompute() + objects_to_export = []''' + # -------- END -------- #