乐筑天下

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

[编程交流] 如何读取垂直于f的多段线

[复制链接]

5

主题

28

帖子

23

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-6 15:45:55 | 显示全部楼层
o那是快速回放,thx提前,所以我还有一个愿望,如果可以是一行中的每个顶点。
 
如果我有多边形的名称:vertex\u name和x,y,坐标
 
顶点名称x y
顶点名称x y
顶点名称x y
顶点名称x y
 
我希望你能理解,再次提前谢谢
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 15:48:09 | 显示全部楼层
这是多坐标问题的快速修复:
 
  1. (defun c:plco (/ File oFile pLin pStr pEnt nlist pLen wLine wfLine vPt wvLine)
  2. (if (setq File (getfiled "Create a Text File" "C:\" "txt" 9))
  3.    (progn
  4.      (setq oFile (open file "W"))
  5.      (while (setq pLin (ssget "_:S" (list (cons 0 "LWPOLYLINE,POLYLINE") (cons 410 (getvar "CTAB")))))
  6.    (sssetfirst nil pLin)
  7.    (if (/= (setq pStr (getstring t "\nSpecify Name for Selected Polyline >> ")) "")
  8.      (progn
  9.        (setq pEnt (ssname pLin 0))
  10.        (cond ((= "LWPOLYLINE" (cdr (assoc 0 (entget pEnt))))
  11.           (foreach x (entget pEnt)
  12.             (if (eq 10 (car x))
  13.               (setq nlist (cons (cdr x) nlist))
  14.             ) ;_  end if
  15.           ) ;_  end foreach
  16.           (setq nlist    (reverse nlist)
  17.             pLen    (length nlist)
  18.             wfLine    ""
  19.           ) ;_  end setq
  20.           (while (not (minusp (setq pLen (1- pLen))))
  21.             (setq wLine (strcat (rtos (car (nth pLen nlist)) 2 2)
  22.                     ","
  23.                     (rtos (cadr (nth pLen nlist)) 2 2)
  24.                 ) ;_  end strcat
  25.             ) ;_  end setq
  26.             (setq wfLine (strcat wLine "\t" wfLine))
  27.           ) ;_  end while
  28.           (write-line (strcat pStr "\t" wfLine) oFile)
  29.           (setq nlist nil
  30.             wfLine    nil
  31.           )
  32.          )
  33.          ((= "POLYLINE" (cdr (assoc 0 (entget pEnt))))
  34.           (setq wvLine    ""
  35.             pEnt    (entnext pEnt)
  36.           ) ;_  end setq
  37.           (while (/= (cdr (assoc 0 (entget pEnt))) "SEQEND")
  38.             (setq vPt      (cdr (assoc 10 (entget pEnt)))
  39.               wvLine (strcat (rtos (car vPt) 2 2)
  40.                      ","
  41.                      (rtos (cadr vPt) 2 2)
  42.                      ","
  43.                      (rtos (caddr vPt) 2 2)
  44.                      "\t"
  45.                      wvLine
  46.                  ) ;_  end strcat
  47.               pEnt      (entnext pEnt)
  48.             ) ;_  end setq
  49.           ) ;_  end while
  50.           (write-line (strcat pStr "\t" wvLine) oFile)
  51.           (setq wvLine nil)
  52.          )
  53.        ) ;_  end cond
  54.      ) ;_  end progn
  55.      (princ "\n<!> No Line Name Specified. <!>")
  56.    ) ;_  end if
  57.    (sssetfirst nil)
  58.      ) ;_  end while
  59.      (close oFile)
  60.    ) ;_  end progn
  61.    (princ "\n<!> No File Selected. <!> ")
  62. ) ;_  end if
  63. (princ)
  64. ) ;_  end defun

 
但我可能会考虑重新编写这个LISP,因为我对它不满意。
 
至于另一个请求,您想在所有坐标之后输入多段线的名称吗?
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 15:52:04 | 显示全部楼层
还有一个问题-->
 
你会只处理多段线(3D)还是我也必须包含LWD多段线(2d)?
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 15:55:59 | 显示全部楼层
好的,我觉得这样更好:
 
  1. ;|
  2.    Polyline Coordinate Writer
  3.        by Lee McDonnell
  4.          27.01.2009
  5. |;
  6. (defun c:plco2 (/ File oFile ss eLst Selss pName aEnt vLst i vNme)
  7. (vl-load-com)
  8. (if (setq File (getfiled "Create a Text File" "C:\" "txt" 9))
  9.    (progn
  10.      (setq oFile (open File "W"))
  11.      (if (setq    ss (ssget (list    (cons 0 "POLYLINE")
  12.    (if (getvar "CTAB") (cons 410 (getvar "CTAB"))(cons 67 (- 1 (getvar "TILEMODE")))))))
  13.    (progn
  14.      (setq    eLst  (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss)))
  15.        Selss (ssadd))
  16.      (foreach ent eLst
  17.        (ssadd ent Selss)
  18.        (sssetfirst nil Selss)
  19.        (if    (not (setq pName (getstring t "\nSpecify Name for Selected Polyline >  ")))
  20.          (setq pName (vl-princ-to-string ent)))
  21.        (write-line (strcat "Polyline: " pName "\n\n") oFile)
  22.        (setq aEnt (entnext ent))
  23.        (while (/= "SEQEND" (cdr (assoc 0 (entget aEnt))))
  24.          (setq vLst (cons (cdr (assoc 10 (entget aEnt))) vLst)
  25.            aEnt (entnext aEnt)))
  26.        (setq i    (length vLst) vNme "Vertex No: " vt 1)
  27.        (while (not (minusp (setq i (1- i))))
  28.          (write-line
  29.        (strcat    vNme (rtos vt) "\t"
  30.            (rtos (car (nth i vLst)) 2 2) ","
  31.            (rtos (cadr (nth i vLst)) 2 2) ","
  32.            (rtos (caddr (nth i vLst)) 2 2) "\n") oFile)
  33.          (setq vt (1+ vt)))
  34.        (write-line "\n" oFile)
  35.        (setq vLst nil)
  36.        (ssdel ent Selss)
  37.        (sssetfirst nil nil)))
  38.    (princ "\n<!> No Polyline Selected <!>")))
  39.    (princ "\n<!> No File Selected <!>"))
  40. (close oFile)
  41. (princ "\n...Vertices Written to File...")
  42. (princ))

 
只在一分钟内适用于多段线,但如果您需要展开它,我将编写另一个。
 
一次选择任意多段线
回复

使用道具 举报

5

主题

28

帖子

23

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-6 15:59:27 | 显示全部楼层
这是一个巨大的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
 
下面是示例图形的预览:
 
[/url]

                               
登录/注册后可看大图

 
A、 B、C、D是多边形的名称,x和y是它们的坐标。
 
我希望我不要为此制造太多麻烦。。
 
Thx提前。。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 16:01:10 | 显示全部楼层
我的另一个发布的LISP没有修复多坐标问题吗?
回复

使用道具 举报

5

主题

28

帖子

23

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-6 16:06:10 | 显示全部楼层
我没有试过3d或2d多段线,只试过普通多段线,当我选择多段线时,它说什么都没有选择????
 
Mybe因为不是2或3D多边形??
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 16:07:25 | 显示全部楼层
Is只能是2D或3D多边形-除非你在4D中工作,我非常怀疑…:眨眼:
 
我很惊讶它说没有选择。。。你能贴一张2000年格式的样图给我吗?
回复

使用道具 举报

5

主题

28

帖子

23

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-6 16:12:18 | 显示全部楼层
好的,thx
以下是我绘制多段线的示例:
 
http://www.2shared.com/file/4743843/d6e1e7a4/polylines.html
 
谢谢
 
多段线的名称如下:“SEM-S3-10”。。。。。。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 16:13:16 | 显示全部楼层
好啊
 
请查看随附的文档,并验证“所需”记事本文档是否符合您的要求:
渴望的txt文件
第一个结果。txt文件
PLCO2.zip
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-4 20:21 , Processed in 0.397449 second(s), 70 queries .

© 2020-2025 乐筑天下

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