找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 793|回复: 10

[求助] [求助]:如何定制默认值问题

[复制链接]
发表于 2004-11-8 13:54:50 | 显示全部楼层 |阅读模式

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

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

×
在进行autolisp程序编写时,如何进行默认值的定制呢,希望兄台能举一例供兄弟参考
例如:
(defun c:tt()
(setq zg(getreal"请输入字高:"))
(command"text"  pause zg "0" )
)
先输入一回之后,以后就可以使用其上一回的默认值(<3.5>之类的),望兄台指教
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2004-11-9 11:02:46 | 显示全部楼层

返回默认值(不过只能是整数)


  1.   [FONT=courier new]
  2. (defun c:tt (/ a)
  3.   (or global:a (setq global:a 0))
  4.   (setq a (getint (strcat "\n请输入整数值<" (itoa global:a) ">")))
  5.   (if a
  6.     (setq global:a a)
  7.     (setq a global:a)
  8.   )
  9.   (setvar "useri1" a)
  10. )

  11.   [/FONT]

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

使用道具 举报

发表于 2004-11-9 19:56:49 | 显示全部楼层 |阅读模式

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

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

×
[php](defun c:test()
  (setq zg (getreal "\n请输入字高:"))
  (if (= zg nil)  (setq zg (getvar "textsize")))
  (command"text" pause zg "0" )
  (princ)
  )[/php]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2004-11-10 13:12:53 | 显示全部楼层
[php]
;;;通用格式化数值输入,输入值作为下次的默认值
;;;格式:(setq aaa (ureal 1 "" "提示内容" aaa))
(defun c:test ()
  (setq zg (ureal 1 "" "请输入字高" zg))
  (command "text" pause zg "0")
)
(defun ureal (bit kwd msg def / inp)
  (if def
    (setq msg (strcat "\n" msg "<" (rtos def 2) ">: ")
          bit (* 2 (fix (/ bit 2)))
    )
    (setq msg (strcat "\n" msg ": "))
  )
  (initget bit kwd)
  (setq inp (getreal msg))
  (if inp
    inp
    def
  )
)
[/php]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-11-12 10:59:30 | 显示全部楼层
楼上的大哥,不行呀,默认值不能显示在命令行上,而且不能按“回车”直接得到默认值
能不能给个完整的程序来测试一下?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-11-12 14:38:56 | 显示全部楼层
可以这样,将上次输入的值设为一个变量,此变量在程序内不要注销,在使用前加入一个判断
如该变量存在即默认为上次的输入值,如不存在即提示输入新值。如果想在下此打开文件时默认值,可以在图中设置一个属性块,打开图形时检测;或者写到一个外部文本文件中;或者用图形词典。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-11-12 16:27:44 | 显示全部楼层
最初由 yjtdkj 发布
[B]楼上的大哥,不行呀,默认值不能显示在命令行上,而且不能按“回车”直接得到默认值
能不能给个完整的程序来测试一下? [/B]


通用数值输入程序应该没有问题!
再试试:
[php]
;;;通用格式化数值输入,输入值作为下次的默认值
;;;格式:(setq aaa (ureal 1 "" "提示内容" aaa))
(defun c:test (/)
  (setq pt1 (getpoint "\n文本输入点 : "))
  (command "_style" "汉字" "宋体" "" "1" "" "" "")
  (setvar "textstyle" "汉字")
  (setq zg (ureal 1 "" "请输入字高" zg)
        ang(ureal 1 "" "请输入字角" ang)
        )
  (command "text" "j" "mc" pt1 zg ang "晓东空间")
)
(defun ureal (bit kwd msg def / inp)
  (if def
    (setq msg (strcat "\n" msg "<" (rtos def 2) ">: ")
      bit (* 2 (fix (/ bit 2)))
    )
    (setq msg (strcat "\n" msg ": "))
  )
  (initget bit kwd)
  (setq inp (getreal msg))
  (if inp
    inp
    def
  )
)
[/php]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-11-12 17:19:43 | 显示全部楼层
我来试试
[php]
;| (pset sym do str) = 有默认输入值的通用变量设置函数 by 梦断江南.2004.11
参数: sym = 要设置的变量.
       do = 取得变量值的方法(函数,为get* 系列).
       str = 提示.(程序会自动填入默认值)'
说明: 支持回车默认值.
实例: (setq a 3.4 b '(1.0 1.2 0.0))
      (pset 'a getdist "\n新值:")
      (pset 'b getpoint "\n新坐标:")
|;
(defun pset (sym do str / @@@)
  (princ (strcat str "<"))(princ (eval sym))
  (setq @@@  ((eval do)">:"))
  (if @@@ (set sym @@@))
  (eval sym)
)
;|测试:
(setq a 1 b 1.3 c "x" )
(pset 'a getint "\n输入个数" )
(pset 'b getdist "\n数值" )
(pset 'c getstring "\n新字符" )
数值<1.3
6424.95
_$ b
6424.95
_$
输入个数<1
9
_$ a
9
_$
新字符<u
"yyy"
_$c
"yyy"
|;
[/php]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 488个

财富等级: 日进斗金

发表于 2004-11-13 13:33:43 | 显示全部楼层
用完以后不要设成nil就行.

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

使用道具 举报

发表于 2004-12-2 16:02:45 | 显示全部楼层
最初由 梦断江南 发布
[B]我来试试
[php]
;| (pset sym do str) = 有默认输入值的通用变量设置函数 by 梦断江南.2004.11
参数: sym = 要设置的变量.
       do = 取得变量值的方法(函数,为get* 系列).
       str = 提示.(程序会自动填?.. [/B]

我试用了一下,还是不对,把它改了一下才行的:

  1.   [FONT=courier new]
  2. (defun pset (sym do str / @@@)
  3.   (princ (strcat str "<"))
  4.   (princ (eval sym))
  5.   (setq @@@ (eval (do ">:")))
  6.   (if (or (not @@@) (equal @@@ ""))
  7.     (eval sym)
  8.     (set sym @@@)
  9.   )
  10. )

  11.   [/FONT]

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

使用道具 举报

发表于 2004-12-4 14:23:40 | 显示全部楼层
很好。又学到了不同的方法!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-27 17:32 , Processed in 0.259441 second(s), 54 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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