明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
12
返回列表 发新帖
楼主: wkaii

[讨论]如何把表转换为字符串?

  [复制链接]
发表于 2004-1-21 16:44:00 | 显示全部楼层
那在选择集中如果如下怎么办啊
(ssget “X”'((8. “BEAM") (0. "LINE"))) 我想把其中的图层设置为变量(setq lay "BEAM")
然后(ssget “X”'((list 8 . lay ) (0. "LINE")))调用为什么不行啊,请斑竹明示。
发表于 2004-1-21 21:27:00 | 显示全部楼层
ssget “X”(list(cons 8 lay ) (0 . "LINE")))
 楼主| 发表于 2004-1-23 22:45:00 | 显示全部楼层
才写的简单表转换为字符串的lisp代码:
(defun c:tt(/ a  lst_str)
  (setq a '((1 22 3  2) (3 4 5 "111" "ss")))
  (setq lst_str "")
  (lst->str a)
  (princ lst_str)
  (getpoint)
  )
(defun lst->str        (lst / n )
  (setq lst_str (strcat lst_str "("))
  (foreach n lst
    (if        (listp n)
      (lst->str n)
      (progn
        (cond
          ((= 'STR (type n)) (setq lst_str (strcat lst_str " \"" n "\"")))
          ((= 'INT (type n)) (setq lst_str (strcat lst_str " "(itoa n) )))
          ((= 'REAl (type n)) (setq lst_str (strcat lst_str " "(rtos n 2 2) )))
        )
      )
    )
  )
  (setq lst_str (strcat lst_str ")"))
)
发表于 2004-1-24 00:07:00 | 显示全部楼层
这么麻烦,测试:
(setq a '((1 2.2 3  2) (1 . "a")(3 4 5 "111" "ss")))
_$ (lst->str a)
; 错误: 参数类型错误: consp "a"
看来要考虑的还有很多啊。

看你们讨论了这么久,我也插两句。
这样不行么?

  1. (setq a '((1 2.2 3  2) (1 . "a")(3 4 5 "111" "ss")))
  2. (setq b (vl-prin1-to-string a))
  3. -> "((1 2.2 3 2) (1 . "a") (3 4 5 "111" "ss"))" ;注意!是用prin1,不是princ,否则丢失表内字符引号!! 这个怎么没人提出?明经的版主应该不算差啊??
  4. (setq c (read b))  
  5. -> ((1 2.2 3 2) (1 . "a") (3 4 5 "111" "ss"))
 楼主| 发表于 2004-1-24 09:25:00 | 显示全部楼层
to 无痕
拜托,请用autolisp代码~
上面写的很清楚是将"简单表"转换为字符串的代码,并不是功能完善的标准函数,是以足够我用为标准写出来的~
你说的方法前面已经说过了
prin1和princ的区别,明经的版主自然会知道~
发表于 2004-1-24 12:15:00 | 显示全部楼层
sorry,没看清楚.
我说呢....
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-27 12:39 , Processed in 0.165285 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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