乐筑天下

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

[编程交流] 每个pol的坐标提取

[复制链接]

1

主题

9

帖子

8

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 15:11:37 | 显示全部楼层 |阅读模式
您好,我最近发现了使用lisps的acad的潜力,首先我要感谢所有分享他们知识的人(特别感谢Tharwat和GC gile)!我完全不知道这里的编程是什么样子的,但我非常愿意尝试和学习(allready自己成功地在lisp中更改了一个参数!)
事实是:我有很多闭合的二维多段线(或LWpolyline,其实并不重要,因为我已经学会了如何将多边形转换为LWpoly)。我必须提取它们的面积、图层和坐标,这样可以在生成的文件中识别每个多段线的数据。
我开始研究一种自动命名多段线的方法,运气不太好,所以我决定在每个多段线的超链接字段中手动输入数字。
我还发现了一个lisp,可以一次提取多个多边形的超链接、层和区域,这是一个很好的第一步(作为一个新手,我不确定是否可以在这里发布链接)。
现在剩下的是提取每个多边形的坐标及其超链接。你认为发明一个例程并同时为多段线实现这一点可行吗?
或者,我必须列出并复制粘贴每个多段线的坐标分别。。。对于400条多段线。。。然后在另一个类似的图纸中。。。等
对不起,我的线程太大了,我希望我能正确解释-很抱歉,如果答案已经存在,我尽力找到了,但没有找到(我确实找到了一些LISP来导出坐标,每个多段线没有分隔,也没有超链接。也许有经验的人可以更改这些,以包括额外的数据,但这不是我的情况……)
首先,非常感谢在座的所有有帮助有见识的人,
玛丽亚
回复

使用道具 举报

5

主题

956

帖子

963

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-5 15:17:23 | 显示全部楼层
 
嗨,我真的不确定“命名折线”是什么意思?
 
我更喜欢独特的六角形手柄,
所以你不需要手动放置超链接?
 
检索顶点的一些示例
LW多段线
 
对于多回路重复,while,foreach,mapcar函数
在本例中,使用repeat,然后打印出每个多段线信息。
 
这是vlisp方法,它的“获取属性”方法语法更容易理解
  1. ([color="blue"]vl-load-com[/color]) [color="green"]; initialization [/color]
  2. (defun c:test (/ lst s i [color="red"]en obj[/color])
  3. (and (setq   s        (ssget        [color="purple"]"X"[/color] [color="green"]; selection mode : X = extended database [/color]
  4.                 '((0 . [color="purple"]"LWPOLYLINE"[/color]) [color="green"]; object Name[/color]
  5.                          (-4 . "&=") [color="green"]; bit coded[/color]
  6.                   (70 . 1) [color="green"]; polyline is closed[/color]
  7.                   (90 . 4) [color="green"]; accept only 4 corners[/color]
  8.                   (8 . [color="purple"]"*"[/color]) [color="green"]; Filter Layer name , to be modified example "Layer1"[/color]
  9.                          (410 . "model") [color="green"]; model space[/color]
  10.                   )
  11.                 )
  12.      )
  13.       ([color="blue"]repeat[/color] (setq i (sslength s))  [color="green"]; loop counter selection set[/color]
  14. (setq en  (ssname s (setq i (1- i))) [color="green"]; ename by decremental selection set[/color]
  15.        obj (vlax-ename->vla-object en) [color="green"]; converts entity to vla-object[/color]
  16.        lst (mapcar ''((x) (vlax-get obj x)) [color="green"]; get properties method[/color]
  17.                          '(Handle        [color="green"]; handle unique ID[/color]       
  18.                            Area                [color="green"]; area[/color]
  19.                                   Layer        [color="green"]; layer[/color]
  20.                            Coordinates        [color="green"]; vertex array X Y X Y X Y ...[/color]
  21.                            ))
  22.        )
  23. (terpri) [color="green"]; prints new line[/color]
  24. (princ lst) [color="green"]; output[/color]
  25. )
  26.       )
  27. (textpage) [color="green"]; activate full text page[/color]
  28. (princ)[color="green"] ; suppress exit quietly[/color]
  29. ) ;_ end of defun
回复

使用道具 举报

1

主题

9

帖子

8

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 15:19:15 | 显示全部楼层
Hanhphuc非常感谢您的时间和分享您的知识!我会尽量深入研究你提供的信息,希望你能回来,并给予更多的帮助,如果我不明白一些具体的。。。!
再次感谢你的回答,
玛丽亚
回复

使用道具 举报

5

主题

956

帖子

963

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-5 15:22:48 | 显示全部楼层
不用担心,如果我不在的话,只要你总是积极且愿意学习,其他志愿者就会加入帮助
仅举几个活跃的大师李Mac,塔瓦,比加尔等。。
 
