Das stimmt schon, aber soviel ich weis gibt es diese Funktion nicht. Wie der Code des Baumes genau aussieht weis ich nicht, aber im Grunde wird er auch nichts anderes machen.Klar kann ich mir die aus Doc.Objects heraussuchen, aber eine eingebaute C++-Funktion wäre sicherlich flotter
Python Object Tree?
Re: Python Object Tree?
Re: Python Object Tree?
Klar, aber dynamisch typisierte, interpretierte Sprachen benutzt man vor allem denn wenn die Programiererzeit teuerer ist als die Laufzeit. Wie oft pro Sekunde musst du dass den in deiner Anwendung machen?ubit wrote:Klar kann ich mir die aus Doc.Objects heraussuchen, aber eine eingebaute C++-Funktion wäre sicherlich flotter.
Code: Select all
doc=FreeCAD.ActiveDocument
(obj for obj in doc.Objects if not obj.InList)
Re: Python Object Tree?
Danke. Ich kann halt kein Python und wurstele mich da im Moment so durch
Ciao, Udo
Ciao, Udo
Re: Python Object Tree?
Danke an Udo fürs hartnäckige hinterfragen und vielen danke an Sebastian und Ickby fürs Erläutern trotz hartnäckigen Nachfragens von Udo.
Sehr interesant, ich verstehe das ganze zwar nur oberflächlig, aber es gibt einen einblick und von Interesse ist das für mich auch ...
Sehr interesant, ich verstehe das ganze zwar nur oberflächlig, aber es gibt einen einblick und von Interesse ist das für mich auch ...
Re: Python Object Tree?
Document::_rebuildDependencyList zeigt im Prinzip schon wie's geht, baut allerdings die Nachbarschaftsliste über alle Objekte auf. Um nur die Objekte zu berücksichtigen, die als Input für das gegebene Objekt dienen, geht man dessen Out-Liste und rekursiv die Out-Listen dieser Objekt durch und spannt sich somit einen Untergraphen auf. Danach ruft man boost::topological_sort auf und geht die Liste von hinten nach vorne durch wie in Document::recompute()shoogen wrote:Den DAG hab ich auch noch nicht gefunden. Um den aufzufassen muss man wohl erst durch eine Menge boost durch.
Einen groben Überblick vermittelt der DepedencyGraph. (Und auch die Funktion um den zwecks Darstellung zu exportieren)
Also das mit der Wurzel würde ich nicht so ernst nehmen. Soweit ich weiß liegen die Objekte erst mal gleichwertig nebeneinander. Root ist für mich ein Objekt das keine Objekte in seiner InList hat.
PS: wenn du das mit dem Graphen durchblickt hast, könntest du mir helfen issue #1957 zu implementieren.
Bei der Implementierung muss man aber auf eines achten:
Prinzipiell muss damit gerechnet werden, dass der Graph Kreise enthält, was zu einer Endlosrekursion führt. Das ist zwar verboten, kann zur Laufzeit aber nicht effektiv unterbunden werden. Man merkt das erst bei einem Recompute, weil dort die "Not a dag"-Ausnahme geworfen wird.
- microelly2
- Veteran
- Posts: 4688
- Joined: Tue Nov 12, 2013 4:06 pm
- Contact:
Re: Python Object Tree?
Gibt es außer dem Abhängigkeitsgraphen bereits irgendeine schöne Darstellung der Abhängigkeiten?
Neulich war da die Diskussion in der Wunschliste für 0.16 irgendwas in die Richtung zu machen.
Die Funktionalität für Catia scheint mir vernünftig und lässt sich mit dem QTreeWidget
zumindest nachempfinden. Ein Baum, der auf die Vorfahren zeigt und ein Baum auf die Nachkommen.
http://ps-2.kev009.com/CATIA-B18/cfyugp ... parent.htm
Wenn es bereits was gibt, wäre ich sehr dankbar für einen Hinweis, man muss ja das Rad nicht immer wieder neu erfinden.
ansonsten würde ich da mal anfangen,
ich brauche diese Abhängigkeitsdarstellung für die Beschreibung von Arbeitsabläufen beim Design.