Zum Inhalt springen

Marionette Move Node Bug


herbieherb

Empfohlene Beiträge

Gast Patrick Winkler

Hallo Herb,

 

ich habe dir bereits im englischen Forum geantwortet. Wie gesagt wurde der Bug bereits bei Vectorworks gemeldet, mehr steht leider nicht in unserer Macht.

 

freundliche Grüße

 

Patrick

Link zu diesem Kommentar
  • 2 Wochen später...
Gast Patrick Winkler

Ein Online-Update mit der aktuellen Marionette Bibliothek ist ab sofort verfügbar.

Dieses kann über den Menübefehl Hilfe->Auf Updates prüfen... -> Jetz prüfen ausgeführt

werden.

 

Gruß

 

Patrick

Link zu diesem Kommentar
  • 3 Jahre später...

Hallo zusammen

 

Ich habe im Moment das selbe Problem.

image.thumb.png.4a7e1e7998398883bde96f3ec92a6a9b.png

Ich selektiere mit einem Filter eine Gruppe. Es wird immer nur ein Handel weitergegeben, welcher aber auf eine andere Gruppe verweisen kann. (Dies kann in der OIP eingestellt werden. Die Gruppen liegen nicht immer an denselben Koordinaten auf der Konstruktionseben.) Diese Gruppe dupliziere ich, um sie im Marionette-Object anzuzeigen. Nun möchte ich sie an den Nullpunkt des PIOs verschieben. Das funktioniert aber weder mit mit einem Offset (da kann ich aber nicht bestätigen dass alles korrekt erstellt wurde.), noch mit dem Punkt (0,0) [im Point2 eingegeben]. Auch wenn ich den Einfügepunkt des PIOs auslese und die Gruppe dorthin verschiebe passiert nichts. (Die zwei Offsetinputs wurden nur zur Veranschaulichung so verknüpft. Normalerweise benutze ich nur ein Input.)

 

Die Methode zur Überprüfung der Funktionstüchtigkeit des Move Nodes habe ich geteste, indem ich eine andere Gruppe mit der selben Geometrie aber anderen Koordinaten eingegeben habe. Das Resultat beider Varianten ist nicht deckunsgleich.

 

Weiss jemand weshalb das so ist und noch wichtiger, wie ich es beheben oder umgehen kann?

Freundliche Grüsse

 

Manuel Roth

_________________________________________________
Vectorworks 2022 SP3 | Architektur | Windows 10

Link zu diesem Kommentar

Ja kann ich doch

 

Ich habe das Netzwerk gekürzt, so dass nur das eigentliche Problem zu sehen wird.

 

Move Beispiel.vwx

 

Hier kann als Gruppenname B1 oder B2 eingegeben werden. Diese Gruppen befinden sich über dem PIO.

Ziel des Objekt ist es, die Guppe immer am selben Ort darzustellen. Das beschriebene Verhalten tritt sowohl mit dem Move-Node oben als auch mit dem Move-Node aus der Bibliothek auf. Diese Nodes unterscheiden sich nach mir sowieso nur in der Bennenung der Inputs.

Das durch den Filternode bei all meinen Versuchen immer nur ein Objekt durchkam kann ich bestätigen, auch wenn das eigentlich keinen Einfluss haben sollte.

Freundliche Grüsse

 

Manuel Roth

_________________________________________________
Vectorworks 2022 SP3 | Architektur | Windows 10

Link zu diesem Kommentar

Ok, jetzt hab ichs verstanden. Das Problem ist, dass der Move-Node beim offset input den Offset als x/y Koordinaten erwartet, du gibst ihm da den Wert 0,0 ein, was für den Befehl heisst, er soll um 0,0 verschieben. Du musst also zuerst mal rechnen um wieviel du das Objekt verschieben willst. Dazu erstmal schauen wo es liegt, z.B. mit einem Get2DCenter. Dann schauen wo es hingeht (beim 2D Punkt mit GetLocation). Dann die beiden x/y Werte aufsplitten (mit GetXY) und miteinander verrechnen. Am Schluss aus den errechneten X/Y offsets wieder einen Punkt machen (Point2D) und diesen als Input für den Move-Node nehmen.

Vectorworks 2024 - Architektur - Win 10

Link zu diesem Kommentar

Hallo @herbieherb

 

Danke für deine Hilfe.

Ich hab das Ganze einmal so probiert, das Ergebnis ist allerdings das selbe. Mache ich einen Fehler beim verrechnen? Ich glaube nicht, da es nach wie vor nicht verschiebt oder zumindest meiner Meinung nach.

 

image.thumb.png.e29a5cc8d3cd62b7471a112ad5dc2344.png

Freundliche Grüsse

 

Manuel Roth

_________________________________________________
Vectorworks 2022 SP3 | Architektur | Windows 10

Link zu diesem Kommentar

@Manuel Roth
 

Der Move-Node scheint im VW19 einen Bug zu beinhalten. Gruppen können nicht verschoben werden, im VW2018 funktioniert dies aber.
Noch tragischer wird es, wenn man nur den Inhalt der Gruppe verschieben möchte, dann bleibt nämlich die Gruppe an Ort und Stelle, das Objekt selber bewegt sich aber, kann dann aber nicht mehr aktiviert werden ?

Nur das Pythonscript aus dem Node von VW18 zu kopieren und in das von VW19 zu kopieren, löst hier leider das Problem auch nicht.

Ich glaube die links zum Melden von Bugs kennst du bereits auswendig oder??

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

Ich steh irgendwie noch auf dem Schlauch, was das Ziel des Marionettes sein soll. Wenn ich das verstehe, kann ich vielleicht besser helfen. 

"Ziel der Marionette ist es, dass die Gruppe mit dem Punkt oben links auf dem Punkt zu liegen kommt." -> Den Punkt oben links sehe ich, aber welcher soll der zweite sein?

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

Hier habe ich den Zweck der Marionette schon einmal etwas ausführlicher erklärt. Unter Punkt zwei habe ich geschrieben

 

Zitat

Diese Gruppen untereinander aneinanderreihen.

 

Um dies hinzubekommen muss ich genau kontrollieren können, wo die Gruppen liegen. Dafür würde ich gerne die Gruppen (oder die Objekte darin, für mich spielt es keine Rolle ob die Objekte noch gruppiert sind) an einem bestimmten Punkt im PIO verschieben.

 

Zu Testzwecken habe ich aus der Liste der Gruppe eine herausgefiltert.

Freundliche Grüsse

 

Manuel Roth

_________________________________________________
Vectorworks 2022 SP3 | Architektur | Windows 10

Link zu diesem Kommentar

Ich bin ja auch noch ziemlich am lernen, was Marionette anbelangt. Und um zu lernen/verstehen suche ich mir meist Netzwerke, welche ungefähr das tun, was ich will und manipuliere/zerstückle/kombiniere sie dann, um die Funktion zu verstehen und das zu erhalten, was ich ganz genau will. Auch für deinen Fall gibt es da was, was so ziemlich das tut, was du dir wünscht: Objekte mit unterschiedlichen Grössen, aneinander reihen. DomC hat da was schönes gebaut, schau's dir mal an:

Distribute horizontal 1.0.0.vwx

 


Gruss KroVex
 

  • Like 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

Erstmal würde ich die Marionette entpacken zum debuggen. Da kannst du nämlich mit der Marienkäfermethode des Marionette-Werkzeugs die Werte abfragen, welche die einzelnen Nodes ausspucken.

Dann hast du noch einen Benutzernullpunkt gesetzt, das kann schon mal verwirrend sein beim debuggen, den würd ich erst mal rausnehmen.

 

Warum genau sollen am Schluss PIO's erstellt werden? Was sollen die dann genau machen?

  • Like 1

Vectorworks 2024 - Architektur - Win 10

Link zu diesem Kommentar

Hallo zusammen

 

Zuerst einmal ein grosses Danke für eure Hilfe.

 

Was das PIO genau tun soll, ist aus verschiedenen Teilaufbauten einen ganzen Aufbau zu generieren. Das ganze läuft im Moment mit 2D-Objekten. 3D-Wände/Böden/Decken wären der nächste Schritt. (Habe aber noch keine Möglichkeit gefunden, Schalen zu manipulieren. Ist auch nicht so schlimm. Da benötige ich wohl dann eine gute Vorlage.) Eventuell ist das nicht die geeignetste Aufgabe für eine Marionette, aber es funktioniert.

 

Ich habe mir ein Wrapper gebastelt, welcher mir diese Aufbauten zusammenstellt. Als Input benötigt er lediglich einen Code, der wie folgt aufgebaut ist.

B1324

B = Boden (Decken und Wände habe ich noch nicht angefügt)

1 = bei der ersten Schicht soll die Variante 1 gewählt werden (Teilaufbau B1.1)

