script: Zugriff auf verlinktes Object

In diesem Forum Fragen und Diskussionen in Deutsch
Forum rules
Foren-Regeln und hilfreiche Informationen

WICHTIG: Bitte zuerst lesen, bevor Sie posten
Post Reply
Rainer_B
Posts: 23
Joined: Tue Jun 15, 2021 3:07 pm
Location: Hamburg / Germany

script: Zugriff auf verlinktes Object

Post by Rainer_B »

ich möchte mit meinem Stücklisten-Makro auf ein verlinktes Objekt zugreifen.
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)

Rainer_B
Posts: 23
Joined: Tue Jun 15, 2021 3:07 pm
Location: Hamburg / Germany

Re: script: Zugriff auf verlinktes Object erledigt

Post by Rainer_B »

ich habs !!!!! nach 2 Tagen rumprobieren habe ich die Funktion gefunden :

getLinkedObject() :idea:

Code: Select all

...
 for obj in self.doc.findObjects():
...
   print ( obj.getLinkedObject().Label2 )
...
damit kann ich weiterarbeiten

Gruß Rainer
Post Reply