diff --git a/MultiExport.FCMacro b/MultiExport.FCMacro
index baa959b..e41e281 100755
--- a/MultiExport.FCMacro
+++ b/MultiExport.FCMacro
@@ -26,6 +26,9 @@ class ObjectListItem(QWidget):
def get_value(self):
return self.spinbox.value()
+ def set_value(self, value):
+ self.spinbox.setValue(value)
+
class WindowDialog():
def __init__(self):
@@ -35,8 +38,9 @@ class WindowDialog():
self.form = FreeCADGui.PySideUic.loadUi(self.ui_file)
self.connect_widgets()
self.populate_selector_list()
+ self.listVarSets()
- FreeCADGui.Selection.addObserver(self.on_selection_changed)
+ # FreeCADGui.Selection.addObserver(self.on_selection_changed)
self.form.show()
@@ -44,6 +48,7 @@ class WindowDialog():
def connect_widgets(self):
self.form.pushButtonExport.pressed.connect(self.export)
self.form.pushButtonSave.pressed.connect(self.saveVarSet)
+ self.form.pushButtonLoad.pressed.connect(self.loadVarSet)
def populate_selector_list(self):
@@ -51,7 +56,7 @@ class WindowDialog():
FreeCADGui.Selection.clearSelection()
for obj in FreeCAD.ActiveDocument.Objects:
- if obj.Label.endswith("-SVG") or obj.Label.endswith("-STL"):
+ if obj.Label.endswith("_SVG") or obj.Label.endswith("_STL"):
item = QListWidgetItem()
widget = ObjectListItem(obj)
@@ -62,21 +67,6 @@ class WindowDialog():
item.setSelected(True)
- def on_selection_changed(self, doc, objects):
- for index in range(self.form.listWidgetSelector.count()):
- item = self.form.listWidgetSelector.item(index)
- widget = self.form.listWidgetSelector.itemWidget(item)
- item.setSelected(False)
-
- for obj in FreeCADGui.Selection.getSelection():
- for index in range(self.form.listWidgetSelector.count()):
- item = self.form.listWidgetSelector.item(index)
- widget = self.form.listWidgetSelector.itemWidget(item)
- if widget.obj == obj:
- item.setSelected(True)
- break
-
-
def createFolder(self):
date = datetime.today().strftime('%Y-%m-%d')
time = datetime.today().strftime('%H:%M:%S')
@@ -94,7 +84,7 @@ class WindowDialog():
return folderPath
-# -------- MODIFICATION DE LA MACRO "exportSketchEnMasse-SVG" de Gauthier Brière -------- #
+# -------- MODIFICATION DE LA MACRO "exportSketchEnMasse_SVG" de Gauthier Brière -------- #
def exportSketchBasic(self, sketchList):
for __O__ in sketchList:
@@ -297,9 +287,9 @@ class WindowDialog():
if widget.obj == obj:
count = widget.get_value()
- if obj.Label.endswith("-SVG"):
+ if obj.Label.endswith("_SVG"):
svgList.append((obj.Label, obj, count))
- elif obj.Label.endswith("-STL"):
+ elif obj.Label.endswith("_STL"):
stlList.append((obj.Label, obj, count))
break
@@ -310,28 +300,89 @@ class WindowDialog():
self.exportSTL(isCombine, stlList)
- def saveVarSet(self, varSetName = "TestVarSet"):
+ def saveVarSet(self):
+ varSetName = self.form.saveTextValue.text()
varSet = FreeCAD.ActiveDocument.addObject("App::VarSet", varSetName)
+ self.form.saveTextValue.setText("")
- for obj in FreeCADGui.Selection.getSelection():
+ for obj in FreeCAD.ActiveDocument.Objects:
count = 1
for index in range(self.form.listWidgetSelector.count()):
item = self.form.listWidgetSelector.item(index)
widget = self.form.listWidgetSelector.itemWidget(item)
+
if widget.obj == obj:
count = widget.get_value()
break
- varSet.addProperty("App::PropertyStringList", obj.Name)
- if obj.Label.endswith("-SVG"):
- setattr(varSet, obj.Name, ("SVG", str(count)))
- else:
- setattr(varSet, obj.Name, ("STL", str(count)))
+ if obj.Label.endswith("_SVG") or obj.Label.endswith("_STL"):
+ varSet.addProperty("App::PropertyStringList", obj.Label, "MultiExport")
+ if obj.Label.endswith("_SVG"):
+ setattr(varSet, obj.Label, ("SVG", str(count)))
+ else:
+ setattr(varSet, obj.Label, ("STL", str(count)))
+
+ self.listVarSets()
FreeCAD.ActiveDocument.recompute()
- # def loadVarSet(self, varSetName = "TestVarSet", count = 1):
+ '''def loadVarSet(self):
+ # faire lien entre VarSet et liste
+ # refresh a la fin ?
+
+ varSetName = self.form.loadDropDown.currentText()
+ varSet = FreeCAD.ActiveDocument.getObject(varSetName)
+ for prop in varSet.PropertiesList:
+ if varSet.getGroupOfProperty(prop) == "MultiExport":
+ print(f"{prop}: {getattr(varSet, prop)}")
+
+ for index in range(self.form.listWidgetSelector.count()):
+ item = self.form.listWidgetSelector.item(index)
+ widget = self.form.listWidgetSelector.itemWidget(item)
+
+ if widget.obj == obj:
+ count = widget.get_value()
+ break'''
+
+ def loadVarSet(self):
+ varSetName = self.form.loadDropDown.currentText()
+ if not varSetName:
+ return
+
+ varSet = FreeCAD.ActiveDocument.getObject(varSetName)
+ if not varSet:
+ return
+
+ values_dict = {}
+ for prop in varSet.PropertiesList:
+ if varSet.getGroupOfProperty(prop) == "MultiExport":
+ val = getattr(varSet, prop)
+ if isinstance(val, tuple) or isinstance(val, list):
+ try:
+ count = int(val[1])
+ values_dict[prop] = count
+ except Exception:
+ pass
+
+ for index in range(self.form.listWidgetSelector.count()):
+ item = self.form.listWidgetSelector.item(index)
+ widget = self.form.listWidgetSelector.itemWidget(item)
+ if widget.obj.Label in values_dict:
+ widget.set_value(values_dict[widget.obj.Label])
+
+
+
+ def listVarSets(self):
+ varSetsList = [obj for obj in FreeCAD.ActiveDocument.Objects if obj.TypeId == "App::VarSet"]
+
+ self.form.loadDropDown.clear()
+
+ self.form.loadDropDown.setPlaceholderText("Select a VarSet")
+
+ for varSet in varSetsList:
+ self.form.loadDropDown.addItem(varSet.Label, varSet.Name)
+
if __name__ == '__main__':
diff --git a/MultiExport/MultiExport.ui b/MultiExport/MultiExport.ui
index f76e2b3..4c8e135 100644
--- a/MultiExport/MultiExport.ui
+++ b/MultiExport/MultiExport.ui
@@ -17,7 +17,7 @@
Multi Export
- -
+
-
❓
@@ -180,20 +180,48 @@
- -
-
-
- Exporter
-
-
-
- -
+
+
+
+
+ -
+
+
+
-
Save
+ -
+
+
+ Load
+
+
+
+ -
+
+
+
+
+
+ 160
+
+
+
+ -
+
+
+
+ -
+
+
+ Exporter
+
+
+