乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
楼主: marc578

[编程交流] 将列表写入文件

[复制链接]

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-6 11:06:43 | 显示全部楼层
 
尽量这样做,它更短更清晰。
  1. (setq a (entsel))
  2. (setq b (entget(car a)))
  3. (setq pt1 (cdr(assoc 10 b)))
  4. (setq pt2 (cdr(assoc 11 b)))
  5. (setq f (open "C:\\Documents and Settings\\Marco\\Mis documentos\\AAA.txt" "w"))
  6. ; ************************************************** *****************************
  7. (setq ptx1 (rtos (car pt1) 2 4)
  8.        pty1 (rtos (cadr pt1) 2 4)
  9.        ptz1 (rtos (caddr pt1) 2 4))
  10.        xyz1 (strcat ptx1 ", " pty1 ", " ptz1)
  11.      )
  12. ; ************************************************** *****************************
  13. (write-line xyz1 f)

 
当做
 
塔瓦特
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 11:12:29 | 显示全部楼层
例子:
 
  1. (defun c:test ( / ent p1 p2 file  )
  2. (if (and (setq ent  (car (entsel)))
  3.           (setq p1   (cdr (assoc 10 (entget ent)))
  4.                 p2   (cdr (assoc 11 (entget ent))))
  5.           (setq file (open "C:\\Documents and Settings\\Marco\\Mis documentos\\AAA.txt" "w")))
  6.    (progn
  7.      (write-line (LM:lst->str (mapcar '(lambda ( x ) (rtos x 2 4)) p1) ",") file)
  8.      (close file)
  9.    )
  10. )
  11. (princ)
  12. )
  13. ;;-------------------=={ List to String }==-------------------;;
  14. ;;                                                            ;;
  15. ;;  Constructs a string from a list of strings separating     ;;
  16. ;;  each element by a specified delimiter                     ;;
  17. ;;------------------------------------------------------------;;
  18. ;;  Author: Lee McDonnell, 2010                               ;;
  19. ;;                                                            ;;
  20. ;;  Copyright © 2010 by Lee McDonnell, All Rights Reserved.   ;;
  21. ;;  Contact: Lee Mac @ TheSwamp.org, CADTutor.net             ;;
  22. ;;------------------------------------------------------------;;
  23. ;;  Arguments:                                                ;;
  24. ;;  lst - a list of strings to process                        ;;
  25. ;;  del - delimiter by which to separate each list element    ;;
  26. ;;------------------------------------------------------------;;
  27. ;;  Returns:  String containing each string in the list       ;;
  28. ;;------------------------------------------------------------;;
  29. (defun LM:lst->str ( lst del )
  30. ;; © Lee Mac 2010
  31. (if (cdr lst)
  32.    (strcat (car lst) del (LM:lst->str (cdr lst) del))
  33.    (car lst)
  34. )
  35. )
回复

使用道具 举报

55

主题

133

帖子

78

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
280
发表于 2022-7-6 11:12:47 | 显示全部楼层
 
 
尊敬的李先生:,
 
再次感谢。
实际上,我的目标是将任何可能包含数字、字符串、列表等的列表类型转换为字符串,反之亦然。我希望你能解决这个问题。如果不解释一下你会遇到什么问题?
 
当做
穆图。
回复

使用道具 举报

0

主题

127

帖子

130

银币

限制会员

铜币
-2
发表于 2022-7-6 11:18:05 | 显示全部楼层
根据你的问题
 
试试这个
 
  1. (vl-load-com)
  2. (defun c:prueba4 ( / a b pt1 pt1-str f)
  3. (setq a       (entsel)
  4.        b       (entget (car a))
  5.        pt1     (cdr (assoc 10 b))
  6.        pt1-str (vl-prin1-to-string pt1)
  7.        f       (open "ppr.txt" "w")
  8. )
  9. (write-line pt1-str f)
  10. (close f)
  11. (princ)
  12. )
回复

使用道具 举报

55

主题

133

帖子

78

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
280
发表于 2022-7-6 11:21:39 | 显示全部楼层
  1.   
  2. ;;;; Developed by R.Muthu Kumar ;;;;;;;;
  3. (defun lst-str (#list / fn file_descr a)
  4. (Setq fn (vl-filename-mktemp))
  5. (setq file_descr (open fn "w"))
  6. (prin1 #list file_descr)
  7. (close file_descr)
  8. (setq file_descr (open fn "r"))
  9. (Setq a (read (read-line file_descr)))
  10. (close file_descr)
  11. (vl-file-delete fn)
  12. a
  13. )
回复

使用道具 举报

55

主题

133

帖子

78

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
280
发表于 2022-7-6 11:23:06 | 显示全部楼层
亲爱的朋友们:,
经过长时间的讨论,我找到了一种方法,可以将任何列表转换为字符串,反之亦然。我希望它将对那些正在寻找相同任务的人有用。
  1. ;;;---------------------By R.Muthu Kumar-------------------------
  2. ;;;---------------------Date:10-08-2010--------------------------
  3. (Setq pt1 (list (list 0 "10" 0) 5 "SP-1" "splice" (list 5 2)))
  4. ;;;To Convert into String
  5. (setq str (vl-prin1-to-string pt1))
  6. ;;;To Convert the String into List again
  7. (Setq #list (read str))

 
当做
R、 穆图·库马尔
回复

使用道具 举报

0

主题

127

帖子

130

银币

限制会员

铜币
-2
发表于 2022-7-6 11:27:47 | 显示全部楼层
 
 
参考岗位#14
回复

使用道具 举报

55

主题

133

帖子

78

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
280
发表于 2022-7-6 11:29:48 | 显示全部楼层
 
尊敬的克里先生:,
 
我也没有看到你在帖子中使用的功能。无论如何,最后我希望我们得到了我一直在寻找的解决方案。
你们能找到其他方法把字符串转换成列表吗?
 
当做
穆图。
回复

使用道具 举报

0

主题

127

帖子

130

银币

限制会员

铜币
-2
发表于 2022-7-6 11:31:57 | 显示全部楼层
如果您记住READ只返回字符串中的第一个表达式,那么READ就可以了。
 
例如
小心这样的事情,因为它完全按照你告诉它的去做。
 
  1. (setq a   (entsel)
  2.      b   (entget (car a))
  3.      pt1 (cdr (assoc 10 b))
  4. )
  5. (setq str ( strcat  (vl-prin1-to-string pt1) (vl-prin1-to-string a)))
  6. (read str)
回复

使用道具 举报

35

主题

2471

帖子

2447

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-6 11:35:13 | 显示全部楼层
 
@Muthu123,请查看此帖子。非常感谢。
 
当做
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-6 17:00 , Processed in 0.771719 second(s), 70 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表