Hallo Lenge,
in dem Code wird ein einzelnes Objekt ausgewählt, dann in ein vla-Objekt konvertiert.
Aus dem vla-Objekt kann man dann die Eigenschaften über vlax-get abfragen.
1. Abfrage: handelt es sich um ein Bemassungsobjekt
2. Abfrage: die Länge kann über 'Dimension abgefragt werden.
Für Deinen Fall musst Du über SSGET einen Auswahlsatz bilden von Bemassungsobjekten auf dem Layer "Länge"
Dieser wird dann in einer REPEAT-Schleife durchlaufen und es wird (ist nur ein Beispiel) anhand des Objektnamens geprüft, ob es sich um eine ausgerichtete oder lineare Bemassung handelt (eine Koordinatenbemassung möchtest Du in der Längensumme sicherlich nicht dabei haben).
Die Länge wird dann in der Variablen LAENGE zusammengezählt und zum Schluss aus Rückgabewert zurückgegeben.
Code:
(defun c:BemMass ( / AWS LAENGE N OBJ)
(if (setq aws (ssget (list (cons 0 "DIMENSION")(cons 8 "Länge"))))
(progn
(setq Laenge 0.0
n 0)
(repeat (sslength aws)
(setq obj (vlax-ename->vla-object (ssname aws n)))
(if (member (vlax-get obj 'ObjectName)
'("AcDbRotatedDimension" "AcDbAlignedDimension"))
(setq Laenge (+ (vlax-get obj 'Measurement)Laenge)))
(setq n (+ n 1)))
Laenge)
(alert "Keine Bemassungen auf Layer \"Länge\" gewählt."))
)
Und weil Du noch ganz neu bist in der Programmierung solltest Du Dir mal folgende Dokumenation über den VLIDE-Editor von AutoCAD anschauen, dort wird erklärt, wie man einen Code debuggt, daß kannst Du dann mit dem Beispiel-Code gleichmal machen:
http://www.bosse-engineering.com/downloads/090501_VisualLISP-Editor.pdf
Eine Anmerkung noch: Wenn Du in der Bemassung z.B. eine Textüberschreibung hast müßte die noch gesondert abgefragt werden, mit der Eigenschaft 'Dimension werden nur die gemessenen Masse des Bemassungsobjektes ausgegeben.
Na dann, ich wünsche Dir ein fröhliches Ausprobieren.
------------------
viele Grüße
Jörn
http://www.bosse-engineering.com
Kordinaten einlesen Youtube
[Diese Nachricht wurde von joern bosse am 01. Sep. 2013 editiert.]
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP