请教有关文本类型是图元的问题(原程序已经贴出)
本帖最后由 kailuan2zhong 于 2011-11-15 16:47 编辑请教有关文本类型图是元的问题, 一个在图中查找字符串的小程序中,有以下几句,不明白是什么意思,麻烦给解释下 其中 a是文本类型图元en1的图元表,n是图元统计个数 (setq n(1+ n)) (setq a (cdr (assoc -1 a))) (redraw a 3) 关键是第二句不明白 根据图元表得到图元名称 byghbcx 发表于 2011-11-15 14:12 static/image/common/back.gif
根据图元表得到图元名称
前面已经定义了a是图元表 ,为什么后面查询图元表a中-1所代表的子表后 怎么会赋值给a呢?
另外 -1所代表的是图元名吗? 程序中可能对A变量不要了 byghbcx 发表于 2011-11-15 15:12 static/image/common/back.gif
程序中可能对A变量不要了
哦 但是前面这几句包含在一个if语句中,而a是在if语句之前定义为图元表的,这样对吗,跳出if 以后,a的值是什么了,回到图元表的定义还是图元名的?
贴出原程序可以看看 kailuan2zhong 发表于 2011-11-15 15:20 static/image/common/back.gif
哦 但是前面这几句包含在一个if语句中,而a是在if语句之前定义为图元表的,这样对吗,跳出if 以后,a的值是什 ...
那要看在程序执行过程中if的条件是否为真。 用手机发的,括号可能有点乱,尽量看下吧:
(defun *error*(st)
(princ (strcat "Error: " st))
(princ)
)
(defun C:sht( / text ss len n en1 a oldr ent nn)
(setvar "CMDECHO" 0)
(setq nn 0)
(setq text (getstring "\nSearch for : "))
(setq ss (ssadd))
(setq ss (ssget))
(if (not (or (= nil ss) (= text nil)))
(progn
(setq len (sslength ss))
(setq n 1)
(while (<= n len)
(setq en1 (ssname ss (1- n)))
(setq a (entget en1))
(if (= "TEXT" (cdr (assoc 0 a)))
(progn
(setq oldr (cdr (assoc 1 a)))
(if (= oldr text)
(progn
(setq nn (1+ nn))
(setq a (cdr (assoc -1 a)))
(redraw a 3)
)
)
)
)
))
(setq n (1+ n))
)
)
)
(princ (strcat (itoa nn) " texts found !"))
(princ)
) byghbcx 发表于 2011-11-15 15:40 static/image/common/back.gif
贴出原程序可以看看
贴出了来了,麻烦看下。 vormittag 发表于 2011-11-15 15:50 static/image/common/back.gif
那要看在程序执行过程中if的条件是否为真。
我把原程序贴出来了,麻烦看下吧,谢谢。
页:
[1]
2