尽量这样做,它更短更清晰。
(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)
当做
塔瓦特 例子:
(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)
)
)
尊敬的李先生:,
再次感谢。
实际上,我的目标是将任何可能包含数字、字符串、列表等的列表类型转换为字符串,反之亦然。我希望你能解决这个问题。如果不解释一下你会遇到什么问题?
当做
穆图。 根据你的问题
试试这个
(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)
)
;;;; 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
)
亲爱的朋友们:,
经过长时间的讨论,我找到了一种方法,可以将任何列表转换为字符串,反之亦然。我希望它将对那些正在寻找相同任务的人有用。
;;;---------------------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、 穆图·库马尔
参考岗位#14
尊敬的克里先生:,
我也没有看到你在帖子中使用的功能。无论如何,最后我希望我们得到了我一直在寻找的解决方案。
你们能找到其他方法把字符串转换成列表吗?
当做
穆图。 如果您记住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)
@Muthu123,请查看此帖子。非常感谢。
当做
页:
1
[2]