我在上一篇文章中更新了引用链接,这是其他成员提供的几个autolisp示例(用于获取顶点坐标)。
 
 
p/s:添加(vl load com)
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-5 15:24:55 | 显示全部楼层
 
你好
 
我只是想知道,既然可以使用DXF代码更顺利地完成工作,为什么您通常会选择Vlisp函数?
回复

使用道具 举报

5

主题

956

帖子

963

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-5 15:28:41 | 显示全部楼层
 
您好,Tharwat谢谢您的建议,我确实提供了autoliso dxf的链接
OP愿意学习,欢迎您发布dxf代码!
 
也许我认为vlisp语法对新手来说更容易学习?
 
vla比dxf获得层
  1. (cdr(assoc 8 (entget en)))

 
他/她喜欢什么?
我的0.02美元
 
vlisp
  1. (vlax-get object 'coordinates)

 
autolisp dxf
  1. (defun getpoly (en / l enx dxf)
  2. (defun dxf (i en) (cdr (assoc i (entget en))))
  3. (cond        ((= (dxf 0 en) "POLYLINE") [color="green"];3D polyline[/color]
  4. (while (/= "SEQEND" (dxf 0 (setq en (entnext en)))) (setq l (cons (dxf 10 en) l)))
  5. )
  6. ((= (dxf 0 en) "LWPOLYLINE") [color="green"];2D polyline[/color]
  7. (setq enx (entget en))
  8. (while        (setq enx (member (assoc 10 enx) enx))
  9.    (setq l   (cons (cdar enx) l)
  10.          enx (cdr enx)
  11.          )
  12.    )
  13. )
  14. (t (setq l (list (dxf 10 en) ))) [color="green"]; optional return coordinates other than polyline[/color]
  15. )
  16. (reverse l)
  17. )

 
测验
  1. (setq en (car(entsel "\nPick polyline.." )))
  2. (getpoly en )
回复

使用道具 举报

1

主题

9

帖子

8

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 15:32:32 | 显示全部楼层
谢谢Hanhphuc,看起来当你发布vl load com的更新时,我同时在线研究了错误“无函数定义:vlax ename->vla object”,并提出了相同的更新-工作得很好!你的代码也是如此!
太好了。。。这正是我所需要的,并将节省我大量的垃圾工作,无论是现在还是将来!!
 
我会尝试做一些小的改变,也许会回来寻求更多的帮助。。。!
 
ps:真是难以置信,能发出这么多的能量,你让我今天很开心!我希望我能报答你的恩惠,但既然我做不到,我会尽量多帮助一个完全陌生的人,就像你为我做的那样!
回复

使用道具 举报

1

主题

9

帖子

8

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 15:36:13 | 显示全部楼层
嗯,我无意中在网上发现了一些Lisp(在excel中搜索操作大型DWG数据的选项),发现它们非常有用(就像一个新世界),并且有点喜欢它们的思维方式。。。那是一年前的事了。从那以后,我读了一些基本的规则,但还不能自己写一些新的东西(我有很多工作,加上一个2岁的孩子!)不过,我开始尝试对ready代码进行一些修改,我非常喜欢!我不认为我已经看到了dxf代码到目前为止,我会尝试和研究,现在你提到它了。我并没有宣布自己是autocad的硕士,我在大学里学到了一些非常基本的东西(r14,那是很久以前的事了),从那以后我可以说我通过工作变得足够了,但仍然有很多可能性我还没有掌握。
回复

使用道具 举报

5

主题

956

帖子

963

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-5 15:38:40 | 显示全部楼层
不客气,我和你一样喜欢塔瓦,他总是我的朋友。
 
我帮助了70%,但剩下的30%是解决如何填充坐标(由vlisp输出)的任务,因为二维和三维坐标都在单个数组列表中
你需要区分它们的正确格式,否则你会搞砸的
  1. '(X Y X Y X Y X Y)  - >  '((X Y)(X Y)(X Y)(X Y)) [color="green"]; 2D[/color]
  2. '(X Y Z X Y Z X Y Z)  - > '((X Y Z)(X Y Z)(X Y Z)) [color="green"];3D[/color]

 
祝你好运
回复

使用道具 举报

1

主题

9

帖子

8

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 15:42:47 | 显示全部楼层
你甚至更愿意花时间在每一个步骤旁解释一下,它在英语中的含义。现在我有了:0,70,90,8和410的英语意思。你能告诉我在哪里可以找到所有其他数字代表的完整列表吗?还是不是这样?我试图在你的代码中更改/添加一些参数,如果有这样一个列表,那将是非常棒的。。。也许这是一个愚蠢的问题,这个问题存在于autocad的vlsp编辑器或其他地方,但我甚至在网上都找不到,也许我没有找到正确的方法。
再次感谢大家,
玛丽亚
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-14 21:04 , Processed in 2.691969 second(s), 73 queries .

© 2020-2025 乐筑天下

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