Zum Inhalt springen

Symbole durch random Symbole ersetzen


sir-Franzelot

Empfohlene Beiträge

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.

 

288994878_Bildschirmfoto2020-11-19um13_44_39.thumb.png.89febc3ae75e91ef07a7ab327ac576c2.png

 

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

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,5Tsd
    • Beiträge insgesamt
      121Tsd
×
×
  • Neu erstellen...