Tharwat 发表于 2022-7-6 11:06:43

 
尽量这样做,它更短更清晰。

(setq a (entsel))
(setq b (entget(car a)))
(setq pt1 (cdr(assoc 10 b)))
(setq pt2 (cdr(assoc 11 b)))
(setq f (open "C:\\Documents and Settings\\Marco\\Mis documentos\\AAA.txt" "w"))
; ************************************************** *****************************
(setq ptx1 (rtos (car pt1) 2 4)
       pty1 (rtos (cadr pt1) 2 4)
       ptz1 (rtos (caddr pt1) 2 4))
       xyz1 (strcat ptx1 ", " pty1 ", " ptz1)
   )
; ************************************************** *****************************
(write-line xyz1 f)

 
当做
 
塔瓦特

Lee Mac 发表于 2022-7-6 11:12:29

例子:
 

(defun c:test ( / ent p1 p2 file)

(if (and (setq ent(car (entsel)))
          (setq p1   (cdr (assoc 10 (entget ent)))
                p2   (cdr (assoc 11 (entget ent))))
          (setq file (open "C:\\Documents and Settings\\Marco\\Mis documentos\\AAA.txt" "w")))
   (progn
   (write-line (LM:lst->str (mapcar '(lambda ( x ) (rtos x 2 4)) p1) ",") file)
   (close file)
   )
)

(princ)
)

;;-------------------=={ List to String }==-------------------;;
;;                                                            ;;
;;Constructs a string from a list of strings separating   ;;
;;each element by a specified delimiter                     ;;
;;------------------------------------------------------------;;
;;Author: Lee McDonnell, 2010                               ;;
;;                                                            ;;
;;Copyright © 2010 by Lee McDonnell, All Rights Reserved.   ;;
;;Contact: Lee Mac @ TheSwamp.org, CADTutor.net             ;;
;;------------------------------------------------------------;;
;;Arguments:                                                ;;
;;lst - a list of strings to process                        ;;
;;del - delimiter by which to separate each list element    ;;
;;------------------------------------------------------------;;
;;Returns:String containing each string in the list       ;;
;;------------------------------------------------------------;;

(defun LM:lst->str ( lst del )
;; © Lee Mac 2010
(if (cdr lst)
   (strcat (car lst) del (LM:lst->str (cdr lst) del))
   (car lst)
)
)

muthu123 发表于 2022-7-6 11:12:47

 
 
尊敬的李先生:,
 
再次感谢。
实际上,我的目标是将任何可能包含数字、字符串、列表等的列表类型转换为字符串,反之亦然。我希望你能解决这个问题。如果不解释一下你会遇到什么问题?
 
当做
穆图。

Kerry Brown 发表于 2022-7-6 11:18:05

根据你的问题
 
试试这个
 


(vl-load-com)
(defun c:prueba4 ( / a b pt1 pt1-str f)
(setq a       (entsel)
       b       (entget (car a))
       pt1   (cdr (assoc 10 b))
       pt1-str (vl-prin1-to-string pt1)
       f       (open "ppr.txt" "w")
)
(write-line pt1-str f)
(close f)
(princ)
)

muthu123 发表于 2022-7-6 11:21:39


;;;; Developed by R.Muthu Kumar ;;;;;;;;
(defun lst-str (#list / fn file_descr a)
(Setq fn (vl-filename-mktemp))
(setq file_descr (open fn "w"))
(prin1 #list file_descr)
(close file_descr)
(setq file_descr (open fn "r"))
(Setq a (read (read-line file_descr)))
(close file_descr)
(vl-file-delete fn)
a
)

muthu123 发表于 2022-7-6 11:23:06

亲爱的朋友们:,
经过长时间的讨论,我找到了一种方法,可以将任何列表转换为字符串,反之亦然。我希望它将对那些正在寻找相同任务的人有用。

;;;---------------------By R.Muthu Kumar-------------------------
;;;---------------------Date:10-08-2010--------------------------
(Setq pt1 (list (list 0 "10" 0) 5 "SP-1" "splice" (list 5 2)))
;;;To Convert into String
(setq str (vl-prin1-to-string pt1))
;;;To Convert the String into List again
(Setq #list (read str))

 
当做
R、 穆图·库马尔

Kerry Brown 发表于 2022-7-6 11:27:47

 
 
参考岗位#14

muthu123 发表于 2022-7-6 11:29:48

 
尊敬的克里先生:,
 
我也没有看到你在帖子中使用的功能。无论如何,最后我希望我们得到了我一直在寻找的解决方案。
你们能找到其他方法把字符串转换成列表吗?
 
当做
穆图。

Kerry Brown 发表于 2022-7-6 11:31:57

如果您记住READ只返回字符串中的第一个表达式,那么READ就可以了。
 
例如
小心这样的事情,因为它完全按照你告诉它的去做。
 


(setq a   (entsel)
   b   (entget (car a))
   pt1 (cdr (assoc 10 b))
)

(setq str ( strcat(vl-prin1-to-string pt1) (vl-prin1-to-string a)))
(read str)

MSasu 发表于 2022-7-6 11:35:13

 
@Muthu123,请查看此帖子。非常感谢。
 
当做
页: 1 [2]
查看完整版本: 将列表写入文件