帮助完成此脚本
大家好,我是AutoLisp的新手我的剧本很简单,我已经完成了99%的工作,
我的DWG文件中有很多文本,我想输出每个文本的XY坐标(向下查找脚本),然后获取文本的百分位并将其放入Z坐标(向下查找用于输出文本名称的脚本)
最后,我想将这些脚本结合起来,以这种格式输出某个文件中的所有数据,文本的X,Y,Centent(我们是Z分量)
///////用于导出文本名称的脚本////////
用于XY导出的脚本////////
(defun c:PO2TXT (/ file points c i) ;POints to TeXT
(setq file (open (getfiled "specify output file" "c:/" "TXT" 1) "w"))
(setq points (ssget) i 0)
(repeat (sslength points)
(if (= "TEXT" (cdr (assoc 0 (entget (ssname points i)))))
(setq c (cdr (assoc 10 (entget (ssname points i))))
i (1+ i)
)
)
(write-line
(strcat (rtos (car c)) " , "
(rtos (cadr c))
) file)
)
(close file)
(Princ)
)
这将写入内容:
(defun C:txtex (/ fl ss ssl index ent)
(setq fl (open "dtext.txt" "w")
ss (ssget "x" (list (cons 0 "TEXT,MTEXT")))
ssl (sslength ss)
index 0
) ;_end setq
(repeat ssl
(setq ent (entget (ssname ss index)))
(write-line (cdr (assoc 1 ent)) fl)
(setq index (1+ index))
) ;_end repeat
(close fl)
(princ)
) ;_end defun
这将写入点:
(defun c:PO2TXT (/ file points c i)
(setq file (open (getfiled "Specify Output File" "c:/" "txt" 1) "w"))
(setq points (ssget "X" (list (cons 0 "TEXT,MTEXT")))
i 0
) ;_end setq
(repeat (sslength points)
(setq c (cdr (assoc 10 (entget (ssname points i))))
i (1+ i)
) ;_end setq
(write-line
(strcat (rtos (car c))
" , "
(rtos (cadr c))
) ;_end strcat
file
) ;_end write-line
) ;_end repeat
(close file)
(princ)
) ;_end defun
也许这能把他们联系起来?
(defun c:PO2TXT (/ file points c vl i)
(setq file (open (getfiled "Specify Output File" "c:/" "txt" 1) "w"))
(setq points (ssget '((0 . "TEXT,MTEXT")))
i 0
) ;_end setq
(repeat (sslength points)
(setq c (cdr (assoc 10 (entget (ssname points i))))
vl (cdr (assoc 1 (entget (ssname points i))))
i (1+ i)
) ;_end setq
(write-line
(strcat (rtos (car c))
" , "
(rtos (cadr c))
"\t"
vl
) ;_end strcat
file
) ;_end write-line
) ;_end repeat
(close file)
(princ)
) ;_end defun
(所有三个都未经测试) 我真的很感谢你的帮助,
我将深入研究代码并测试它们, 没问题smallpixel,很乐意帮忙。 LISPs已更新。-->他们没有包括多行文字-很抱歉
还有两种方法:
有一个LISP,用户可以在其中选择要打印到文件的文本:
(defun c:PO2TXT1 (/ file points c vl i)
(setq file (open (getfiled "Specify Output File" "c:/" "txt" 1) "w"))
(setq points (ssget '((0 . "TEXT,MTEXT")))
i 0
) ;_end setq
(repeat (sslength points)
(setq c (cdr (assoc 10 (entget (ssname points i))))
vl (cdr (assoc 1 (entget (ssname points i))))
i (1+ i)
) ;_end setq
(write-line
(strcat (rtos (car c))
" , "
(rtos (cadr c))
"\t"
vl
) ;_end strcat
file
) ;_end write-line
) ;_end repeat
(close file)
(princ)
) ;_end defun
或者使用LISP自动选择所有文本实体并打印它们:
(defun c:PO2TXT (/ file points c vl i)
(setq file (open (getfiled "Specify Output File" "c:/" "txt" 1) "w"))
(setq points (ssget "X" (list (cons 0 "TEXT,MTEXT")))
i 0
) ;_end setq
(repeat (sslength points)
(setq c (cdr (assoc 10 (entget (ssname points i))))
vl (cdr (assoc 1 (entget (ssname points i))))
i (1+ i)
) ;_end setq
(write-line
(strcat (rtos (car c))
" , "
(rtos (cadr c))
"\t"
vl
) ;_end strcat
file
) ;_end write-line
) ;_end repeat
(close file)
(princ)
) ;_end defun
你能告诉我你的电子邮件地址吗smallpixel@gmail.com
我想谢谢你。。。 恕我冒犯,你就不能在这里谢谢我吗?
页:
[1]
2