Zum Inhalt springen

Script procedure kombinieren


Michael Roman

Empfohlene Beiträge

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

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 ;-)

1585134896_Bildschirmfoto2013-02-04um15_52_03.png.fe814ccdf33260cd80c79eb9892d8265.png

VW 2014 Interiorcad - Vectorscript - AV - Mac OS X 10.9 , www.cadtischler.de

Link zu diesem Kommentar

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

screenshoot_1.jpg.49e19e821392938eccd90b315dae6ac1.jpg

Link zu diesem Kommentar

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.

259108441_Bildschirmfoto2013-02-16um10_52_54.thumb.jpg.c91c26ae4736f7cf2ddddfb4c725f87d.jpg

VW 2014 Interiorcad - Vectorscript - AV - Mac OS X 10.9 , www.cadtischler.de

Link zu diesem Kommentar
  • 3 Monate später...

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

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

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