如何获取已定义的全局变量名称?
如何获取CAD中已加载的.LISP.FAS.VLX文件中的所有已定义的全局变量的名称? 要知道你的变量名才行 可是想要的就是名称啊,为了防止再编的全局变量名称与原有的起冲突。比如一个程序中定义了全的全局变量名为"ASD",但是这个程序开CAD后没有执行过,那么"!ASD"返回的结果应该是NIL,我怎么才能知道这个ASD是被定义为全局变量了的呢? 这个我也不知道怎么获得,不过我建议不要用全局变量,可以使用注册表,文件或系统变量等代替...还有,如果还是要使用,取全局变量的时候取复杂一点,直观点,这样就很难重复 用(ATOMS-FAMILY 0)可以得到当前LISP中所有程序名和变量名的原子表,楼主只要对这个表中的名字用TYPE函数进行判断就行了。 这个函数好象不指定,就不能返回自定义的函数和变量...如果指定了,用它就多余了 ZZXXQQ,不对啊,我试过了得不到全局变量,已赋值的跟未赋值的都得不到 试一下下面的程序
(DEFUN C:TEST ()<BR> (SETQ ATO (ATOMS-FAMILY 0)<BR> TL (LENGTH ATO)<BR> I 0<BR> BL (LIST))<BR> (REPEAT TL<BR> (IF (NUMBERP (EVAL (NTH I ATO)))<BR> (SETQ BL (CONS (NTH I ATO) BL))<BR> )<BR> (SETQ I (1+ I))<BR> )<BR> (PRINC BL)<BR> (PRINC)<BR>) (ATOMS-FAMILY 0)
返回的就没有自定义的东西啊,后面你再怎么弄这个返回的表,也不会把没有的东西弄出来吧 我这里有个程序可以达到楼主的要求(defun hs_list(funn / FL)
(if (= funn "")
(setq funn "*")
)
(setqfl (vl-remove-if-not
(function (lambda (i) (wcmatch i (strcase funn))))
(atoms-family 1)
)
)
)其中,自变量FUNN为字符串,可以带通配符。
页:
[1]
2