Man erstelle 2 Dokumente: eins mit einer Box (Label2=Hallo Box), das andere mit mehreren Links auf die Box
im 2. Dokument das Makro aufrufen
hier wünsche ich dann 2x "Hallo Box"
Im Detail , Part Design:
Neues Dokument: abspeichern= test1
-> Zu addierender Quader, ok
Eigenschaften-Daten: (rechtsklick alles Anzeigen)
Box.Label2=Hallo Box
mein Stücklisten Macro aufrufen
man sieht dann in der Stückliste: "Nr1; Box; Hallo Box"
soweit so gut
Neues Dokument: abspeichern= test2
test1-Body markieren; Verknüpfung erstellen (2x)
in test2 erscheinen nun 2 Links auf Body
wieder Stücklisten Makro aufrufen
in der dieser Stückliste ist jetzt kein Eintrag (wie zu erwarten)
nun die Frage:
gibt es für die Zeile :
"for obj in self.doc.findObjects():"
etwas, mit dem ich über den Link auf findObjects() in test1 zugreifen kann?
als Ergebnis erwarte ich dann:
Nr1; Box; Hallo Box
Nr2; Box; Hallo Box
Gruß Rainer
Code: Select all
# -*- coding: UTF-8-*-
import FreeCAD
class clsStueckliste:
def __init__(self):
self.cur_row=None
self.lfdNr=None
self.sheet=None
def createStueckliste( self, doc_):
self.doc=doc_
self.sheet = self.doc.addObject('Spreadsheet::Sheet','Stueckliste')
self.sheet.ViewObject.Visibility=False
self.sheet.Label="Stueckliste"
self.sheet.set("A1", "Lfd-Nr")
self.sheet.set("B1", "Label")
self.sheet.set("C1", "Label2")
self.cur_row=2
self.lfdNr=0
for obj in self.doc.findObjects():
if not obj.ViewObject.Visibility: continue
if obj.Label2 != "" :
self.lfdNr+=1
self.sheet.set("A"+str(self.cur_row), "Nr " + str(int(self.lfdNr)))
self.sheet.set("B"+str(self.cur_row), obj.Label)
self.sheet.set("C"+str(self.cur_row), obj.Label2 )
self.cur_row+=1
self.doc.recompute()
################################
a = App.ActiveDocument
Stueckliste = clsStueckliste()
Stueckliste.createStueckliste(a)