Fruitpunsh Geschrieben 13. Mai 2022 Geschrieben 13. Mai 2022 Gibt es eine Möglichkeit Symbole die wiederum in anderen Symbolen verschachtelt sind zu erreichen? Um diese z.B. zu löschen oder in Gruppen umzuwandeln... Ich habe ein Script geschrieben, welches alle Symbole mit spezifischem Namen in eine Gruppe umwandelt. Das Script trifft alle Symbole die frei oder in Gruppen liegen, aber keine die innerhalb anderer Symbole stecken. # Eingabedialog: Symbolname name = vs.StrDialog("Symbolname: ", "") # Kriterium: Symbolname ist ... krit = "(S='" + name + "')" def aufloesen(h): vs.SymbolToGroup(h, 0) vs.ForEachObject(aufloesen, krit) Anbei meine Testdatei mit freien und verschachtelten Symbolen symbole.vwx
Manuel Roth Geschrieben 13. Mai 2022 Geschrieben 13. Mai 2022 Hallo Wenn ich dich richtig verstehe, sollte diese kleine Änderung genügen. krit = "NOTINREFDLVP & NOTINDLVP & INSYMBOL & (S='" + name + "')" Wenn du das ganze noch ein wenig schöner lösen willst, kannst du es mit dem Get Symbol from Folder-Node verheiraten. def aufloesen(h): vs.SymbolToGroup(h, 0) def SymbolSelDialog( showall ): SetupDialogC = 12255 # Dialog open event ID CloseDialogC = 12256 # Dialog close event ID # alignment constants kRight = 1 kBottom = 2 kLeft = 3 kColumn = 4 kResize = 0 kShift = 1 # default and cancel button IDs kOK = 1 kCancel = 2 # control IDs kSymPopup = 4 def DialogHandler( item, data ): # setup of the dialog content ... if ( item == SetupDialogC ): resourceListID, numItems = vs.BuildResourceList( 16, 0, '' ) if showall: # show all symbols for cnt in range( numItems + 1 ): int = vs.InsertImagePopupResource( dialog, kSymPopup, resourceListID, cnt ) #END for else: # show only symbols in user defined symbol folder for cnt in range( numItems + 1 ): tempStr = vs.GetNameFromResourceList( resourceListID, cnt ) objH = vs.GetObject( tempStr ) parentH = vs.GetParent( objH ) if ( objH != None ) and ( parentH == sFolderH ): int = vs.InsertImagePopupResource( dialog, kSymPopup, resourceListID, cnt ) #END for #END if elif ( item == kOK ): objIndex = vs.GetImagePopupSelectedItem( dialog, kSymPopup ) objName = vs.GetImagePopupObject( dialog, kSymPopup, objIndex ) # Kriterium: Symbolname ist ... krit = "NOTINREFDLVP & NOTINDLVP & INSYMBOL & (S='" + objName + "')" vs.ForEachObject(aufloesen, krit) #END if #END def DialogHandler() dialog = vs.CreateLayout( 'Dialog', True, 'OK', 'Abbrechen' ) # create controls vs.CreateThumbnailPopup( dialog, kSymPopup ) # set relations vs.SetFirstLayoutItem( dialog, kSymPopup ) if ( vs.RunLayoutDialog( dialog, DialogHandler ) == 1 ): pass #END def SymbolSelDialog() SymbolListID, numSymItems = vs.BuildResourceList( 16, 0, '' ) #make list of all symbols SymbolSelDialog( True ) #show all symbols #END if Dadurch wird dir ein Dialog mit einem Symbolpicker gezeigt. Dadurch entstehen bestimmt keine Rechtschreibefehler. Beide Varianten lösen auch die verschachtelten Symbole auf. Dort hast du aber das Problem, dass die neue Gruppe als 3D-deklariert wird und demnach auch nur im 3D-Teil des Symbols angezeigt wird. Eher unschön, weil sie ja eigentlich nur 2D-Geometrie enthält. @Marc Wittwer Dieses Verhalten tritt aber auch beim manuellen Auflösen auf. Das innere 2D-Symbol wird aufgelöst und entschwindet in den 3D-Teil. Ist meiner Meinung nach ein Bug. @Fruitpunsh Die 2D/3D Thematik wirst du aber sowieso noch bearbeiten müssen, weil soweit ich weiss auch mit dem Scriptbefehl immer nur die Geometrie der aktuellen Ansicht konvertiert wird. Freundliche Grüsse Manuel Roth _________________________________________________ Vectorworks 2022 SP3 | Architektur | Windows 10
Manuel Roth Geschrieben 13. Mai 2022 Geschrieben 13. Mai 2022 (bearbeitet) Hallo Die Antwort sollte bald erscheinen, sobald sie nicht mehr versteckt ist. (Was auch immer das heisst. Eventuell ist sie zu lang.) Bearbeitet 13. Mai 2022 von Manuel Roth Freundliche Grüsse Manuel Roth _________________________________________________ Vectorworks 2022 SP3 | Architektur | Windows 10
temp676 Geschrieben 13. Mai 2022 Geschrieben 13. Mai 2022 vor 32 Minuten schrieb Manuel Roth: Dieses Verhalten tritt aber auch beim manuellen Auflösen auf. Das innere 2D-Symbol wird aufgelöst und entschwindet in den 3D-Teil. Ist meiner Meinung nach ein Bug. Hängt dies nicht damit zusammen in welchem Modus man sich befindet - 2D-Plan Draufsicht bzw. 3D Ansicht (oben, etc.)? vor 35 Minuten schrieb Manuel Roth: sobald sie nicht mehr versteckt ist. (Was auch immer das heisst. Du hast hier wahrscheinlich irgend ein Begriff verwendet der auf der "Blacklist" steht. Ist mir auch schon passiert. VW2024 SP7 R1 (Build 773964) Architektur iMac 5K i5-6500 16GB R9 M390 2GB macOS 12.7 Ryzen 9 7900X 64GB RX 7800XT 16GB Win11
Manuel Roth Geschrieben 13. Mai 2022 Geschrieben 13. Mai 2022 Normalerweise schon. Auf der KE funktioniert das auch tip-top, aber wenn ich ein 2D-Symbol, welches im 2D-Teil eines Symbols (ebenfalls 2D und nicht hybrid) in eine Gruppe auflöse und mich dabei in der 2D-Draufsicht befinde, wird es mir trotzdem in den 3D-Teil des Umgebungssymbols gelegt. 2 Freundliche Grüsse Manuel Roth _________________________________________________ Vectorworks 2022 SP3 | Architektur | Windows 10
Frage
Fruitpunsh
Gibt es eine Möglichkeit Symbole die wiederum in anderen Symbolen verschachtelt sind zu erreichen?
Um diese z.B. zu löschen oder in Gruppen umzuwandeln...
Ich habe ein Script geschrieben, welches alle Symbole mit spezifischem Namen in eine Gruppe umwandelt.
Das Script trifft alle Symbole die frei oder in Gruppen liegen, aber keine die innerhalb anderer Symbole stecken.
Anbei meine Testdatei mit freien und verschachtelten Symbolen
symbole.vwx
4 Antworten auf diese Frage
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