乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 20|回复: 6

[编程交流] 保存到选定多边形的TXT文件

[复制链接]

9

主题

30

帖子

21

银币

初来乍到

Rank: 1

铜币
45
发表于 2022-7-5 23:31:44 | 显示全部楼层 |阅读模式
你好我想将选定的多段线(用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/
保存多段线的组合点。。。
回复

使用道具 举报

9

主题

30

帖子

21

银币

初来乍到

Rank: 1

铜币
45
发表于 2022-7-5 23:41:51 | 显示全部楼层
我在想我的帖子为什么会落空。
 
这是我的第一篇帖子:
 
你好我想将选定的多段线(用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
 
我想用这个脚本来寻找多边形中的点,所以我必须有多段线的分离点。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-6 00:01:22 | 显示全部楼层
在BIGAL和pline co ords下搜索,您希望在lisp代码中找到的确切答案是2d和3d版本。我将稍后尝试查找,而不是再次发布代码。使用VLlisp查找“cordinate”这是一个简单的答案。
回复

使用道具 举报

9

主题

30

帖子

21

银币

初来乍到

Rank: 1

铜币
45
发表于 2022-7-6 00:04:22 | 显示全部楼层
谢谢,我有。
回复

使用道具 举报

9

主题

30

帖子

21

银币

初来乍到

Rank: 1

铜币
45
发表于 2022-7-6 00:19:59 | 显示全部楼层
谢谢,我有。
 
这是代码:
 
  1. ;; Polyline Point Exported, by Lee McDonnell 26.07.2009
  2. (defun c:zzz (/ doc spc ss file sel pts)
  3. (vl-load-com)
  4. (setq doc (vla-get-ActiveDocument
  5.              (vlax-get-Acad-Object))
  6.        spc (if (zerop (vla-get-activespace doc))
  7.              (if (= (vla-get-mspace doc) :vlax-true)
  8.                (vla-get-modelspace doc)
  9.                (vla-get-paperspace doc))
  10.              (vla-get-modelspace doc)))
  11. (if (and (setq ss (ssget '((0 . "*POLYLINE")(8 . "Warstwa 6"))))
  12.           (setq file
  13.             (getfiled "Output File"
  14.               (if *load *load "") "csv;txt" 9)))
  15.    (progn
  16.      (setq *load file file (open file "a"))
  17.      (vlax-for Obj (setq sel (vla-get-ActiveSelectionSet doc))
  18.        (setq pts
  19.          (vlax-list->3D-point
  20.            (vlax-get Obj 'Coordinates)
  21.              (cond ((eq (vla-get-ObjectName Obj) "AcDbPolyline"))) Obj))                                                                        
  22.        (mapcar
  23.          (function
  24.            (lambda (x)
  25.              (write-line
  26.                (strcat
  27.                  (rtos (car x) 2 5) (chr 44)
  28.                    (rtos (cadr x) 2 5)
  29. ;                      (chr 44) (rtos (caddr x) 2 2)
  30.                                   ) file)                                                   
  31. ;            (vla-addPoint spc (vlax-3D-point x))
  32.                   )) pts)
  33.                   (write-line "" file)                          
  34.                   )
  35.      (princ
  36.        (strcat "\n<< Points from "
  37.          (itoa (vla-get-Count sel)) " Polylines written to file >>"))
  38.      (close file)
  39.      (vla-delete sel)))
  40. (princ))
  41.       
  42. (defun vlax-list->3D-point (lst x Obj / oLst)
  43. (while lst
  44.    (setq oLst
  45.      (cons (list (car lst) (cadr lst)
  46.                  (if x (vla-get-Elevation Obj) (caddr lst))) oLst)
  47.          lst ((if x cddr cdddr) lst)))
  48. oLst)

给我发这样的短信:
  1. 14498.85,2477.59
  2. 14842.06,2466.01
  3. 14507.84,2569.84
  4. 14365.55,2717.78
  5. 14408.25,2758.83
  6. 14407.27,2776.11
  7. 14455.94,2778.89
  8. 14478.06,2804.62
  9. 13600.82,2594.97
  10. 13589.92,2635.92
  11. 13593.87,2699.13
  12. 13571.62,2700.52
  13. 13485.42,2678.3

如何更改代码以生成以下内容:
  1. 14498.85,2477.59 14842.06,2466.01 14507.84,2569.84
  2. 14365.55,2717.78 14408.25,2758.83 14407.27,2776.11 14455.94,2778.89 14478.06,2804.62
  3. 13600.82,2594.97 13589.92,2635.92 13593.87,2699.13 13571.62,2700.52 13485.42,2678.3

有“写线”功能。是否有“write”(在txt文件中不输入)之类的功能?
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 00:25:08 | 显示全部楼层
尝试以下简单程序:
  1. (defun c:polyex ( / des idx sel txt )
  2.    (if (and (setq sel (ssget '((0 . "LWPOLYLINE"))))
  3.             (setq txt (getfiled "Output File" "" "txt" 1))
  4.        )
  5.        (if (setq des (open txt "w"))
  6.            (progn
  7.                (repeat (setq idx (sslength sel))
  8.                    (write-line
  9.                        (substr
  10.                            (apply 'strcat
  11.                                (mapcar
  12.                                    (function
  13.                                        (lambda ( x )
  14.                                            (strcat " "
  15.                                                (rtos (cadr  x)) ","
  16.                                                (rtos (caddr x))
  17.                                            )
  18.                                        )
  19.                                    )
  20.                                    (vl-remove-if-not '(lambda ( x ) (= 10 (car x)))
  21.                                        (entget
  22.                                            (ssname sel
  23.                                                (setq idx (1- idx))
  24.                                            )
  25.                                        )
  26.                                    )
  27.                                )
  28.                            )
  29.                            2
  30.                        )
  31.                        des
  32.                    )
  33.                )
  34.                (close des)
  35.            )
  36.            (princ (strcat "\n"" txt "" could not be opened for writing."))
  37.        )
  38.    )
  39.    (princ)
  40. )
回复

使用道具 举报

9

主题

30

帖子

21

银币

初来乍到

Rank: 1

铜币
45
发表于 2022-7-6 00:32:15 | 显示全部楼层
非常感谢。
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-11 01:35 , Processed in 0.824287 second(s), 66 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表