- UID
- 298726
- 积分
- 147
- 精华
- 贡献
-
- 威望
-
- 活跃度
-
- D豆
-
- 在线时间
- 小时
- 注册时间
- 2005-7-25
- 最后登录
- 1970-1-1
|
发表于 2008-9-19 22:05:50
|
显示全部楼层
;功能是,判断选中的单行文本中,如果有两文本相重且两数字文本的内容不相等,就把其中一个文本都变为红色.
;这个程序是为练习写的吧,我觉得有能改进的地方,如果是工作用我能帮忙改进.
(defun c:zz (/ ss len n ss1 pt0 ss2 ss3 len1)
(setq ss (ssget '((0 . "text")))) ;构造一个选择集,只添加选中的单行文本
(if ss ;如果选择集不为空就执行
(progn
(setq len (sslength ss)) ;将选择集的长度赋给len
(setq n -1)
(repeat len
(setq n (1+ n))
(setq ss1 (ssname ss n)) ;得到选择集中挨个图元的图元名
(setq pt0 (cdr (assoc 10 (entget ss1)))) ;将文本的定位点赋给pt0
(setq i 0)
(repeat (- len n 1)
(setq i (1+ i)) ;i=1
(setq ss2 (ssname ss (+ n i)))
(setq pt1 (cdr (assoc 10 (entget ss2))))
(setq pt0x (car pt0))
(setq pt0y (cadr pt0))
(setq pt1x (car pt1))
(setq pt1y (cadr pt1))
(if (and (= pt0x pt1x) (= pt0y pt1y))
;判断同点,也就是说两文本的定位点是否相等
(setq ss3 ss2)
)
)
(if ss3
(progn
(setq t1 (atoi (cdr (assoc 1 (entget ss1)))))
;将文本内容转换为数字
(setq t2 (atoi (cdr (assoc 1 (entget ss3)))))
;将文本内容转换为数字
(cond ((> t1 t2) (command "change" ss1 "" "p" "c" "1" ""))
;如果两文本不相等将一文本都变为红色,
((< t1 t2) (command "change" ss3 "" "p" "c" "1" ""))
;如果两文本不相等将一文本都变为红色,
)
)
)
(setq ss3 nil)
)
)
)
)
|
|