本帖最后由 vormittag 于 2011-10-24 21:46 编辑

- (defun c:te( / ss i l ename ell dxf48)
- (setq ss (ssget)
- i 0
- l (getdist (getpoint))
- );setq
- (if ss
- (repeat (sslength ss)
- (setq ename (ssname ss i)
- i (1+ i)
- ell (entget ename)
- );setq
- (if (not(zerop (getltypelength ename)))
- (progn
- (setq dxf48 (/ l (getvar "ltscale") (getltypelength ename)))
- (if (cdr (assoc 48 ell))
- (setq ell (subst (cons 48 dxf48) (assoc 48 ell) ell))
- (setq ell (append ell (list (cons 48 dxf48))))
- );if
- (entmod ell)
- );progn
- );if
- );repeat
- (princ "\nNothing Selected!")
- );if
- )
- (defun getltypelength (ename / ell1 layer ltype len)
- (setq ell1 (entget ename)
- layer (cdr (assoc 8 ell1))
- );setq
- (if (cdr (assoc 6 ell1))
- (setq ltype (cdr (assoc 6 ell1)))
- (setq ltype (cdr (assoc 6 (tblsearch "layer" layer))))
- );if
- (setq len (cdr (assoc 40 (tblsearch "ltype" ltype))))
- )
简单写了点,选择实体以后,再选择两点,线型重复长度改成两点间距离。随手写的,没怎么调试,代码不健壮。 |