明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2516|回复: 6

lisp变量的问题

[复制链接]
发表于 2006-7-25 21:24:00 | 显示全部楼层 |阅读模式

写了几个小程序,可能由于懒惰的原因,几个程序中用了相同的变量,但是类型不同。

由于要重复利用的原因,又不能设置为局部变量,这样以来首先加载的程序便不能正确运行,提示类型错误。

请教专家能否解决,最好不是一个一个的修改变量名称。

谢谢

发表于 2006-7-25 21:35:00 | 显示全部楼层

在使用前强制重新赋值或加变量类型判断语句。

 楼主| 发表于 2006-7-26 20:35:00 | 显示全部楼层

继续请教专家

变量类型如何判断?比如说如何判断

1、(setq en (getpoint))

2、(setq en (entget (car (entsel))))

en是类型1还是类型2?谢谢

发表于 2006-7-26 21:38:00 | 显示全部楼层

在lisp中,变量都不需要定义类型,变量类型是根据后面的数值类型来判断的,

不过为了不出错,最好在使用前强制重新赋值或者使用局部变量

 楼主| 发表于 2006-7-27 19:35:00 | 显示全部楼层

不是说了吗,有些情况不好重新赋值,更不能用局部变量的。

我想加一个判断语句,如上例子,如果en为一个点,则强行赋值为默认值,否则就用那个串行作为运行初始值。请问如何判断?有没有比下面更简单的方法?

(if (+ (car en)  1)

(....)

(....)

)

就是说,看en的第一个元素能否加1。

原则上,这种方法可行,但如果我有很多变量,就很麻烦

发表于 2006-7-28 08:55:00 | 显示全部楼层
hwang21发表于2006-7-26 20:35:00 继续请教专家 变量类型如何判断?比如说如何判断 1、(setq en (getpoint)) 2、(setq en (entget (car (ent...


(= (TYPE EN) 'ENAME) ;实体

(= (TYPE EN) 'EXSUBR) ;外部函数

(= (TYPE EN) 'EXRSUBR) ;外部ARX函数

(= (TYHE EN) 'FILE) ;文件描述符

(= (TYPE EN) 'INT) ;整数

(= (TYPE EN) 'LIST) ;表

(= (TYPE EN) 'PAGETB) ;虚拟分页函数

(= (TYPE EN) 'PICKSET) ;选择集

(= (TYPE EN) 'REAL) ;实数

(= (TYPE EN) 'STR) ;字符串

(= (TYPE EN) 'SUBR) ;内部函数

(= (TYPE EN) 'SYM) ;符号

发表于 2013-4-15 16:15:20 | 显示全部楼层
用局部变量的方式解决。把变量名加到函数定义中
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-5-31 18:54 , Processed in 0.382577 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表