找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 783|回复: 5

[求助] 有关输入数值的记忆问题

[复制链接]

已领礼包: 685个

财富等级: 财运亨通

发表于 2013-5-27 10:14:52 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
以下源码摘自弦开心工具箱
;画五角星
(defun c:KJ_5JX()
     (PRINC "\n【開金工具箱】---画五角星功能")(PRINC)
  (setq os (getvar "osmode") ;提取捕捉模式储存
cmdcho (getvar "cmdecho"));保存指令过程响应
  (setvar "osmode" 0);设没有捕捉
  (setvar "cmdecho" 0);指令执行过程不响应
  (tsc)
  (while(setq pt1 (getpoint "\n-->请指定插入点"))
  (setq pt2 (polar pt1 (angtof "-108") (sc 28.9086)))
  (setq pt3 (polar pt2 pi (sc 28.9086)))
  (setq pt4 (polar pt3 (angtof "-36.00") (sc 28.9086)))
  (setq pt5 (polar pt4 (angtof "-108")(sc 28.9086)))
  (setq pt6 (polar pt5 (angtof "36")(sc 28.9086)))
  (setq pt7 (polar pt6 (angtof "-36")(sc 28.9086)))
  (setq pt8 (polar pt7 (angtof "108")(sc 28.9086)))
  (setq pt9 (polar pt8 (angtof "36")(sc 28.9086)))
  (setq pt10 (polar pt9 pi (sc 28.9086)))
  (command "color" "r")
  (command "pline" pt1 pt2 pt3 pt4 pt5 pt6 pt7 pt8 pt9 pt10 "c")
  (setq s1 (entlast))
  (command "-bhatch" "p" "s" "s" s1 "" ""))
  (setvar "osmode" os)
  (setvar "cmdecho" cmdcho)
)
;比例因子




以下这段代码哪位大神能否解释一下,
输入《比例因子》时为什么可以记忆上一次输入的数值
本人菜鸟实在看不懂

(defun tsc()
(if (= js_scale nil);判断js_scale是否等于0,若等于,就执行第一个
(setq js_scale 1);若等于,就执行第一个表达式,若不等于.....
)
(setq inp (getreal(strcat "\n-->请输入五角星的比例因子<"
       (rtos js_scale)
       ">:")))
(if inp
  (setq js_scale inp);将比例因子赋给js_scale
)
)

;比例放大或缩小

(defun sc(x)
  (* x js_scale)
)(princ)



论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 51个

财富等级: 招财进宝

发表于 2013-5-27 10:17:07 | 显示全部楼层
js_scale 定义成全局变量,程序在执行的时候有值,就显示出来啊。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 685个

财富等级: 财运亨通

 楼主| 发表于 2013-5-27 10:21:13 | 显示全部楼层
Lispboy 发表于 2013-5-27 10:17
js_scale 定义成全局变量,程序在执行的时候有值,就显示出来啊。

谢谢你的解答,没看到他哪里定义了JS_SCALE为全局变量啊!!求解!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 51个

财富等级: 招财进宝

发表于 2013-5-27 10:39:29 | 显示全部楼层
本帖最后由 Lispboy 于 2013-5-27 10:40 编辑

函数定义是这样写的

(defun c:KJ_5JX()

说明,这个程序里面的所有变量都是全局变量。程序执行完了,变量值还可以用,你自己可以在程序运行后,在命令行输入: !JS_SCALE  看看是不是你刚用的值,也包括里面的其他的,你都可以试试查下。

只有函数

(defun c:KJ_5JX( / abc def)

这样,abc,def等才是局部变量,外面的同样的变量影响不到它,程序运行时候修改的值也影响不到外面

你试试下面:
  1. (setq abc 5)
  2. (defun tt(/ abc)
  3.    (setq abc "123")
  4.    (princ  "\nabc=")
  5.    (princ abc)
  6.    (princ)
  7. )
  8. (princ  "\nabc=")(princ abc)


应该显示:

abc=123
abc=5

你在把上面的函数变成:

  1. (setq abc 5)
  2. (defun tt()
  3.    (setq abc "123")
  4.    (princ  "\nabc=")
  5.    (princ abc)
  6.    (princ)
  7. )
  8. (princ  "\nabc=")
  9. (princ abc)


应该显示:

abc=123
abc=123
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 685个

财富等级: 财运亨通

 楼主| 发表于 2013-5-27 12:28:43 | 显示全部楼层
Lispboy 发表于 2013-5-27 10:39
函数定义是这样写的

(defun c:KJ_5JX()

追问一下!!!!!!!!!(strcat "\n-->请输入五角星的比例因子<"
       (rtos js_scale)
为什么输入的值要转成字符串呢??
下面还有一句IF是什么意思?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 19个

财富等级: 恭喜发财

发表于 2013-5-27 13:25:44 | 显示全部楼层
ysq101 发表于 2013-5-27 12:28
追问一下!!!!!!!!!(strcat "\n-->请输入五角星的比例因子

这个我会:P ,你看看STRCAT函数是做什么的? 要求的参数是什么? 就知道了哈。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-9-25 14:31 , Processed in 0.443426 second(s), 37 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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