Chritian W. Geschrieben 18. September 2021 Teilen Geschrieben 18. September 2021 Hallo, ich versuche in Zusammenhang mit dem Umbenennen von mehreren Objekten die Objekte heraus zu filtern, welche diesen Namen bereits haben. Der Filter macht aber eigenartige Dinge, so dass in beiden Listen, die der Filter ausgibt Objekte mit dem Namen erscheinen. Prinzipiell wechselt er die Liste, nach dem er ein Objekt hat, welches unbenannt ist. im Beispiel Position 4 und 8. welchen Zusammenhang hat das, was muss man tun damit Errichtung arbeitet. Namen_Nummerieren_v2021.vwx Link zu diesem Kommentar
Manuel Roth Geschrieben 18. September 2021 Teilen Geschrieben 18. September 2021 Hallo Das dir not equal lustige Ergebnisse liefert erscheint mir logisch. Du prüfst für jeden Eintrag der Liste nacheinander und einzeln ob sie nicht gleich sind. Das heisst du vergleichst nur Eintag 1 mit 1, 2 mit 2 usw. Was du suchst ist der Node Is Member. Der Prüft, ob ein Item in einer Liste vorhanden ist. Freundliche Grüsse Manuel Roth _________________________________________________ Vectorworks 2022 SP3 | Architektur | Windows 10 Link zu diesem Kommentar
m.graf Geschrieben 18. September 2021 Teilen Geschrieben 18. September 2021 (bearbeitet) Hallo Manuel, müsste auch so gehen nur die "get Name" Node reagiert nicht so wie "gedacht". Wenn man "get Name" anhängt werden in der Datei einige Rechtecke ohne Namen nicht gelistet, damit passt die Länge der Listen nicht mehr. Kannst dir mal mein geändertes Script "get Name" ansehen, auch da sieht man das "None" nur einmal auftaucht (warum das so ist weiss ich nicht). Kannst du mal prüfen, ob der "Bug" auch bei "is Member" zusammen mit der normalen "Get Name Node" auftaucht? eventuell eine Bugmeldung fällig? Hallo Chritian, hier meine Abänderung deines Scriptes... Als Filter Prüfung habe ich den Teilstring "Entwässerungsgebiet" genommen, das erspart dir die "is Member" Node. Und die "Get Name" Node hab ich mal geändert... Vielleicht noch zwei generelle Tips. Egal was man scriptet, die Summe der "Teil-Listen" muss immer passen, in deinem / Ihrem Beispiel: Wenn 12 Objekte reingehen, müssen hinter dem Filter auch in Summe 12 wieder rauskommen, bei der normalen Node "get Name" kommen bei dir / Ihnen aber nur 4 statt 6 Werte raus und: Ich persönlich würde nicht mit "Namen" im Script arbeiten, bei einem anderen Projekt "Tiles" hab ich damit sehr schlechte Erfahrungen gemacht. Würde immer eine Datenbank anhängen und dort die Werte reinschreiben und auslesen. Namen_Nummerieren_v2021.vwx Gruß M. Graf Bearbeitet 18. September 2021 von m.graf 1 Link zu diesem Kommentar
m.graf Geschrieben 18. September 2021 Teilen Geschrieben 18. September 2021 Oh je, es ist noch verrückter als ich dachte... Die "Get Name" Node - ist eine Bugmeldung wert. Neue Rechtecke liefern den Namen "None". Vergibt man einen Namen und löscht den wieder kommt kein "None" mehr raus sondern ein leerer Eintrag. Aber auf jeden Fall stimmen die Listen nicht! Gruß M. Graf Link zu diesem Kommentar
Chritian W. Geschrieben 19. September 2021 Autor Teilen Geschrieben 19. September 2021 Ich arbeite jetzt auf jeden Fall mit „Is Member“ weiter und gebe wenn notwendig die Namen erst später aus. Auch in diesem Fall gibt der Standard Get Name nur die Objekte aus, welche einen Namen besitzen. Wenn noch kein Name vergeben wurde, gibt der Get Name auch für mehr als ein Objekt „none“ aus. Nur wenn der vergebene Name gelöscht wurde gibt es kein „none“ mehr und der Standard „Get Name“ führt das Objekt nicht mehr auf. Link zu diesem Kommentar
Chritian W. Geschrieben 19. September 2021 Autor Teilen Geschrieben 19. September 2021 vor 19 Stunden schrieb m.graf: Würde immer eine Datenbank anhängen und dort die Werte reinschreiben und auslesen. Namen_Nummerieren_v2021.vwx 477 kB · 1 download Das mit der Datenbank ist noch einmal eine Überlegung wert. aber müssten die Namen der bereits benannten Objekte nicht sowieso schon in irgend einer Datenbank stehen - wie kann man darauf zugreifen? ich bin jedoch mit der Verwendung von Datenbanken auch schon etwas vorsichtig geworden. Wenn man innerhalb eines Netzwerkes eine Datenbank schreibt und wieder ausliest, kann es passieren, dass der zu schreibende Wert einen Bruchteil einer Millisekunde zu spät geschrieben wird. Dann steht der zwar in der Datenbank, aber in der Ausgabe steht noch der alte Wert. Einen Zusammenhang mit der Reihenfolge konnte ich an dieser Stelle nicht feststellten und musste es dann punktuell anders lösen. Link zu diesem Kommentar
Chritian W. Geschrieben 19. September 2021 Autor Teilen Geschrieben 19. September 2021 (bearbeitet) vor 21 Stunden schrieb Manuel Roth: Hallo Das dir not equal lustige Ergebnisse liefert erscheint mir logisch. Du prüfst für jeden Eintrag der Liste nacheinander und einzeln ob sie nicht gleich sind. Das heisst du vergleichst nur Eintag 1 mit 1, 2 mit 2 usw. Was du suchst ist der Node Is Member. Der Prüft, ob ein Item in einer Liste vorhanden ist. OK jetzt stehe ich wieder vor dem Problem, dass der Filter nicht wie gewünscht funktioniert. Ich möchte letztendlich die Namen, welche es schon gibt, aus der Neu erstellten Namensliste entfernen. aber entweder werden alle Werte in eine Liste gesteckt, Obwohl Member zumindest mal die richtige Anzahl ausgibt. Bei If in String und equal sollen die ja eigentlich den richtigen Abgleich machen, aber die Ausgabe ist nicht richtig. Namen_Nummerieren_v2021 2.vwx Namen_Nummerieren_v2021 2.vwx Bearbeitet 19. September 2021 von Chritian W. Link zu diesem Kommentar
m.graf Geschrieben 19. September 2021 Teilen Geschrieben 19. September 2021 (bearbeitet) Schalte mal den "Bugmodus ein", das ist der kleine Käfer in der Optionsleiste der Marionette Nodes und schau dir die Listenlängen an, (jede Linie im Netzwerk bekommt dann die Listenlänge als Zahl). Mir ist das Script zu unübersichtlich geworden um es heute schnell prüfen zu können. Mein Tip: am besten etappenweise prüfen, ob speziell bei der Filternode genau so viele Ja / Nein bei der Prüfung "unten" reinlaufen wie oben Objekte... sonst wird das nichts werden. Und solange die normale get Name dabei ist werden die Listen nicht passen. Gruß Markus Bearbeitet 19. September 2021 von m.graf Link zu diesem Kommentar
KroVex Geschrieben 20. September 2021 Teilen Geschrieben 20. September 2021 Wieso so kompliziert? Wieso nicht einfach den Node "Objs by Crit" als Vorfilter verwenden? Z.B.: Objekt Ist Aktiv & Name enthält nicht "Entwässerungdsdings" & Name enthält nicht "Apfel" -> Der Rest wird umbenannt. Oder noch einfacher: Objekt Ist Aktiv & Name enthält nicht "*" (Stern) -> alles was bereits einen Namen hat, wird nicht ausgegeben.. vor 22 Stunden schrieb m.graf: Schalte mal den "Bugmodus ein", das ist der kleine Käfer in der Optionsleiste der Marionette Nodes und schau dir die Listenlängen an, (jede Linie im Netzwerk bekommt dann die Listenlänge als Zahl). Das macht der "Print Debug" Node auch ("Number of Item: = Listenlänge) Gruss KroVex 1 CADNODE.ch Lassen Sie uns gemeinsam effiziente und innovative CAD-Lösungen für Ihr Projekt finden! Have you tried to turn it off and on again? Vectorworks | Architektur | macOS/Windows Link zu diesem Kommentar
Chritian W. Geschrieben 20. September 2021 Autor Teilen Geschrieben 20. September 2021 vor 6 Stunden schrieb KroVex: Wieso so kompliziert? Wieso nicht einfach den Node "Objs by Crit" als Vorfilter verwenden? Ja das wäre schön wenn es so einfach wäre, es steckt jedoch etwas mehr Überlegung dahinter. Also es können im Projekt Objekte vorhanden sein, welche bereits den Namen mit einer Zählnummer haben. Alle neuen Objekte sollen auch den Namen mit einer Zählnummer bekommen, ohne das die Zählnummern der bereits benannten Objekte neu vergeben werden. Ich habe mir die im Anhang beschriebenen Schritte überlegt. Was ich nicht verstehe, warum das Herausfiltern der Namen, welche bereits vergeben sind, aus der neu erstellten Namensliste nicht funktioniert. Link zu diesem Kommentar
m.graf Geschrieben 21. September 2021 Teilen Geschrieben 21. September 2021 (bearbeitet) Hallo zusammen, In der ersten Datei gab es Objekte, die mal benannt waren und der Name wurde dann gelöscht, damit passte keine Liste, die aus "get Name" rauskam. Da bei der normalen get Name die Objekte mit gelöschten Namen in der Liste fehlen. (Bugmeldung?) Zweiter Fehler war, das nicht ein Teilstring als Filter genutzt wurde / das kann man mit "is Member" umgehen, muss man aber nicht. Falsche Listenlängen sieht man halt am schnellsten mit dem Käfer, dafür braucht man nicht hinter jede Node die Printdebug hängen. @Krovex im (Bild unten) sieht man die vielen kleinen Fallstricke, die in Marionette möglich sind: hinter dem oberen PrintDebug: Listennummer 13 = "Marionette Group Print Debug_28" entweder hat der Ausdruck einen Namen oder ist zeitgleich aktiv oder beides, und wieder würden die Listen im weiteren Script nicht passen. Gruß M.Graf Am 20.9.2021 um 11:50 schrieb KroVex: Wieso so kompliziert? Wieso nicht einfach den Node "Objs by Crit" als Vorfilter verwenden? Z.B.: Objekt Ist Aktiv & Name enthält nicht "Entwässerungdsdings" & Name enthält nicht "Apfel" -> Der Rest wird umbenannt. Oder noch einfacher: Objekt Ist Aktiv & Name enthält nicht "*" (Stern) -> alles was bereits einen Namen hat, wird nicht ausgegeben.. Bearbeitet 21. September 2021 von m.graf Link zu diesem Kommentar
KroVex Geschrieben 22. September 2021 Teilen Geschrieben 22. September 2021 Am 20.9.2021 um 18:42 schrieb Chritian W.: Also es können im Projekt Objekte vorhanden sein, welche bereits den Namen mit einer Zählnummer haben. Alle neuen Objekte sollen auch den Namen mit einer Zählnummer bekommen, ohne das die Zählnummern der bereits benannten Objekte neu vergeben werden. Ich habe deine Problematik verstanden und konnte einen Weg finden dies zu lösen. Was allerdings noch offen bleibt: Wenn du z.B. 30 Objekte mit einer bestehenden Nummerierung hast, 15 davon löscht und 5 neu hinzufügst, dann wirst du trotzdem keine durchgehende Nummerierung haben, da ja die bestehenden nicht angefasst werden sollen (also z.B. "Entwässerungsgebiet_29" könnte immer noch vorhanden sein, obwohl du nur 20 Objekte hast). Mein Lösungsweg: Name_Nummerierung.vwx Gruss KroVex CADNODE.ch Lassen Sie uns gemeinsam effiziente und innovative CAD-Lösungen für Ihr Projekt finden! Have you tried to turn it off and on again? Vectorworks | Architektur | macOS/Windows Link zu diesem Kommentar
Chritian W. Geschrieben 22. September 2021 Autor Teilen Geschrieben 22. September 2021 vor 7 Stunden schrieb KroVex: Wenn du z.B. 30 Objekte mit einer bestehenden Nummerierung hast, 15 davon löscht und 5 neu hinzufügst, dann wirst du trotzdem keine durchgehende Nummerierung haben, da ja die bestehenden nicht angefasst werden sollen (also z.B. "Entwässerungsgebiet_29" könnte immer noch vorhanden sein, obwohl du nur 20 Objekte hast) Vielen Dank, das könnte gut funktionieren, werde es austesten. Der Punkt, dass keine durchgängige Nummerierung nach löschen einzelner mehr vorhanden ist, ist in Ordnung. Da zu diesem Objekt dann möglicherweise bereits eine Datenbank existiert. Diese Zuordnung muss dann also bestehen bleiben. Link zu diesem Kommentar
KroVex Geschrieben 22. September 2021 Teilen Geschrieben 22. September 2021 vor 11 Minuten schrieb Chritian W.: Der Punkt, dass keine durchgängige Nummerierung nach löschen einzelner mehr vorhanden ist, ist in Ordnung. Da zu diesem Objekt dann möglicherweise bereits eine Datenbank existiert. Wenn du mit Datenbanken arbeitest, könntest du dir natürlich auch noch überlegen, diese Verknüpfungen gleich im Marionette zu integrieren (Set Record). Gruss KroVex CADNODE.ch Lassen Sie uns gemeinsam effiziente und innovative CAD-Lösungen für Ihr Projekt finden! Have you tried to turn it off and on again? Vectorworks | Architektur | macOS/Windows Link zu diesem Kommentar
Chritian W. Geschrieben 25. September 2021 Autor Teilen Geschrieben 25. September 2021 Am 22.9.2021 um 17:31 schrieb KroVex: Wenn du mit Datenbanken arbeitest, könntest du dir natürlich auch noch überlegen, diese Verknüpfungen gleich im Marionette zu integrieren (Set Record) Hallo, die Datenbank werde ich integrieren. Habe noch zwei Fragen dazu: 1. Gibt es eine Möglichkeit mit Marionette eine Datenbank zu löschen? 2. Wenn alle zu brennenden Objekte keinen NAmen haben gibt es einen Fehler. Gibt es hierzu auch eine Lösung? Link zu diesem Kommentar
Chritian W. Geschrieben 26. September 2021 Autor Teilen Geschrieben 26. September 2021 So habe es jetzt gelöst. Danke noch mal an alle. Link zu diesem Kommentar
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden