hölzli Geschrieben 5. November 2020 Teilen Geschrieben 5. November 2020 Hallo zusammen Ich möchte für meine PIOs, welche ich mit Marionette erstellt habe gerne Modifikationspunkte erstellen. Grundsätzlich wäre dies ja über "ControlPoint" als 2D oder 3D einfach möglich. Allerdings wünsche ich nur Modifikationspunkte welche jeweils nur EINE Achse bearbeiten. Ähnlich wie die mittleren Modifikationspunkte z.B. bei einem Rechteck: Damit möchte ich z.B. ein Rohr lediglich in die Länge ziehen, der Modifikationspunkt bleibt dabei immer auf seiner Flucht und in der Infopalette möchte ich auch lediglich EIN Feld (Länge) angezeigt bekommen. Alle meine Versuche bei der Bearbeitung des Nodes sind gescheitert. Ich konnte auch noch keine Informationen finden, wie ein solcher Punkt mit Python erzeugt werden kann. Bin um jede Hilfe dankbar. Vectorworks 2022 interiorcad | Windows11 Link zu diesem Kommentar
herbieherb Geschrieben 6. November 2020 Teilen Geschrieben 6. November 2020 Das regelt man über den Plugin-Manager, indem man dem Script ein Plugin macht und diesem dann sagt, wie das Objekt gezeichnet wird. Da gibts zur Auswahl Punktobjekt, Linienobjekt, Rechteckobjekt 2D-Pfadobjekt etc. mit 1, 2, 4 oder x Modifikationspunkten. Es gibt jedoch keine Möglichkeit z.B. bei einem Rechteckobjekt nur die zwei mittleren Modifikationspunkte aktiv zu schalten. Das Plugin wird einfach immer wie ein Rechteck bearbeitet. Vectorworks 2024 - Architektur - Win 10 Link zu diesem Kommentar
hölzli Geschrieben 7. November 2020 Autor Teilen Geschrieben 7. November 2020 Besten Dank für den Input. Erste Versuche konnte ich bereits machen. für 3D Objekte habe ich aber noch nicht viel gefunden. Liege ich richtig in der Annahme, dass ich dafür wohl einzelne solche Plugins erstellen muss, welche ich dann in den Scripts abrufen und positionieren kann? Ich merke, dass ich da ein je länger je grösseres Feld aufmache - interessant! Vectorworks 2022 interiorcad | Windows11 Link zu diesem Kommentar
hölzli Geschrieben 14. November 2020 Autor Teilen Geschrieben 14. November 2020 Ich komme leider nicht weiter. Ich versuche, in Marionette ein Node zu erstellen, welches mir das Plugin-Object einfügt, damit ich mit dieser Form dann ein parametrisiertes Objekt erstellen kann, welches nebst den Variablen in der Infopalette auch die entsprechenden Modifikationspunkte hat. Zum testen erstellte ich ein "einfaches" Rechteck-Plugin-Object (mit Python-Code hatte ich die Modifikationspunkte nicht....): PROCEDURE Example; BEGIN RectangleN(0, -PBoxWidth/2, 1, 0, PLineLength, PBoxWidth); END; RUN(Example); wenn ich dieses "normal" Einfüge, erhalte ich das gewünschte Ergebnis und kann das Rechteck sowohl über die Infopalette als auch über die Modifikationspunkte bearbeiten. Nun habe ich ein Marionette Node so bearbeitet, dass es dieses Plugin-Object einfügen soll: #Created January 2018 #Updated August 2018 @Marionette.NodeDefinition class Params(metaclass = Marionette.OrderedClass): #APPEARANCE #Name this = Marionette.Node('Customobj') this.SetDescription('Creates a 3D reshape handle when used in a Marionette Object. Initial values are defined in the Object Info Palette.') #Input Ports #OIP Controls x = Marionette.OIPControl( 'X', Marionette.WidgetType.RealCoord, 0.0) x.SetDescription('A value representing the distance from the origin along the x axis') y = Marionette.OIPControl( 'Y', Marionette.WidgetType.RealCoord, 0.0) y.SetDescription('A value representing the distance from the origin along the y axis') #Output Ports pt = Marionette.PortOut('p') pt.SetDescription('A Control 3D point') #BEHAVIOR def RunNode(self): #inputs x = self.Params.x.value y = self.Params.y.value #script vs.CreateCustomObject('rec3', 0,0, 0) #vs.AddToPIOStyleEdit(vs.LNewObj(), 'vs.PLineLength', 1, 'Länge') #vs.DefineCustomObj('rec3', 1) #vs.EnableParameter(vs.LNewObj(), 'LineLength', 0) vs.GetCatalogItem(vs.LNewObj()) #outputs self.Params.pt.value = (100) Wenn ich dieses Ausführe, erhalte ich das gleiche Ergebnis wie zuvor. Erstelle ich aber mit diesem einen Node ein MarionetteObject, so erhalte ich zwar noch das Rechteck, jedoch habe ich weder die Modifikationspunkte noch kann ich in der Infopalette dessen Parameter verändern. Bin ich hier auf dem absoluten Holzweg? oder wie könnte ich dies erreichen? Mein Ziel ist es, nicht auf den ControlPoint3D angewiesen zu sein, da ich mehrere MarionetteObject's habe, welche ich jeweils nur in der Länge oder in der Länge&Breite bearbeiten möchte, ohne dass dabei der Hilspunkt irgendwo im 3D Raum landet... scheint eine ziemliche "Knacknuss" zu sein. Besten Dank für jeden Denkanstoss! Vectorworks 2022 interiorcad | Windows11 Link zu diesem Kommentar
herbieherb Geschrieben 16. November 2020 Teilen Geschrieben 16. November 2020 Warum arbeitest du nicht mit einer Controlgeometry. Wenn du einen Polygon mit zwei Punkten dafür nimmst, sollte sich die Marionette wie von dir gewünscht umformen lassen, einfach halt dann nicht auch noch via OIP. Vectorworks 2024 - Architektur - Win 10 Link zu diesem Kommentar
hölzli Geschrieben 16. November 2020 Autor Teilen Geschrieben 16. November 2020 Nun ja, mir gehts genau darum "sowohl als auch" zu erreichen. Aktuell habe ich diverse PIOs erstellt. in der Praxis zeigt sich jedoch, dass das Einfügen und auf die richtige Grösse setzen ziemlich aufwändig wäre. Dies ginge mit Modifikationspunkten deutlich intuitiver. Da es aber oft auch vorkommt, dass ein Wert fix ist, oder um einen fixen Wert korrigiert werden soll, ist die Eingabe über die OIP deutlich komfortabler - besonders wenn ich mehrere Objekte um den gleichen Wert verändern möchte. Vectorworks 2022 interiorcad | Windows11 Link zu diesem Kommentar
herbieherb Geschrieben 16. November 2020 Teilen Geschrieben 16. November 2020 So wie du oben vorgehst, ist dein Plug-in Objekt im Marionette Objekt drin. D.h. du hast dann nur noch Zugriff auf die Kontrollmechanismen der Marionette. Das was du möchtest, würd ich mit einem reinen Python-Plugin machen. Allerdings ist auch das kompliziert. Du brauchst zwei verschiedene Abläufe für die verschiedenen Inputmöglichkeiten. Zusätzlich musst du ja auch herausfinden, welcher der beiden Inputs geändert wird, d.h. du musst den alten Status in einer Datenbank speichern und die Eingaben damit abgleichen. Vectorworks 2024 - Architektur - Win 10 Link zu diesem Kommentar
hölzli Geschrieben 16. November 2020 Autor Teilen Geschrieben 16. November 2020 Ich versuche eigentlich primär, innerhalb Marionette den "ControlPoint3D" so zu modifizieren, dass ich entweder eine bis zwei Achsen "blockiere", also statisch festlege, scheitere aber. Leider finde ich keinerlei Angaben, wie Marionette.CreateControlPointCoord3D(self.Handle, x, y, z) oder vs.Mrntte_ControlPoint(nodeHandle, coordX, coordY, coordZ, False) #3D vs.Mrntte_ControlPoint(nodeHandle, coordX, coordY, 0, True) #2D Funktionieren. Mein Hauptproblem ist, dass z.B. "coordY" IMMER direkt auf die zweite Variable aus "class Params" zugreift, auch wenn ich dort einen absoluten Wert eingebe. Wenn es für Marionette ein OIP-Widget-Type geben würde, welcher nichts anzeigt (auch keine Separator-Linie) dann hätte ich beinahe einen Lösungsansatz gefunden: def RunNode(self): #inputs x = self.Params.x.value y = self.Params.y.value = 100 #Diesen Wert möchte ich aber Restlos aus dem OIP entfernen z = self.Params.z.value = 100 #Diesen Wert möchte ich aber Restlos aus dem OIP entfernen #script appMajor, appMinor, appMaint, platform = vs.GetVersion() units = vs.GetPrefReal(150) pioHandle = vs.Handle(Marionette.parametric_handle) if pioHandle != vs.Handle(0): if appMajor >=24: Marionette.CreateControlPointCoord3D(self.Handle, x, y, z) units = vs.GetPrefReal(150) x = x/units y = y/units z = z/units else: x = x/units y = y/units z = z/units else: x = x/units y = y/units z = z/units #outputs self.Params.pt.value = (x, y, z) Vectorworks 2022 interiorcad | Windows11 Link zu diesem Kommentar
herbieherb Geschrieben 16. November 2020 Teilen Geschrieben 16. November 2020 Geh am besten mit diesem Anliegen ins englische Forum in die Marionette Section. Die Entwicklerin des Marionette-Tools liest da mit und kann dir hierbei sicher am kompetentesten helfen. Vectorworks 2024 - Architektur - Win 10 Link zu diesem Kommentar
Antonio Landsberger Geschrieben 18. November 2020 Teilen Geschrieben 18. November 2020 @hölzli Das hier sieht schon sehr vielversprechend aus: https://forum.vectorworks.net/index.php?/topic/69679-control-point-1-dimension/&do=findComment&comment=371453 Der Kontrollpunkt lässt sich nur in einer Achse verschieben. Wenn man hier der Control Point Node noch den Namen nimmt, tauchen die Koordinatenfelder auch nicht mehr im OIP auf. Gruß Antonio Landsberger ComputerWorks GmbH http://www.computerworks.de Link zu diesem Kommentar
hölzli Geschrieben 18. November 2020 Autor Teilen Geschrieben 18. November 2020 Guten Tag Antonio Besten Dank für den Hinweis. Dieses Thema ist übrigens von mir, ich heisse im englischsprachigen Forum einfach Gregi - frag mich nicht warum ich mich da nicht für einheitliche Logins entschieden habe Mein Wunsch ist, dass ich die Koordinatenfelder sehe, jedoch nur diejenigen, welche auch variabel sein sollen... 1 Vectorworks 2022 interiorcad | Windows11 Link zu diesem Kommentar
Antonio Landsberger Geschrieben 18. November 2020 Teilen Geschrieben 18. November 2020 Hehe, alles klar! Nun, dann würde ich die Inputs aus der Control Point Node herausnehmen und in jeweils eigene Input-Nodes packen und nur diejenigen mit Namen ausstatten, die angezeigt werden sollen. Ansonsten - falls Informationen nur angezeigt, jedoch nicht geändert werden sollen, kannst du diesen Weg gehen: Im OIP-Bereich: OIPvalue = Marionette.OIPControl( 'WERTBEZEICHNUNG', Marionette.WidgetType.TextStaticParam, 'WERT' ) Im Skript: self.Params.OIPvalue.SetValue( str(WERT) ) Gruß Antonio Landsberger ComputerWorks GmbH http://www.computerworks.de Link zu diesem Kommentar
Manuel Roth Geschrieben 18. November 2020 Teilen Geschrieben 18. November 2020 vor 8 Minuten schrieb Antonio Landsberger: Nun, dann würde ich die Inputs aus der Control Point Node herausnehmen und in jeweils eigene Input-Nodes packen und nur diejenigen mit Namen ausstatten, die angezeigt werden sollen. Ich glaube nicht das das funktioniert, weil der Node dann nur während der Laufzeit des Netzwerks weiss, wo der Kontrollpunkt hinkommt und ihn für die restliche Zeit bei 0, 0 (oder je nach Default auch anders) platzieren würde. Das Problem gibt es zum Beispiel auch bei PopUp-Listen in der OIP. Die können auch nicht dynamisch, je nach Ergebnis im Script, gefüllt werden. Ich bin nicht ganz nachgekommen mit lesen und verstehen, was du alles schon versucht hast, aber wenn Marionette.CreateControlPointCoord3D(self.Handle, x, 100, 100) nicht funktioniert, gibt es meiner Meinung nach keine Möglichkeit, dein Problem mit Marionette zu lösen. Freundliche Grüsse Manuel Roth _________________________________________________ Vectorworks 2022 SP3 | Architektur | Windows 10 Link zu diesem Kommentar
Antonio Landsberger Geschrieben 18. November 2020 Teilen Geschrieben 18. November 2020 Dann ist es ein Fall für eine Nodes-Wishlist - an der wir bereits arbeiten. 1 Gruß Antonio Landsberger ComputerWorks GmbH http://www.computerworks.de Link zu diesem Kommentar
Manuel Roth Geschrieben 18. November 2020 Teilen Geschrieben 18. November 2020 Wie werden den die Nodes verteilt? Ich weiss von @M.Graf TH-OWL, dass er zusammen mit @Pascal Völz einige Nodes erstellt hat, diese aber wegen Uneinigkeiten, wie sie unter die Leute gebracht werden sollen noch nicht veröffentlicht wurden. Wäre doch toll, wenn diese Nodes sich auch gleich auf dieser Liste befinden würden und direkt in die Standardlibary eingebunden würden. Zählt übrigens auch für die breit anwendbaren Nodes aus der Sammlung von @Dominique Corpataux. Die sehr spezifischen würde ich auslassen. Freundliche Grüsse Manuel Roth _________________________________________________ Vectorworks 2022 SP3 | Architektur | Windows 10 Link zu diesem Kommentar
Manuel Roth Geschrieben 18. November 2020 Teilen Geschrieben 18. November 2020 Und nur um Missverständnisse zu vermeiden. Ich habe keine Möglichkeit gefunden so einen Node zu erstellen, heisst aber nicht, dass es keine gibt. Freundliche Grüsse Manuel Roth _________________________________________________ Vectorworks 2022 SP3 | Architektur | Windows 10 Link zu diesem Kommentar
Antonio Landsberger Geschrieben 18. November 2020 Teilen Geschrieben 18. November 2020 Hallo Manuel, zu internen Vorgängen kann ich leider keine Auskunft geben. In der Marionette-Gallery findest du diverse Nodes, die von M.Graf und Pascal Völz für CWD erstellt wurden. Bei der Übergabe der erwähnten Wishlist werden natürlich alle Nodes berücksichtigt. Gruß Antonio Landsberger ComputerWorks GmbH http://www.computerworks.de 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