40
102
62
后起之秀
使用道具 举报
4
2143
2197
限制会员
66
1552
1514
(defun dxf (n ed) (cdr (assoc n ed)))(defun bom-code (ssfilter / errexit undox restore*error* olderr oldcmdecho %l %tsset %i en ed p1 p2ot a1 a2 r)(defun errexit (s)(princ)(restore))(defun undox ()(command-s "._undo" "_E")(setvar "cmdecho" oldcmdecho)(setq *error* olderr)(princ))(setq olderr *error*restore undox*error* errexit)(setq oldcmdecho (getvar "cmdecho"))(setvar "cmdecho" 0)(command-s "._UNDO" "_BE")(setq %i 0%t 0)(vl-load-com)(setq sset (ssget ssfilter))(if sset(progn (princ "\nLengths:") (repeat (sslength sset) (setq en (ssname sset %i)) (setq ed (entget en)) (setq ot (dxf 0 ed)) (setq curve (vlax-ename->vla-object en)) (if (vl-catch-all-error-p (setq len (vl-catch-all-apply 'vlax-curve-getDistAtParam (list curve (vl-catch-all-apply 'vlax-curve-getEndParam (list curve) ) ) ) ) ) nil len ) (setq %l len) (setq %i (1+ %i) %t (+ %l %t) ) (terpri) ;(princ %l ) (princ (rtos %l (getvar "lunits")(getvar "luprec"))) ) (princ "\nTotal = ") ;(princ %t) (princ (rtos %t (getvar "lunits")(getvar "luprec"))) (textpage)))(setq sset nil)(restore))(defun bom-code-old (ssfilter / errexit undox restore*error* olderr oldcmdecho %l %tsset %i en ed p1 p2ot a1 a2 r)(defun errexit (s)(princ)(restore))(defun undox ()(command-s "._undo" "_E")(setvar "cmdecho" oldcmdecho)(setq *error* olderr)(princ))(setq olderr *error*restore undox*error* errexit)(setq oldcmdecho (getvar "cmdecho"))(setvar "cmdecho" 0)(command-s "._UNDO" "_BE")(setq %i 0%t 0)(setq sset (ssget ssfilter))(if sset(progn (princ "\nLengths:") (repeat (sslength sset) (setq en (ssname sset %i)) (setq ed (entget en)) (setq ot (dxf 0 ed)) (cond ((= ot "LINE") (setq p1 (dxf 10 ed) p2 (dxf 11 ed) %l (distance p1 p2) ) ) ((= ot "ARC") (setq a1 (dxf 50 ed)