找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 627|回复: 12

[讨论]:讨论一下用户交互输入的问题

[复制链接]
发表于 2004-6-9 11:03:42 | 显示全部楼层 |阅读模式

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

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

×
各位大虾,不知道LISP里有没有这样一个函数,
例如我输入这样一串字:500X200X8X12
函数能自动根据乘号两边的变量画出图形,
请问想获得这样的效果怎么才能办到
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2004-6-9 13:04:58 | 显示全部楼层
你的想法没有针对性,建议你先看看有关lisp编程方面的书
http://www.xdcad.net/forum/showt ... ighlight=lisp%CA%E9
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-6-9 13:35:48 | 显示全部楼层
2楼说得对。
lisp没有直接的函数。
1楼说的其实就是将一个字串个分成几个子串,再转成数字,再画图的问题。
不难,但讲起来麻烦,1楼的:
先看看书吧。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1915个

财富等级: 堆金积玉

发表于 2004-6-9 14:47:16 | 显示全部楼层
可以自编一个字符串处理的函数,可以参考我下面的程序,我的程序是以逗号作为分隔符,你只要改成X就行了
;;将一行字符串转为表,逗号分隔
(defun str_to_list (str / i one l strl)
  (setq one "")
  (setq strl (strlen str))
  (setq i 1)
  (while (<= i strl)
        (if        (/= "," (substr str i 1))
          (setq one (strcat one (substr str i 1)))
          (progn
                (if        (= "." (substr one 1 1))
                  (setq one (strcat "0" one))
                )
                (setq l (append l (list (read one))))
                (setq one "")
          )
        )
        (setq i (1+ i))
  )
  (if (= "." (substr one 1 1))
        (setq one (strcat "0" one))
  )
  (setq l (append l (list (read one))))
  l
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-6-9 19:54:10 | 显示全部楼层
谢谢4楼主的帮忙,但小弟只是个初学者,能否一一解释一下你的函数?跪谢!!!
(if (= "." (substr one 1 1))
(setq one (strcat "0" one))
)
上面这句似乎不要也行
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-6-10 04:52:48 | 显示全部楼层
4,5楼: 直接使用acet内部函数:
(acet-str-to-list "x" "500x200x8x12")
return:   ("500" "200" "8" "12")
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2004-6-10 09:11:28 | 显示全部楼层
最初由 yjtdkj 发布
[B]acet-str-to-list 好像不能在LISP中用应用呀 [/B]

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

使用道具 举报

 楼主| 发表于 2004-6-10 17:01:45 | 显示全部楼层
最初由 lsjjm 发布
[B]
安装了ET工具就可以应用. [/B]

谢谢指点!!!
但是我应用在我的函数中不知道那里出错了????
(defun
      c:dcl (/ pt1 pt2 pt3 pt4 pt5 pt6 pt7 pt8 pt9 pt10        pt11 h b1 tw
             B2        DCL T2 X t1 oldosm)
  (setq        dcl
         (getstring
           "请输入高度X上翼缘宽度X下翼缘宽度X腹板厚X上翼缘厚X下翼缘厚:"
         )
  )
  (setq x (acet-str-to-list "x" dcl))
  (setq h (atof (nth 1 x)))
  (setq b1 (atof (nth 2 x)))
  (setq b2 (atof (nth 3 x)))
  (setq tw (atof (nth 4 x)))
  (setq t1 (atof (nth 5 x)))
  (setq t2 (atof (nth 6 x)))
  (setq pt1 (getpoint "插入点:"))
  (setq pt2 (polar pt1 (/ pi 2.0) (- (/ h 2) t1)))
  (setq pt3 (polar pt2 pi (/ tw 2.0)))
  (setq pt4 (polar pt1 (* pi 1.5) (- (/ h 2) t2)))
  (setq pt5 (polar pt4 0.0 (/ tw 2.0)))
  (setq pt6 (polar pt1 (/ pi 2.0) (/ h 2)))
  (setq pt7 (polar pt6 pi (/ b1 2)))
  (setq pt8 (polar pt2 0.0 (/ b1 2)))
  (setq pt9 (polar pt1 (* pi 1.5) (/ h 2)))
  (setq pt10 (polar pt9 pi (/ b2 2)))
  (setq pt11 (polar pt4 0.0 (/ b2 2)))
  (setq oldosm (getvar "osmode"))
  (setvar "osmode" 0)
  (command "rectang" pt3 pt5)
  (command "rectang" pt7 pt8)
  (command "rectang" pt10 pt11)
  (setvar "osmode" oldosm)
  (PRINC)
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-6-11 04:55:24 | 显示全部楼层
nth 为0基函数.
表x 的第一个元素是(nth 0 x), 不是(nth 1 x).......
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-6-11 09:58:39 | 显示全部楼层
[php]
(defun c:test ()
  (setq str "500x200x8x12");(setq str "500X200X8X12")
  (eval (read (strcat "(* " (vl-list->string (mapcar '(lambda(x)(if (member x '(88 120)) 32 x))(vl-string->list str))) ")")))
)
;|
命令: test
9600000
|;


(eval (read (strcat "(* " (vl-list->string (subst 32 88 (vl-string->list "500X200X8X12"))) ")")))
-> 9600000
[/php]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-6-11 19:45:44 | 显示全部楼层
最初由 lsjjm 发布
[B]nth 为0基函数.
表x 的第一个元素是(nth 0 x), 不是(nth 1 x)....... [/B]

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

使用道具 举报

发表于 2004-6-11 22:13:08 | 显示全部楼层
去明经通道看看内部函数,看看字串->表和表->字串的函数怎么写,
或者拿来了怎么用.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-27 05:31 , Processed in 0.222890 second(s), 56 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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