From 6ae7bd2cdbf787f4c845f0ca210558319d46ac9b Mon Sep 17 00:00:00 2001 From: "Zheng, Lei" Date: Thu, 11 Jul 2019 06:32:22 +0800 Subject: [PATCH 1/3] Strip quote from cell content --- aliasManager_popup.py | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/aliasManager_popup.py b/aliasManager_popup.py index 8950cf4..e04294e 100644 --- a/aliasManager_popup.py +++ b/aliasManager_popup.py @@ -92,6 +92,13 @@ def close(self): alphabet_list = list(string.ascii_uppercase) class p(): + + def getContents(self,obj,cell): + res = obj.getContents(cell) + if res and res[0]=="'": + return res[1:] + return res + def aliasManager(self): try: @@ -109,7 +116,7 @@ def aliasManager(self): cell_from = 'A' + str(i) cell_to = str(column_from) + str(i) App.ActiveDocument.Spreadsheet.setAlias(cell_to, '') - App.ActiveDocument.Spreadsheet.setAlias(cell_to, App.ActiveDocument.Spreadsheet.getContents(cell_from)) + App.ActiveDocument.Spreadsheet.setAlias(cell_to, self.getContents(App.ActiveDocument.Spreadsheet,cell_from)) App.ActiveDocument.recompute() FreeCAD.Console.PrintMessage("\nAliases set\n") @@ -135,7 +142,7 @@ def aliasManager(self): cell_to = column_to + str(i) App.ActiveDocument.Spreadsheet.setAlias(cell_from, '') App.ActiveDocument.recompute() - App.ActiveDocument.Spreadsheet.setAlias(cell_to, App.ActiveDocument.Spreadsheet.getContents(cell_reference)) + App.ActiveDocument.Spreadsheet.setAlias(cell_to, self.getContents(App.ActiveDocument.Spreadsheet,cell_reference)) App.ActiveDocument.recompute() FreeCAD.Console.PrintMessage("\nAliases moved\n") @@ -166,12 +173,12 @@ def char_range(c1, c2): cell_to = str(fam_range[index]) + str(i) App.ActiveDocument.Spreadsheet.setAlias(cell_from, '') App.ActiveDocument.recompute() - App.ActiveDocument.Spreadsheet.setAlias(cell_to, App.ActiveDocument.Spreadsheet.getContents(cell_reference)) + App.ActiveDocument.Spreadsheet.setAlias(cell_to, self.getContents(App.ActiveDocument.Spreadsheet,cell_reference)) App.ActiveDocument.recompute() sfx = str(fam_range[index]) + '1' # save file - suffix = App.ActiveDocument.Spreadsheet.getContents(sfx) + suffix = self.getContents(App.ActiveDocument.Spreadsheet,sfx) filename = filePrefix + '_' + suffix + '.fcstd' filePath = os.path.join(docDir, filename) @@ -359,4 +366,5 @@ def disableWidget(currentIndex): def popup(self): self.dialog2 = infoPopup() self.dialog2.exec_() -p() \ No newline at end of file +p() + From c89dae135ad21cdedb234c51518c8cc2c45a33f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20=C4=8Capek?= Date: Sat, 19 Feb 2022 23:39:56 +0100 Subject: [PATCH 2/3] Report full exception details when aliasing fails --- aliasManager_popup.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/aliasManager_popup.py b/aliasManager_popup.py index e04294e..913b02c 100644 --- a/aliasManager_popup.py +++ b/aliasManager_popup.py @@ -205,8 +205,8 @@ def char_range(c1, c2): FreeCAD.Console.PrintError("\nError or 'TODO'\n") - except: - FreeCAD.Console.PrintError("\nUnable to complete task\n") + except Exception as e: + FreeCAD.Console.PrintError("\nUnable to complete task: %s\n", e) self.close() From 1384da6f5132c3207c22d10ba81d4cf6c7ec05da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20=C4=8Capek?= Date: Sat, 19 Feb 2022 23:41:31 +0100 Subject: [PATCH 3/3] Support documents with multiple spreadsheets - make the macro work on an active spreadsheet only in a document where multiple spreadsheets exist - replace direct access to App.ActiveDocument.Spreadsheet with a helper that was able to extract the active spreadsheet reference --- aliasManager_popup.py | 31 +++++++++++++++---------------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/aliasManager_popup.py b/aliasManager_popup.py index 913b02c..2e9906b 100644 --- a/aliasManager_popup.py +++ b/aliasManager_popup.py @@ -92,12 +92,11 @@ def close(self): alphabet_list = list(string.ascii_uppercase) class p(): - - def getContents(self,obj,cell): - res = obj.getContents(cell) - if res and res[0]=="'": - return res[1:] - return res + def get_active_spreadsheet(self): + active_object = Gui.Selection.getSelectionEx()[0].Object + if active_object.TypeId != 'Spreadsheet::Sheet': + raise("No spreadsheet selected!") + return active_object def aliasManager(self): try: @@ -108,15 +107,15 @@ def aliasManager(self): column_to = self.d3.currentText() row_from = self.d4.value() row_to = self.d5.value() - + active_spreadsheet = self.get_active_spreadsheet() # ===== Mode - Set ============================================== if mode == "Set aliases": for i in range(row_from,row_to+1): cell_from = 'A' + str(i) cell_to = str(column_from) + str(i) - App.ActiveDocument.Spreadsheet.setAlias(cell_to, '') - App.ActiveDocument.Spreadsheet.setAlias(cell_to, self.getContents(App.ActiveDocument.Spreadsheet,cell_from)) + active_spreadsheet.setAlias(cell_to, '') + active_spreadsheet.setAlias(cell_to, active_spreadsheet.getContents(cell_from)) App.ActiveDocument.recompute() FreeCAD.Console.PrintMessage("\nAliases set\n") @@ -126,7 +125,7 @@ def aliasManager(self): elif mode == "Clear aliases": for i in range(row_from,row_to+1): cell_to = str(column_from) + str(i) - App.ActiveDocument.Spreadsheet.setAlias(cell_to, '') + active_spreadsheet.setAlias(cell_to, '') App.ActiveDocument.recompute() FreeCAD.Console.PrintMessage("\nAliases cleared\n") @@ -140,9 +139,9 @@ def aliasManager(self): cell_reference = 'A'+ str(i) cell_from = column_from + str(i) cell_to = column_to + str(i) - App.ActiveDocument.Spreadsheet.setAlias(cell_from, '') + active_spreadsheet.setAlias(cell_from, '') App.ActiveDocument.recompute() - App.ActiveDocument.Spreadsheet.setAlias(cell_to, self.getContents(App.ActiveDocument.Spreadsheet,cell_reference)) + active_spreadsheet.setAlias(cell_to, active_spreadsheet.getContents(cell_reference)) App.ActiveDocument.recompute() FreeCAD.Console.PrintMessage("\nAliases moved\n") @@ -171,14 +170,14 @@ def char_range(c1, c2): cell_reference = 'A' + str(i) cell_from = str(fam_range[index-1]) + str(i) cell_to = str(fam_range[index]) + str(i) - App.ActiveDocument.Spreadsheet.setAlias(cell_from, '') + active_spreadsheet.setAlias(cell_from, '') App.ActiveDocument.recompute() - App.ActiveDocument.Spreadsheet.setAlias(cell_to, self.getContents(App.ActiveDocument.Spreadsheet,cell_reference)) + active_spreadsheet.setAlias(cell_to, active_spreadsheet.getContents(cell_reference)) App.ActiveDocument.recompute() sfx = str(fam_range[index]) + '1' # save file - suffix = self.getContents(App.ActiveDocument.Spreadsheet,sfx) + suffix = active_spreadsheet.getContents(sfx) filename = filePrefix + '_' + suffix + '.fcstd' filePath = os.path.join(docDir, filename) @@ -188,7 +187,7 @@ def char_range(c1, c2): # Clear last aliases created: for j in range(row_from,row_to+1): cell_to = str(column_to) + str(j) - App.ActiveDocument.Spreadsheet.setAlias(cell_to, '') + active_spreadsheet.setAlias(cell_to, '') App.ActiveDocument.recompute() # Turn working file to original naming: