源码如下:
 - (defun c:ttu(/ s1 s2 sstoes a b);|如果有两个文字距一个引线距离一样远,会移动最后写入的那个文字|;
- (defun SstoEs(ss / a en lst)
- (if ss(progn(setq a -1)
- (while(setq en(ssname ss(setq a(1+ a))))(setq lst(cons en lst)))))
- lst)
- (prompt "请选择引线和要移的文字")
- (setq s1(SstoEs(ssget'((0 . "LEADER,TEXT"))))s2'())
- (foreach a s1
- (if (=(vla-get-objectname(vlax-ename->vla-object a))"AcDbText")
- (setq s1(vl-remove a s1)s2(cons a s2))))
- (foreach a s1
- (if s2(entmod(setq p(cdr(assoc 10(entget a)))
- b(car(vl-sort(mapcar'(lambda(x)(setq b(entget x)q(if(equal'(11 0 0 0)(assoc 11 b))(assoc 10 b)(assoc 11 b)))
- (list(distance(cdr q)p)q x))s2)'(lambda(x y)(<(car x)(car y)))))
- s2(vl-remove(caddr b)s2)
- b(subst(cons(caadr b)p)(cadr b)(entget(caddr b)))))))
- (princ)
- )
文字是与引线的起点对齐,求高手修改成文字与引线末端对齐 |