Michael Roman Geschrieben 4. Februar 2013 Teilen Geschrieben 4. Februar 2013 Hallo liebe Forum User, kann mir eventuell jemand behilflich sein bzw. hat Informationen über die Möglichkeit im VW Script ein geschriebenes Script( procedure) in ein neues Script zu integrieren??? (ohne jedoch nochmals die Befehle zu bennen, sondern nur den Namen des Scripts eventuell einzufügen) Für Tipps und/ oder Fallbeispiele wäre ich sehr dankbar. Viele Grüsse Michael Link zu diesem Kommentar
cadtischler Geschrieben 4. Februar 2013 Teilen Geschrieben 4. Februar 2013 Hallo Michael, es gibt verschiedene Wege. Einer ist zB {$include ... } mit einer Datei .px (reines ASCII mit Codezeilen) Dann wird importiert, und anschließend erst zusammen compiliert. Der Pfad kann auch relativ zum Quelltext sein. Im Screenshot ist er bei mir zufällig absolut. Näheres findest Du in den diversen Quellen, wie zB http://developer.vectorworks.net VectorScript Language Guide.pdf im Programme-Ordner Schönen Gruß, Uwe. Hier ist auch der fehlende Screenshot ;-) VW 2014 Interiorcad - Vectorscript - AV - Mac OS X 10.9 , www.cadtischler.de Link zu diesem Kommentar
Michael Roman Geschrieben 11. Februar 2013 Autor Teilen Geschrieben 11. Februar 2013 Hall Uwe, danke erstmal für die Antwort. Sollte es so funktionieren oder war das anders gedacht?? ___________________________________________________ Procedure testit; Var i: Integer; HObject: Handle; Begin SelectObj(INSYMBOL & INVIEWPORT & (C='buildings_poly')); HObject:=FSActLayer; While HObject<>Nil Do Begin setfillback(HObject,65255); HObject:=NextSObj(HObject); End; DselectAll; {$include LANDSCAPE_TYPOLOGY} END; Run(testit); ______________________________ wobei das {$include LANDSCAPE_TYPOLOGY} ein anderes script ist, welches in der palette gespeichert ist. und der screenshoot der palette Link zu diesem Kommentar
cadtischler Geschrieben 16. Februar 2013 Teilen Geschrieben 16. Februar 2013 Hallo Michael, könnte auch gehen, also Script im Zubehör des Dokumentes "lagern". Ich handhabe es wie im Screenshot zu sehen, da ich die Scripte idR in allen Dokumenten benutzen will. Im Vectorscript-Editor nur ein include, da der Editor zu wenig Komfort bietet. So kann ich aber dennoch für Parameter bei PIOs seine Funktionalität mit benutzen. Der Code lagert dann im Editor, und wird nach Save dort sofort in VW verwendet. Dazu noch beim VW-Start ein SetPref(407,TRUE) (dann wird das komplette Script jedesmal neu kompiliert), und das Script (hier WPMNBiboMenue1) in der Arbeitsumgebung mit Shortcut einbinden. Dieses als Anregungen. Um einen eigenen, praktikablen Workflow zu entwickeln, mußt Du mit den Möglichkeiten mal ein bisschen spielen und testen. An den eigenen Erfahrungen führt dann doch kein weg vorbei ;-) Viel Erfolg, Uwe. VW 2014 Interiorcad - Vectorscript - AV - Mac OS X 10.9 , www.cadtischler.de Link zu diesem Kommentar
Michael Roman Geschrieben 11. Juni 2013 Autor Teilen Geschrieben 11. Juni 2013 Hallo Zusammen, weiss jemand wie man das Script aufbauen muss um einen Layer (Name zb. "polylines") zu aktivieren, wenn dieser bei den Design LAyers nicht aktiviert, bzw. ein anderer Layer aktiv ist. Anbei der Auszug des Scripts: /// Procedure roads_lines_reset; Type Obj = STRUCTURE Get: Handle; End; Farbe = STRUCTURE R,G,B: Longint; End; Var i,j: Integer; myHObject: Handle; r,g,B: lONGINT; mycolors: Array[1..100]of Farbe; numbObJ:Integer; myobjects:Array[1..30000]of Obj; myRGB: Array[1..3]of Longint; mynumbers:Array[1..10]of Real; mynumber: Real; mynumbersmin: Array[1..10]of Real; mynumbermin: Real; mynumbersmax: Array[1..10]of Real; mynumbermax: Real; {...} Procedure realRGB(_R,_G,_B: Longint;Var _RGBlong:Array[1..3]of longint); Begin _RGBlong[1]:=_R*65535/255; _RGBlong[2]:=_G*65535/255; _RGBlong[3]:=_B*65535/255; End; {...} Procedure scanselectedObjects(Var _myObjects:Array[1..30000]of Obj; Var _numbofObj : Integer); VAR _i : Integer; _HObject : Handle; _tempnumbObj : Integer; _tempObjects : Array[1..30000]of Obj; BEGIN _i:=1; _HObject:=FSActLayer; While(_HObject<>Nil) Do Begin _tempObjects[_i].get:=_HObject; _HObject:=NextSObj(_HObject); If _HObject <> NIL Then _i:=_i+1; End; _tempnumbObj:=_i; _numbofObj:=_tempnumbObj; _myObjects:=_tempObjects; DselectAll; End; {MAIN} Begin (*definiere Farben gebäudehöhe: <=6 *) mycolors[1].R:=140; mycolors[1].G:=140; mycolors[1].B:=140; mynumbersmin[1]:=0; mynumbersmax[1]:=6; (*gebäudehöhe: >6 <=12 *) mycolors[2].R:=140; mycolors[2].G:=140; mycolors[2].B:=140; mynumbersmin[2]:=6; mynumbersmax[2]:=12; (*gebäudehöhe: >12 <=18 *) mycolors[3].R:=140; mycolors[3].G:=140; mycolors[3].B:=140; mynumbersmin[3]:=12; mynumbersmax[3]:=18; (*gebäudehöhe: >18 <=25 *) mycolors[4].R:=140; mycolors[4].G:=140; mycolors[4].B:=140; mynumbersmin[4]:=18; mynumbersmax[4]:=25; (*gebäudehöhe: >25 *) mycolors[5].R:=140; mycolors[5].G:=140; mycolors[5].B:=140; mynumbersmin[5]:=25; mynumbersmax[5]:=500; {.........................................................................................................................................} For j:=1 To 5 do Begin realRGB(mycolors[j].R,mycolors[j].G,mycolors[j].B,myRGB); mynumbermin:=mynumbersmin[j]; mynumbermax:=mynumbersmax[j]; SelectObj((INSYMBOL & INVIEWPORT & ('buildings_polyRec'.'HEIGHT'>mynumbermin)&((R IN ['buildings_polyRec']) & ('buildings_polyRec'.'HEIGHT'<=mynumbermax)))); scanselectedObjects(myObjects,numbObJ); For i:=1 to numbobj Do Begin SetPenFore(myObjects.get,myRGB[1],myRGB[2],myRGB[3]); End; End; (* FARBE CLASS PUBLICTRANSPORTLINES*) R:= 240; G:= 240; B:= 240; realRGB(R,G,B,myRGB); SelectObj(INSYMBOL & INVIEWPORT & (C='publictransport_lines')); scanselectedObjects(myObjects,numbObJ); For i:=1 to numbobj Do Begin SetPenFore(myObjects.get,myRGB[1],myRGB[2],myRGB[3]); End; DselectAll; (* RESET ROADS_LINES*) R:= 240; G:= 240; B:= 240; realRGB(R,G,B,myRGB); SelectObj(INSYMBOL & INVIEWPORT & (C='roads_lines')); scanselectedObjects(myObjects,numbObJ); For i:=1 to numbobj Do Begin SetPenFore(myObjects.get,myRGB[1],myRGB[2],myRGB[3]); End; DselectAll; END; /////////////////// Danke für eventuelle Auskünfte....[/u] Michael Link zu diesem Kommentar
cadtischler Geschrieben 11. Juni 2013 Teilen Geschrieben 11. Juni 2013 Hallo, tut das nicht einfach die Procedure LAYER(name:STRING); ? Bescheibung: Procedure Layer creates a new layer in a Vectorworks document. After creation, the new layer becomes the active layer of the document. Layer can also be used to switch the active layer of the document. If the layer name passed to the procedure already exists, the procedure switches the active layer to the specified layer. Single quotes should be avoided in layer names, as they will be treated as a mismatched string specifier, and will cause an error to be generated. Schönen Gruß, Uwe. VW 2014 Interiorcad - Vectorscript - AV - Mac OS X 10.9 , www.cadtischler.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