Zum Inhalt springen

Skript: Extrudiere ausgewählte Objekte


Prangelz

Empfohlene Beiträge

Moin zusammen,

 

ich habe für die Erstellung von eigenen, "intelligenten" Objekten mit dem Skript-Programm von Vectorworks begonnen.

Ich habe mich bereits im Englischen Forum und auf der Developer Seite eingelesen.

 

Folgender Sachverhalt:

 

Ich möchte bestimme Objekte in der Zeichnung auswählen und danach extrudieren.
Das automatische auswählen der Objekte klappt schon mal.

Jetzt weis ich leider nicht welcher Befehlt mir diese ausgewählten Objekte extrudieren kann...
Habe mich mit dem Befehle "BeginXtrd" auseinander gesetzt, welcher (nach meinem Kenntnisstand) nur neue, durch ein Werkzeug erstellte Objekte extrudieren kann.

Ein weiterer Befehl wäre "Hextrude", wo mit jedoch der Parameter fehlt um im zu sagen :"bitte ausgewählte Objekte extrudieren".

 

Hier mein kleines "Anfängerskript":

 

PROCEDURE FirstExample;

BEGIN
    DSelectAll;
    SelectObj((((L='nts-Entwaesserung') & (C='nts-Entwaesserung-Planung-SW Schacht'))));
    HExtrude( "Selektierte Objekte", 0 , 5);
END;
RUN(FirstExample);

 

Schon mal vielen Dank für die Hilfe im Voraus! :)

Vectorworks Landschaft

 

Windows 10 Pro 64-bit

Intel i7-7700 3.60 GHz

NVIDIA Geforce 1050 Ti 

16 GB RAM

Link zu diesem Kommentar

Hallo
Also Du musst zuerst die aktivierten Objekte in eine Liste bringen. Dann musst Du die Liste durchlaufen lassen und den Befehl auf die Objekte anwenden. Also erstens nicht direkt in der Such-Schlaufe die Objekte manipulieren und zweitens braucht HExtrude ein handle (ein gefundenes Objekt) und kein selektiertes Objekt. 

Ein Python Script für Selektierte Objekte sähe so aus:

#Variablen-Name für gefundene Objekte
#Variablen können einzelne Werte enthalten aber auch Arrays mit mehreren Werten [] ist ein Variablentyp Liste 
objekte = []

#Funktion um Objekte zu sammeln
def get_obj(h):
	objekte.append(h)

#ForEach ... sucht Elemtente in der Zeichnung. In diesem Fall die aktive Ebene mit sichtbaren Elementen
#und wendet auf jedes gefundene Objekt die Funktion "geth_Obj" an.
vs.ForEachObjectInLayer(get_obj, 2,0,0) 

# die gespeicherten Objekte loopen (iteration)
for obj in objekte:
	vs.HExtrude(obj, 0,5)
	
	


Ein Python Script auf Objekte mit einem Kriterium sähe so aus (entspricht Deinen Beispiel)

Zitat
objekte = []

def get_obj(h):
	objekte.append(h)

c = "(NOTINDLVP & NOTINREFDLVP & ((L='nts-Entwaesserung') & (C='nts-Entwaesserung-Planung-SW Schacht')))"
vs.ForEachObject(get_obj, c)

for obj in objekte:
	vs.HExtrude(obj, 0,5)
	
	

 



 

  • Like 1

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

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,9Tsd
    • Beiträge insgesamt
      123,3Tsd
×
×
  • Neu erstellen...