...
;;
;;; bomlengths.lsp
;;
;;; durch jimmy bergmark
;;; Copyright (c) 1997-2007 jtb world, alle Rechte vorbehalten
;;; Webseite:
www.jtbworld.com;;; E-Mail:
[email protected];;
;;; 1998-03-31 - erste Veröffentlichung
;;; 2000-05-11 - für Lwpolylines und für a2k
;;; 2003-06-10 - getestet auf 2004 und behoben ein kleiner Fehler
;;; 2004-03-18 - hinzugefügt (vl-load-com)
;;; 2007-09-24 - zeigt das Ergebnis in der aktiven Einheit
;;; getestet auf autocad 2000, 2004, 2005, 2008
;;; sollte auch an älteren Versionen mit geringfügigen Änderungen arbeiten.
;;; tauschen bom-code-old mit bom-code
;;
...
Beschreibung
;;
;;; Längenrechnung. die akkumulierte Summenlänge von mehreren Objekten erhalten.
;;; c:bomlengths - Länge der Linien, Bögen, Polylinien und Splines und insgesamt.
;;; c:bom_lines - Länge der Linien und insgesamt.
;;; c:bom_arcs - Länge der Bögen und insgesamt.
;;; c:bom_polylines - Länge der Polylinien und insgesamt.
;;; c:bom_splines - Länge der Splines und insgesamt.
...
(defun dxf (n ed)
(defun bom-code (ssfilter / errexit undox wiederherstellen)
*error* ältere cmdecho %l %t
Sset %i en ed p1 p2
ot a1 a2 r
)
(defun errexit (s)
(princ)
(Wiederherstellen)
)
(Defun undox)
(Befehl "._undo" "_e")
(Setvar "cmdecho" altcmdecho)
(setq *error* älterr)
(princ)
)
(setq älterer *error*
wiederherstellen
*error* errexit
)
(setq altcmdecho (getvar "cmdecho"))
(Setvar "cmdecho" 0)
(Befehl "._undo" "_be")
(setq %i 0)
% 0
)
(vl-load-com)
(setq sset (ssget ssfilter))
(falls sset)
(Prog.)
(princ "\nlengths:")
(Repeat)
(setq en (ssname sset %i))
(setq ed)
(setq ot (dxf 0 ed))
(setq Kurve (vlax-ename->vla-object en))
(falls vl-catch-all-error-p
(setq len (vl-catch-all-apply)
'vlax-curve-getdistatparam
(Listenkurve
(vl-catch-all-apply)
'vlax-curve-getendparam
(Listenkurve)
)
)
)
)
)
Nil
len
)
(satzq %l len)
(setq %i (1+ %i)
%t (+ %l %t)
)
(Terpri)
;
(princ (rtos %l (getvar "lunits") (getvar "luprec"))
)
(princ "\ntotal = ")
;(princ %t)
(princ (rtos %t (getvar "lunits") (getvar "luprec"))
(Textseite)
)
)
(Wiederherstellen)
)
(defun bom-code-old (ssfilter / errexit undox wiederherstellen)
*error* ältere cmdecho %l %t
Sset %i en ed p1 p2
ot a1 a2 r
)
(defun errexit (s)
(princ)
(Wiederherstellen)
)
(Defun undox)
(Befehl "._undo" "_e")
(Setvar "cmdecho" altcmdecho)
(setq *error* älterr)
(princ)
)
(setq älterer *error*
wiederherstellen
*error* errexit
)
(setq altcmdecho (getvar "cmdecho"))
(Setvar "cmdecho" 0)
(Befehl "._undo" "_be")
(setq %i 0)
% 0
)
(setq sset (ssget ssfilter))
(falls sset)
(Prog.)
(princ "\nlengths:")
(Repeat)
(setq en (ssname sset %i))
(setq ed)
(setq ot (dxf 0 ed))
(cond)
((= ot "line")
(setq p1 (dxf 10 ed)
p2 (dxf 11 ed)
%l (Abstand p1 p2)
)
)
((= ot "arc")
(Setq a1 (dxf 50 ed)
a2 (dxf 51 ed)
r (dxf 40 ed)
%l (* r (abs. a2 a1))
)
)
(t)
(Befehl "._area" "_obj" en)
(setq %l (getvar "perimeter")
)
)
(setq %i (1+ %i)
%t (+ %l %t)
)
(Terpri)
(Princ %l)
)
(princ "\ntotal = ")
(Princ %t)
(Textseite)
)
)
(Wiederherstellen)
)
(defun c:bomlengths ()
(initget "lines arcs polylines splines all")
(setq ans)
"Eine Option eingeben [Lines/Arcs/Polylines/Splines] <all>: "
)
)
(cond)
((= ans "lines") (c:bom_lines)
((= ans "arcs") (c:bom_arcs))
((= ans "polylines") (c:bom_polylines)
((= ans "splines") (c:bom_splines)
(t)
(Bom-Code '((-4). "<or") "arc")="" "line")="" "lwpolyline")="" "or="" "polyline")="" "spline")="" (-4="" (0="" .="">"
)
)
)
)
(princ)
)
(Defun c:bom_lines)
(bom-Code '((0 . "line")))
(princ)
)
(Defun c:bom_arcs)
(Bom-Code '((0 . "arc")))
(princ)
)
(Defun c:bom_polylines)
(Bom-Code '((-4). "<or") "lwpolyline")="" "or="" "polyline")="" (-4="" (0="" .="">"
)
)
(princ)
)
(defun c:bom_splines)
(bom-Code '((0 . "Spline")))
(princ)
)</or")></or")></all>