你的幸运日为这段代码增加了大约5行代码,现在它可以工作了,如果需要其他更改,那么可能是学习如何编写/更改程序的好时机。这将根据我的工作岗位以上无论是自动选择或手动谢谢李
- : original program by lee mac
- ; Room and number added by Alan H FEB 2011
- (princ "\nTo run type plen3")
- (defun c:pLen3 (/ *error* doc spc ss mid tStr tBox tObj lAng)
- (vl-load-com)
- (defun *error* (msg)
- (if
- (not
- (wcmatch
- (strcase msg) "*BREAK,*CANCEL*,*EXIT*"))
- (princ
- (strcat
- "\n<< Error: " msg " >>")))
- (princ))
- (if
- (eq 4
- (logand 4
- (cdr (assoc 70
- (tblsearch "LAYER"
- (getvar "CLAYER"))))))
- (progn
- (princ "\n<< Current Layer Locked >>") (exit)))
- (setq doc (vla-get-ActiveDocument
- (vlax-get-Acad-Object))
- spc (if
- (zerop
- (vla-get-activespace doc))
- (if (= (vla-get-mspace doc) :vlax-true)
- (vla-get-modelspace doc)
- (vla-get-paperspace doc))
- (vla-get-modelspace doc)))
- (while (not ss)
- (setq ss (ssget '((0 . "*LINE")))))
- (setq tSze (getvar "DIMTXT"))
- (setq x 1)
- (foreach Obj
- (mapcar 'vlax-ename->vla-object
- (vl-remove-if 'listp
- (mapcar 'cadr (ssnamex ss))))
- (setq tStr (rtos (vla-get-length Obj) 3 2)
- tBox (textbox
- (list
- (cons 1 (strcat "room" tStr ".."))
- (cons 40 tSze)
- (cons 7 (getvar "TEXTSTYLE")))))
- (setq mid (/ (abs (- (vlax-curve-getEndParam Obj)
- (vlax-curve-getStartParam Obj))) 2.)
- lAng (angle '(0 0 0) (vlax-curve-getFirstDeriv Obj mid)))
- (cond ((and (> lAng (/ pi 2)) (<= lAng pi))
- (setq lAng (- lAng pi)))
- ((and (> lAng pi) (<= lAng (/ (* 3 pi) 2)))
- (setq lAng (+ lAng pi))))
- (setq rnum (rtos X 2 0))
- (setq tstr (strcat "ROOM" rnum tStr))
- (setq tObj
- (vla-addMText spc
- (vlax-3D-point (vlax-curve-getPointatParam Obj mid))
- (- (caadr tBox) (caar tBox)) tStr))
- (vla-put-Height tObj tSze)
- (vla-put-Rotation tObj lAng)
- (setq x (+ x 1))
- )
- (princ)
- )
塔瓦特 |