保存到选定多边形的TXT文件
你好我想将选定的多段线(用X和Y分隔)保存到txt文件中。类似这样:
X Y,X Y,X Y(等),X Y
X Y,X Y,X Y(等),X Y
txt文件:
12 45, 14 46, 11 42
91 45, 92 46, 97 42, 92 35
我喜欢使用这样的脚本:
http://assemblysys.com/php-point-in-polygon-algorithm/
所以我必须有选定多段线的点。
所有这样的脚本
http://wklej.org/id/1279265/
保存多段线的组合点。。。 我在想我的帖子为什么会落空。
这是我的第一篇帖子:
你好我想将选定的多段线(用X和Y分隔)保存到txt文件中。
类似这样:
X Y,X Y,X Y(等),X Y
X Y,X Y,X Y(等),X Y
txt文件:
12 45, 14 46, 11 42
11 42, 13 36, 21 22, 18 34
我想用这个脚本来寻找多边形中的点,所以我必须有多段线的分离点。 在BIGAL和pline co ords下搜索,您希望在lisp代码中找到的确切答案是2d和3d版本。我将稍后尝试查找,而不是再次发布代码。使用VLlisp查找“cordinate”这是一个简单的答案。 谢谢,我有。 谢谢,我有。
这是代码:
;; Polyline Point Exported, by Lee McDonnell 26.07.2009
(defun c:zzz (/ doc spc ss file sel pts)
(vl-load-com)
(setq doc (vla-get-ActiveDocument
(vlax-get-Acad-Object))
spc (if (zerop (vla-get-activespace doc))
(if (= (vla-get-mspace doc) :vlax-true)
(vla-get-modelspace doc)
(vla-get-paperspace doc))
(vla-get-modelspace doc)))
(if (and (setq ss (ssget '((0 . "*POLYLINE")(8 . "Warstwa 6"))))
(setq file
(getfiled "Output File"
(if *load *load "") "csv;txt" 9)))
(progn
(setq *load file file (open file "a"))
(vlax-for Obj (setq sel (vla-get-ActiveSelectionSet doc))
(setq pts
(vlax-list->3D-point
(vlax-get Obj 'Coordinates)
(cond ((eq (vla-get-ObjectName Obj) "AcDbPolyline"))) Obj))
(mapcar
(function
(lambda (x)
(write-line
(strcat
(rtos (car x) 2 5) (chr 44)
(rtos (cadr x) 2 5)
; (chr 44) (rtos (caddr x) 2 2)
) file)
; (vla-addPoint spc (vlax-3D-point x))
)) pts)
(write-line "" file)
)
(princ
(strcat "\n<< Points from "
(itoa (vla-get-Count sel)) " Polylines written to file >>"))
(close file)
(vla-delete sel)))
(princ))
(defun vlax-list->3D-point (lst x Obj / oLst)
(while lst
(setq oLst
(cons (list (car lst) (cadr lst)
(if x (vla-get-Elevation Obj) (caddr lst))) oLst)
lst ((if x cddr cdddr) lst)))
oLst)
给我发这样的短信:
14498.85,2477.59
14842.06,2466.01
14507.84,2569.84
14365.55,2717.78
14408.25,2758.83
14407.27,2776.11
14455.94,2778.89
14478.06,2804.62
13600.82,2594.97
13589.92,2635.92
13593.87,2699.13
13571.62,2700.52
13485.42,2678.3
如何更改代码以生成以下内容:
14498.85,2477.59 14842.06,2466.01 14507.84,2569.84
14365.55,2717.78 14408.25,2758.83 14407.27,2776.11 14455.94,2778.89 14478.06,2804.62
13600.82,2594.97 13589.92,2635.92 13593.87,2699.13 13571.62,2700.52 13485.42,2678.3
有“写线”功能。是否有“write”(在txt文件中不输入)之类的功能? 尝试以下简单程序:
(defun c:polyex ( / des idx sel txt )
(if (and (setq sel (ssget '((0 . "LWPOLYLINE"))))
(setq txt (getfiled "Output File" "" "txt" 1))
)
(if (setq des (open txt "w"))
(progn
(repeat (setq idx (sslength sel))
(write-line
(substr
(apply 'strcat
(mapcar
(function
(lambda ( x )
(strcat " "
(rtos (cadrx)) ","
(rtos (caddr x))
)
)
)
(vl-remove-if-not '(lambda ( x ) (= 10 (car x)))
(entget
(ssname sel
(setq idx (1- idx))
)
)
)
)
)
2
)
des
)
)
(close des)
)
(princ (strcat "\n\"" txt "\" could not be opened for writing."))
)
)
(princ)
) 非常感谢。
页:
[1]