Zum Inhalt springen

mehrere Linienlängen auslesen


blechdose

Empfohlene Beiträge

Hallo zusammen,

 

ich habe wieder einmal eine Frage:

 

Wie kann ich am einfachsten diie Gesamtlänge, verschiedenen Linien anzeigen lassen? Die Linien sind nicht miteinander verbunden.

Es geht um einen Kanalisationsplan, wobei ich gerne die Laufmeter der verschiedenen Leitungen auslesen möchte, ohne alle zusammen rechnen zu müssen.

 

Ich hoffe Ihr könnt mir dabei weiter helfen, Danke schon einmal!

Link zu diesem Kommentar

Ich habe es eben getestet, s. den Screenshot.

Es werden alle aktiven Linien, Rechtecken, Ovals, Polygonen, Kreisbögen, Kreise und Polylinien

mit ihren Längen addiert.

 

Das Script steht unten, natürlich ohne Garantie ;-)

 

Schönen Gruß, Uwe.

 

 

PROCEDURE WPMNTest1;

 

(* Addiert die Längen von

(* Linien, Rechtecken, Oval, Polygonen, Kreisbögen, Kreisen, Polylinien

(*

(* © cadtischler.de

*)

 

VAR Laenge:REAL;

 

PROCEDURE WPMNTest2(h:HANDLE);

VAR x:REAL;

BEGIN

CASE GetTypeN(h) OF

2 : x:=HLength(h);

3,4,5,6,21 : x:=HPerim(h);

END;

Laenge:=Laenge+x;

END;

 

BEGIN

Laenge:=0;

ForEachObject(WPMNTest2,(SEL=TRUE));

Message('Alle aktiven Linien zusammen haben eine Länge von ',Num2StrF(Laenge));

END;

 

Run(WPMNTest1);

1215827791_Bildschirmfoto2012-12-18um21_31_06.png.bb7a476aade00d772e0fe066794afea9.png

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

Link zu diesem Kommentar

Hallo Uwe

 

Vielen Dank für Deine Hilfe! Es funktioniert schon fast perfekt.

Wollte jetzt noch di Attribute hinzufügen, so das ich diese nicht vorgängig selber aktivieren muss, sondern alles automatisch über das Script funktioniert. Jedoch bekomme ich die ganze Zeit ein Error (sihene Screenshot).

 

gruss blechdose

 

 

 

 

Procedure CustTool;

VAR

Name:STRING;

Result:BOOLEAN;

BEGIN

PenSize(3);

NameClass('Kana.- Schmutzwasser');

Layer('Kanalisation');

PenBack(256);

PenFore(257);

END;

Run(CustTool);

PROCEDURE WPMNTest1;

 

(* Addiert die Längen von

(* Linien, Rechtecken, Oval, Polygonen, Kreisbögen, Kreisen, Polylinien

(*

(* © cadtischler.de

*)

 

VAR Laenge:REAL;

 

PROCEDURE WPMNTest2(h:HANDLE);

VAR x:REAL;

BEGIN

CASE GetTypeN(h) OF

2 : x:=HLength(h);

3,4,5,6,21 : x:=HPerim(h);

END;

Laenge:=Laenge+x;

END;

 

BEGIN

Laenge:=0;

ForEachObject(WPMNTest2,(SEL=TRUE));

Message('Alle aktiven Linien zusammen haben eine Länge von ',Num2StrF(Laenge));

END;

 

Run(WPMNTest1);

Unbenannt.thumb.JPG.3d911eb51f39e85908460a4e910324e1.JPG

Link zu diesem Kommentar

Hallo Blechdose,

 

Es darf nur ein RUN geben.

Eine weitere Procedure muss IN der "Kapsel" WPMNTest1 stehen, so wie auch die Procedure WPMNTest2. Auch muss sie das aus dem "Hauptprogramm" (ähnlich dem main{} in C) aufgerufen werden.

 

Deine Procedure CustTool legt eine neue Klasse und einen neuen Layer an und setzt Stifte.

Wozu dienst das ?

Wenn Du alle Objecte auf dem Layer "Kanalisation" in der Klasse "Kana..." mit PenSize=3 aktivieren willst, ginge das am einfachsten mit dem Zauberstab = Ähnliches aktivieren. Das Werkzeug hat umfangreiche Einstellmöglichkeiten, s. Screenshot.

 

Alternativ kannst Du im Script in der vorletzten Zeile die Auswahl der Objekte bestimmen, in der Art:

 

ForEachObject(WPMNTest2,( (L='Konstruktion') & (C='Bemaßung') & (LW=7) & (PF=258) & (PB=260));

 

Die Möglichkeiten hierzu finden sich in der Vectorscript-Doku unter "Criteria".

 

Viel Spaß,

Uwe.

777093570_Bildschirmfoto2012-12-19um10_46_44.png.3cea3ae8f46666aeadc6bb2e4014c628.png

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

Link zu diesem Kommentar
  • 5 Jahre später...

Vielen Dank für das Skript, cadtischler. Auch im englischsprachigen Vectorworksforum habe ich nichts dazu gefunden.

 

Wenn ich die Länge der Linien auslesen lassen will, dann funktioniert das leider nur, wenn ich die Objekte in ein komplett neues Dokument kopiere. Beim Auslesen der Länge in meiner Planungsdatei kommt nur Unsinn heraus.

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,4Tsd
    • Beiträge insgesamt
      120,1Tsd
×
×
  • Neu erstellen...