sir-Franzelot Geschrieben 19. November 2020 Teilen Geschrieben 19. November 2020 Hallo zusammen Ich möchte eine Marionette (Script?) bauen, welches Symbole durch zufällig ausgewählte aus einem Zubehörordner ersetzt. Anwendung: Ich setze Zimmerpflanzen im ganzen Grundriss und möchte mit einem Knopfdruck ein wenig Abwechslung reinbringen. Oder Bäume und Pflanzen im Aussenbereich. Als Basis habe ich folgendes Marionette_Object verwendet. https://www.vectorworksforum.eu/applications/core/interface/file/attachment.php?id=4370 Meine Strategie: Ich wähle einen zufälligen SymbolnamenString aus einem ZubehörOrdner aus und verwende diesen als String input für eine Symbol node. (Ich denke, ich sollte wohl eine list mit den random Symbolnamen machen und als Input verwenden, aber dazu komme ich später.) Im moment bekomme ich den Symbolnamen noch nicht als String aus der CustomNode heraus. Kann mir jemand helfen? Habe noch nie programmiert. Mein code: @Marionette.NodeDefinition class Params(metaclass = Marionette.OrderedClass): this = Marionette.Node( "Random Symbol" ) this.SetDescription( 'Chooses a random Symbol in a folder' ) randomsym = Marionette.PortIn(False) randomsym.SetDescription("Boolean True, picks Random symbol. Default is False") folder = Marionette.PortIn('','folder') folder.SetDescription("if empty, just symbols directly on document were listed") name = Marionette.PortOut("sName") name.SetDescription( "StringName of the chosen symbol" ) this.SetLinksObjects() def RunNode(self): import random folder = self.Params.folder.value randomsym = self.Params.randomsym.value #folder='Folder-1' def checkfolder(): if folder =='': symid=vs.FSymDef() if folder !='': symid = vs.FInFolder(vs.GetObject(folder)) return(symid) def getallsym(): symlist=[] symid=checkfolder() while vs.GetTypeN(symid) ==16: symlist.append(symid) symid=vs.NextSymDef(symid) return(symlist) def name(folder,randomsym): symid=checkfolder() symlist=getallsym() if randomsym==True: i=int(random.random()*len(symlist)) sym=symlist if randomsym==False: sym=symid return(sym) symname = vs.GetName(sym) return(symname) self.Params.name.value = name Danke für eure Hilfe! Vectorworks 2020E macOS Catalina MacBook Pro, 2018 2.2 GHz 6-Core Intel Core i7 16 GB 2400 MHz DDR4 Radeon Pro 555X 4 GB Intel UHD Graphics 630 1536 MB Link zu diesem Kommentar
sir-Franzelot Geschrieben 20. November 2020 Autor Teilen Geschrieben 20. November 2020 Mit ein wenig Hilfe habe ich es geschafft. Viel Spass! Symbole zufällig ersetzen.vwx 3 Vectorworks 2020E macOS Catalina MacBook Pro, 2018 2.2 GHz 6-Core Intel Core i7 16 GB 2400 MHz DDR4 Radeon Pro 555X 4 GB Intel UHD Graphics 630 1536 MB Link zu diesem Kommentar
b.illig Geschrieben 21. November 2020 Teilen Geschrieben 21. November 2020 Cool, nicht schlecht! muss ich mal ausprobieren. Für noch mehr Varianz könnte man noch eine zufällige Skalierung mit einstellen. VW 23 SP7R1 AMD Ryzen 7 3700X 8Core - 3,6GHz - 32GB RAM - NVIDIA Quadro P4000 - Win 10 ARP-Stuttgart Link zu diesem Kommentar
Manuel Roth Geschrieben 21. November 2020 Teilen Geschrieben 21. November 2020 Da habe ich erst kürzlich ein Marionette dazu erstellt. Entwerder führst du zwei Scripte aus oder aber du integrierst den Code aus der Marionette in den vom Script oben. 1 Freundliche Grüsse Manuel Roth _________________________________________________ Vectorworks 2022 SP3 | Architektur | Windows 10 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