lengliqun 发表于 2010-2-5 16:58:00

申请一个程序:框选字符与*line线,若字符与*LINE线接触或压住*LINE线,则将该字符

申请一个程序:框选字符与*line线,若字符与*LINE线接触或压住*LINE线,则将该字符改成红色以示警告<p>为使图面整洁,需将大量字符中一些压住线条的字符找出来稍移下位置。</p><p><br/>特申请一个程序:框选字符与*line线,若字符与*LINE线接触或压住*LINE线,则将该字符改成红色以示警告。</p>

ZZXXQQ 发表于 2010-2-5 22:39:00

本帖最后由 作者 于 2010-2-6 21:39:24 编辑

再试试看:

;压线字变红 明经 ZZXXQQ 2010.2.5,2010.2.6
(defun c:tt ()
(if (and (princ "\n选择文字 :") (setq ss (ssget '((0 . "TEXT"))))) (progn
(setq bb (getdist "\n文字四周间隔 <50> :"))
(setq bb (if bb bb 50))
(setq i 0)
(setq oldh (getvar "TEXTSIZE"))
(setq oldsty (getvar "TEXTSTYLE"))
(repeat (sslength ss)
   (setq ent (entget(ssname ss i)) i (1+ i))
   (setq pt (cdr(assoc 10 ent)))
   (setq ang (cdr(assoc 50 ent)))
   (setq txtw (cdr(assoc 41 ent)))
   (setvar "TEXTSIZE" (cdr(assoc 40 ent)))
   (setvar "TEXTSTYLE" (cdr(assoc 7 ent)))
   (setq tmp (cadr(textbox(list(assoc 1 ent)))))
   (setq txth (cadr tmp))
   (setq txt_w (* (car tmp) txtw))
   (setq pt (polar (polar pt (+ ang pi) bb) (+ (/ pi -2) ang) bb))
   (setq p1 (polar pt ang (+ txt_w bb bb)))
   (setq p2 (polar pt (+ (/ pi 2) ang) (+ txth bb bb)))
   (setq p3 (polar p2 ang (+ txt_w bb bb)))
   (setq plst (list pt p1 p3 p2))
   (if (setq ss1 (ssget "CP" plst '((0 . "LINE")))) (progn
    (if (assoc 62 ent)
   (setq ent (subst (cons 62 1) (assoc 62 ent) ent))
   (setq ent (append ent (list (cons 62 1))))
    )
(entmod ent)
   ))
)
(setvar "TEXTSIZE" oldh)
(setvar "TEXTSYTLE" oldsty)
))
(princ)
)

lengliqun 发表于 2010-2-6 00:52:00

<p>谢谢,CAD2004测试可达到压线字符变红的目的。</p><p>工程实际中,我们一般认为字符与线的间距小于50时,就是“压线”字符了,</p><p>能再加个间距条件吗?当字符与*line距离小于50时,就算是字符“压线”,字符就变红。</p><p>再次感谢<strong><font face="Verdana" color="#da2549">ZZXXQQ版主</font></strong></p>

ZZXXQQ 发表于 2010-2-6 21:40:00

二楼已改,再试试。

lengliqun 发表于 2010-2-6 22:03:00

CAD2004测试达到要求,非常感谢<strong><font face="Verdana" color="#da2549">ZZXXQQ版主。</font></strong>

oldstone 发表于 2011-11-14 14:48:42

我下来看看
页: [1]
查看完整版本: 申请一个程序:框选字符与*line线,若字符与*LINE线接触或压住*LINE线,则将该字符