找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 665|回复: 12

[LISP程序]:在线请教..一个连新手都不是的人....

[复制链接]
发表于 2006-6-2 20:51:10 | 显示全部楼层 |阅读模式

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

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

×
(defun c:ReadData(/ Data_list file str)
   (setq file (getfiled "选择文件..." "c:/program files/AutoCAD 2004/support/" "txt" 8))
   (setq f (open file "r"))
   (setq Data_list nil)
   (while (setq str (read-line f))
     (if (/= (vl-string-trim "" str) "")
       (setq Data_list (append Data_list (list str)))
     )
   )
   ;(mapcar '(lambda(e) (read (strcat "(" e ")"))) Data_list)
)
我想问一下,如果返回的列表是(50 50 10)我该怎么把这三个数值分别放到x y z这三个参数里面去?

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

已领礼包: 7235个

财富等级: 富甲天下

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

使用道具 举报

已领礼包: 1915个

财富等级: 堆金积玉

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

使用道具 举报

 楼主| 发表于 2006-6-2 21:36:02 | 显示全部楼层
3楼楼主说:   9pt 10pt 11pt 12pt 13pt 15pt  

(setq x (car '(50 50 10)))
(setq y(cadr '(50 50 10)))
(setq y(caddr '(50 50 10)))  
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
(50 50 10)只是我举的个例子,那个地方应该用哪个参数代替? 我应该怎么把这三句话放到程序里面去?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1915个

财富等级: 堆金积玉

发表于 2006-6-2 21:54:04 | 显示全部楼层
(defun c:ReadData(/ Data_list file str)
(setq file (getfiled "选择文件..." "c:/program files/AutoCAD 2004/support/" "txt" 8))
(setq f (open file "r"))
(setq Data_list nil)
(while (setq str (read-line f))
(if (/= (vl-string-trim "" str) "")
(setq Data_list (append Data_list (list str)))
)
)
(setq x (car Data_list))
(setq y(cadr Data_list))
(setq y(caddr Data_list))
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-6-3 00:00:27 | 显示全部楼层
(defun c:getData(/ Data_list file str)
        (setq file (getfiled "选择文件..." "c:/program files/AutoCAD 2004/support/" "txt" 8))
        (setq f (open file "r"))
        (setq Data_list nil)
        (while (setq str (read-line f))
        (if (/= (vl-string-trim "" str) "")
        (setq Data_list (append Data_list (list str)))
          )
          (setq x (car Data_list))
                (setq y (cadr Data_list))
                (setq z (caddr Data_list))
                  (setq x (atof x))
                (setq y (atof y))
                (setq z (atof z))
                (setq pnt (list x y))
                (command "circle" pnt z)
          )
       
)
斑竹为什么我这样写会报stringp nil 参数错误?  我看了返回值好像是data_list返回的不是(50 50 10)怎么变成了"50\t50\t10"了 这是怎么回事啊
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6个

财富等级: 恭喜发财

发表于 2006-6-3 07:16:57 | 显示全部楼层
(/= (vl-string-trim "" str) "") 这个是什么东东啊?不明白
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-6-3 09:38:07 | 显示全部楼层
(defun c:ReadData(/ Data_list file str)


  (setq file (getfiled "选择文件..." "c:/program files/AutoCAD 2004/support/" "txt" 8))
   (setq f (open file "r"))
   (setq Data_list nil)
   (while (setq str (read-line f))
     (if (/= (vl-string-trim "" str) "")
       (setq Data_list (append Data_list (list str)))
     )
   
   )
   (mapcar '(lambda(e) (read (strcat "(" e ")"))) Data_list)
)

如果这样写则能够正常返回我在文本文件里输入的(80 80 10)
但是加上
(setq x (car Data_list))
(setq y (cadr Data_list))
(setq z (caddr Data_list))
(setq x (atof x))
(setq y (atof y))
(setq z (atof z))
(setq pnt (list x y))
(command "circle" pnt z)
这段以后就会报stringp nil 参数类型错误,请高手指导一下是怎么回事
我要做的事情就是从文本中导入圆心坐标 x y 和 半径 z,然后画圆
文本文件是逐行读取,一行一组数据
请高手帮忙阿,或者留个QQ交流一下
我是第一次弄cad,连函数都没搞清楚
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6个

财富等级: 恭喜发财

发表于 2006-6-3 12:11:28 | 显示全部楼层
后面的改成这样.
[php]
  (foreach nthlst Data_list
    (setq x (car nthlst))
    (setq y (cadr nthlst))
    (setq r (caddr nthlst))
    (command "circle" (list x y 0) r)
  )
[/php]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-6-3 12:20:45 | 显示全部楼层
用了上面那段代码
错误: 参数类型错误: consp "50 50 10"
9楼的能帮我再看看么
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6个

财富等级: 恭喜发财

发表于 2006-6-3 12:56:52 | 显示全部楼层
(mapcar '(lambda(e) (read (strcat "(" e ")"))) Data_list)
这个是给谁的值没有说!
改成:
(setq Data_list (mapcar '(lambda(e) (read (strcat "(" e ")"))) Data_list))
[php]
  (setq        Data_list
         (mapcar '(lambda (e) (read (strcat "(" e ")"))) Data_list)
  )
  (foreach nthlst Data_list
    (setq x (car nthlst))
    (setq y (cadr nthlst))
    (setq r (caddr nthlst))
    (command "circle" (list x y 0) r)
  )
[/php]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-6-3 13:54:59 | 显示全部楼层
(setq    Data_list
     (mapcar '(lambda (e) (read (strcat "(" e ")"))) Data_list)
  )
  (foreach nthlst Data_list
    (setq x (car nthlst))
    (setq y (cadr nthlst))
    (setq r (caddr nthlst))
    (command "circle" (list x y 0) r)
  )


简化为
(mapcar '(lambda(e) (setq e (read(strcat "("e")"))
            (command ".circle" (list (car e) (cadr e)) (last e)))
data_list)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-6-5 08:44:40 | 显示全部楼层
谢谢了各位,东西出来了,太感谢了,比那个什么明经那得人强多了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-18 21:44 , Processed in 0.448535 second(s), 53 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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