如果我有多边形的名称:vertex\u name和x,y,坐标
顶点名称x y
顶点名称x y
顶点名称x y
顶点名称x y
我希望你能理解,再次提前谢谢 这是多坐标问题的快速修复:
(defun c:plco (/ File oFile pLin pStr pEnt nlist pLen wLine wfLine vPt wvLine)
(if (setq File (getfiled "Create a Text File" "C:\\" "txt" 9))
(progn
(setq oFile (open file "W"))
(while (setq pLin (ssget "_:S" (list (cons 0 "LWPOLYLINE,POLYLINE") (cons 410 (getvar "CTAB")))))
(sssetfirst nil pLin)
(if (/= (setq pStr (getstring t "\nSpecify Name for Selected Polyline >> ")) "")
(progn
(setq pEnt (ssname pLin 0))
(cond ((= "LWPOLYLINE" (cdr (assoc 0 (entget pEnt))))
(foreach x (entget pEnt)
(if (eq 10 (car x))
(setq nlist (cons (cdr x) nlist))
) ;_end if
) ;_end foreach
(setq nlist (reverse nlist)
pLen (length nlist)
wfLine ""
) ;_end setq
(while (not (minusp (setq pLen (1- pLen))))
(setq wLine (strcat (rtos (car (nth pLen nlist)) 2 2)
","
(rtos (cadr (nth pLen nlist)) 2 2)
) ;_end strcat
) ;_end setq
(setq wfLine (strcat wLine "\t" wfLine))
) ;_end while
(write-line (strcat pStr "\t" wfLine) oFile)
(setq nlist nil
wfLine nil
)
)
((= "POLYLINE" (cdr (assoc 0 (entget pEnt))))
(setq wvLine ""
pEnt (entnext pEnt)
) ;_end setq
(while (/= (cdr (assoc 0 (entget pEnt))) "SEQEND")
(setq vPt (cdr (assoc 10 (entget pEnt)))
wvLine (strcat (rtos (car vPt) 2 2)
","
(rtos (cadr vPt) 2 2)
","
(rtos (caddr vPt) 2 2)
"\t"
wvLine
) ;_end strcat
pEnt (entnext pEnt)
) ;_end setq
) ;_end while
(write-line (strcat pStr "\t" wvLine) oFile)
(setq wvLine nil)
)
) ;_end cond
) ;_end progn
(princ "\n<!> No Line Name Specified. <!>")
) ;_end if
(sssetfirst nil)
) ;_end while
(close oFile)
) ;_end progn
(princ "\n<!> No File Selected. <!> ")
) ;_end if
(princ)
) ;_end defun
但我可能会考虑重新编写这个LISP,因为我对它不满意。
至于另一个请求,您想在所有坐标之后输入多段线的名称吗? 还有一个问题-->
你会只处理多段线(3D)还是我也必须包含LWD多段线(2d)? 好的,我觉得这样更好:
;|
Polyline Coordinate Writer
by Lee McDonnell
27.01.2009
|;
(defun c:plco2 (/ File oFile ss eLst Selss pName aEnt vLst i vNme)
(vl-load-com)
(if (setq File (getfiled "Create a Text File" "C:\\" "txt" 9))
(progn
(setq oFile (open File "W"))
(if (setq ss (ssget (list (cons 0 "POLYLINE")
(if (getvar "CTAB") (cons 410 (getvar "CTAB"))(cons 67 (- 1 (getvar "TILEMODE")))))))
(progn
(setq eLst(vl-remove-if 'listp (mapcar 'cadr (ssnamex ss)))
Selss (ssadd))
(foreach ent eLst
(ssadd ent Selss)
(sssetfirst nil Selss)
(if (not (setq pName (getstring t "\nSpecify Name for Selected Polyline >")))
(setq pName (vl-princ-to-string ent)))
(write-line (strcat "Polyline: " pName "\n\n") oFile)
(setq aEnt (entnext ent))
(while (/= "SEQEND" (cdr (assoc 0 (entget aEnt))))
(setq vLst (cons (cdr (assoc 10 (entget aEnt))) vLst)
aEnt (entnext aEnt)))
(setq i (length vLst) vNme "Vertex No: " vt 1)
(while (not (minusp (setq i (1- i))))
(write-line
(strcat vNme (rtos vt) "\t"
(rtos (car (nth i vLst)) 2 2) ","
(rtos (cadr (nth i vLst)) 2 2) ","
(rtos (caddr (nth i vLst)) 2 2) "\n") oFile)
(setq vt (1+ vt)))
(write-line "\n" oFile)
(setq vLst nil)
(ssdel ent Selss)
(sssetfirst nil nil)))
(princ "\n<!> No Polyline Selected <!>")))
(princ "\n<!> No File Selected <!>"))
(close oFile)
(princ "\n...Vertices Written to File...")
(princ))
只在一分钟内适用于多段线,但如果您需要展开它,我将编写另一个。
一次选择任意多段线 这是一个巨大的thx。
但这与第一个完全不同。
我将解释:
我有普通多段线,不是2d或3d多边形。所有多段线都是闭合的。每一种聚乙烯都有不同的名称。所以我需要问每个多边形的名称是什么。
基本上就像你写的第一个Lisp程序。它只在第二个thrd的坐标中工作,。。,错误或重复。我现在不知道为什么?
例如,如果我有四个名为A、B、C和D的闭合法线多边形(不是2D或3D)。A有4个顶点,B有4个顶点,C有7个顶点,D有3个顶点,TXT文件应该如下所示:
A x,y
A x,y
A x,y
A x,y
B x,y
B x,y
B x,y
B x,y
C x,y
C x,y
C x,y
C x,y
C x,y
C x,y
C x,y
D x,y
D x,y
D x,y
下面是示例图形的预览:
http://img90.imageshack.us/img90/8498/polylinesso4.th.jpg
A、 B、C、D是多边形的名称,x和y是它们的坐标。
我希望我不要为此制造太多麻烦。。
Thx提前。。 我的另一个发布的LISP没有修复多坐标问题吗? 我没有试过3d或2d多段线,只试过普通多段线,当我选择多段线时,它说什么都没有选择????
Mybe因为不是2或3D多边形?? Is只能是2D或3D多边形-除非你在4D中工作,我非常怀疑…:眨眼:
我很惊讶它说没有选择。。。你能贴一张2000年格式的样图给我吗? 好的,thx
以下是我绘制多段线的示例:
http://www.2shared.com/file/4743843/d6e1e7a4/polylines.html
谢谢
多段线的名称如下:“SEM-S3-10”。。。。。。 好啊
请查看随附的文档,并验证“所需”记事本文档是否符合您的要求:
渴望的txt文件
第一个结果。txt文件
PLCO2.zip
页:
1
[2]