3 = bei der zweiten Schicht soll die Variante 2 gewählt werden (Teilaufbau B2.3

2, 4 = wie 1 und 3 nur für Schichten 3 und 4

 

Natürlich gibt es auch sinnlose Kombinationen. (wie zum Beispiel die Obrige, sieht man allerdings erst nach dem ausprobieren. :classic_biggrin:) Aber mit dieser Methode kann ich mit relativ wenig Aufwand eine grosse Anzahl von Musteraufbauten generieren.

 

Nun möchte ich diesen funktionstüchtigen Wrapper in ein PIO umwandeln, vor allem um das Ganze schneller aktualisieren und ändern zu können. Ein weiterer Grund ist dass ich mehr über die Funktionsweise des PIOs lernen möchte.

Nach der Umwandlung scheint allerdings der Move-Node nicht mehr zu funktioieren. Ich habe darauf geachtet, nur Rechtecke und Linien zu verschieben und nicht mit Gruppen zu hantieren, von daher sollte das kein Problem darstellen. Hat jemand eine Idee, was sonst falsch laufen könnte?

 

Boden.vwx

Freundliche Grüsse

 

Manuel Roth

_________________________________________________
Vectorworks 2022 SP3 | Architektur | Windows 10

Link zu diesem Kommentar

@Manuel Roth

 

Mir gefällt Dein Beispiel und die Strategie, die Elemente auf diese Weise zusammenzubauen. Diese Vorgehen ist sehr effizient, weil die Komplexität der Objekte (Schraffur, Klasse, Geometry u.s.w.) nicht im Script erzeugt werden muss, sondern von einer "Vorgabe-Geometrie" übernommen und verändert wird.

 

Ursprünglich kommt das unterschiedliche Verhalten vom Move Node. Dieses ist nicht ganz wasserdicht. Die Script Engine, verschiebt unterschiedliche Objekttypen und unterschiedlich ausgerichtete Objekte (Bildschirmebene, Konstruktionsebene, 3D) mit unterschiedlichen Befehlen vs.Move3DObj() und vs.HMove()

Im Move-Node, gibt es eine Abfrage, wie ein Objekt verschoben werden soll, welche etwas Lückenhaft ist, wenn es um Gruppen, Text und Symbole geht. Ich habe das bereits beim Entwicklerteam deponiert.

 

Um dieses Problem zu kompensieren, hast Du dann versucht, das Ganze mit der PlugIn Position zu verrechnen, was dann zusätzlich dazu führt, dass ein Objekt Nullpunktabhängig in der Gegend rumspringt.

Nun gut, ich hoffe, diese Infos waren jetzt nicht allzu unverständlich. Jedenfalls kann man das ganze folgendermassen hinbekommen:

 

1. Ich benutze ein Node, welches explizit nur 2D Arbeitet, dafür alles verschiebt, was Du in Deinen Zeichnungen verwendest. Oder Du editierst folgende Zeile im Move Node:

planar = Marionette.Is2DObject(i)    

in:

planar = True

Dazu muss die oberste Zeile (verlinkung auf Bibliothek) im Node gelöscht werden.

 

Dann die Positionierungseschichte mit der PlugIn Position wieder rausnehmen:

image.png.a8f9d27d4a469a0124e3f96e2060ccf3.png 

 

 

Danach schnurrt dein PlugIn wie ein Kätzchen

 

 

Schönes Beispiel. Wäre doch schön, Du könntest dieses im Marionette Forum mit der Community teilen:

https://forum.vectorworks.net/index.php?/files/

 

Bemerkungen:

Ob das mit Namen gemacht werden soll, darüber kann man sicher noch diskutieren. Denkbar wären auch Symbole, Control.Geometrie, Klassennamen, Ebenennamen oder Feldbeschriftung. Feldbeschriftung wäre mein Favorit. Dabei werden die Objekte aufgrund ihrer Positionierung in einem beschrifteten Positionsrahmen eingelesen. Keine Namen wären nötig.

 

 

 

Verwandtes Beispiel wäre dieses hier. Statt Schichten übereinander zu stapeln, werden hier Buchstaben, bzw. Möbel nebeneinander "gestapelt". D.h. Du würdes auf ähnliche Weise Deine Bestandteile in die Felder zeichnen und durch die Feldbeschriftung wäre das Teil identifiziert. Für Deinen Anwendungsbereich, müsstest Du zusätzlich noch eine zusätzliche übergeordnete Verschachtelung einbauen.

 

https://forum.vectorworks.net/index.php?/topic/48611-vector-font-and-more/

 

 

 

 

 

 

 

 

 

 

Boden v2.vwx

  • Like 3
  • Lieben 1

Macbook m3 Max 48 GB | Ryzen 3950x 64GB NVIDIA rtx3090

Link zu diesem Kommentar

@Dominique Corpataux

 

Vielen Dank für die Korrektur am PIO.

 

Zu deinen Bemerkungen: Mit Symbolen, Klassen und Ebenen gibt es relativ viele Objekte, die nicht unbedingt benötigt werden. Die Control Geometry gefällt mir nicht wirklich, da das ganze sehr statisch am PIO festgebunden ist und bei mehreren PIOs nicht wirklich praktisch geändert werden kann. Deshalb würde mich die Feldbeschriftung sehr interessieren. Allerdings stürtzt VW19 jedes Mal beim Ausführen deines Schrifttools ab. Die einzige Meldung, welche erscheint ist diese hier.

 

image.png.adfa3e2de344afe7d4b10159c7a2ded9.png

 

Aber bevor das Node aktiviert ist, ist VW weg. Auch beim nicht PIO auf der KE Script Debug.

Mache ich etwas falsch?

 

So ist es für mich natürlich schwer, die Funktionsweise des Scripts  zu verstehen. Aber ich glaube, dass ich es so in etwa begriffen habe. Dreh und Angelpunkt ist wohl CreateFontDict. Dieses Node sucht die Rechtecke in den Inputs und gibt die darin enthaltene Gruppe, deren Breite und Beschriftung je Rechteck in einer List grupiert aus. (Bin beeindruckt sollte das wirklich so funktionieren.) GetDictValue funktioniert in etwa wie GetItem und ValuesToSaldo entspricht AddSequence. Bin ich da richtig? Der Rest sollte klar sein.

 

 

Freundliche Grüsse

 

Manuel Roth

_________________________________________________
Vectorworks 2022 SP3 | Architektur | Windows 10

Link zu diesem Kommentar

Hallo Manuel

Du hast den Durchblick ...

 

Das Beispiel ist schon etwas älter und hat für die 2019er Version ein kleines Update benötigt. Verfügbar hier.

https://forum.vectorworks.net/index.php?/files/file/214-marionette-translate-character-to-geometry/

 

Normalerweise sind die Scripte gut Aufwärtskompatibel aber es gibt hier das Ausnahmeproblem mit "vs.GetTypeN()". Diese Funktion wurde (fälschlicherweise) in vielen Nodes verwendet (copy Paste) und war eigentlich schon vor drei Jahren "obsolet". 

 

 

CreateFontDict ist ein Nodes, welches mit Hilfe von Positionierungsrechtecken, den Inhalt eines Textes jeweils mit einem Objekt paaren kann. Dies Paarung wird mit einer Dictionary sequence ausgeben statt einer Liste. Das hat den Vorteil, dass man z.B. mit aufrufen des keys 'X' das Vectorwors Objekt 'Y'  aufrufen kann. 

 

Macbook m3 Max 48 GB | Ryzen 3950x 64GB NVIDIA rtx3090

Link zu diesem Kommentar
  • 1 Monat später...

Hallo zusammen

 

Ich hab hier ein bisschen weitergebastelt.

 

Aufbauten.vwx

 

Die Aufbautencodes sind nun im Format W1.1.1.1. Somit ist es nun auch möglich, mehr als 10 Varianten je Schicht zu bearbeiten. Ebenfalls gibt es nun auch Boden und Wandaufbauten (Dächer noch in Arbeit) Zudem kam ein Schriftblock mit den Aufbauten dazu. (optional)

 

 

Nun möchte ich bei der Darstellung 1:100 die Flächen, welche in der selben Klasse liegen zusammenfügen, so dass nur noch ein Objekt vorhanden ist. Ist das auf eine einfache Art und Weise möglich? (komplexen Filter und Redimensionierung der Rechtecke möchte ich nur bauen, wenns wirklich nicht anders geht.)

Der Compose-Node hilft da meiner Ansicht nach leider nicht, da er nur Linien zu Polygonen zusammenfügt.

 

PS: Ich gebe keine Garantie, dass die Aufbauten korrekt sind. ?

Freundliche Grüsse

 

Manuel Roth

_________________________________________________
Vectorworks 2022 SP3 | Architektur | Windows 10

Link zu diesem Kommentar

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 erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden
  • Forenstatistik

    • Themen insgesamt
      23,4Tsd
    • Beiträge insgesamt
      120,1Tsd
×
×
  • Neu erstellen...