乐筑天下

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

[编程交流] 如何获得起点和终点

[复制链接]

4

主题

10

帖子

6

银币

初来乍到

Rank: 1

铜币
20
发表于 2022-7-6 08:26:13 | 显示全部楼层 |阅读模式
我需要知道如何获得多段线的起点和终点。我是这方面的新手,刚刚学会了如何绘制直线的起点和终点,当我去绘制多段线时,我完全迷路了。
 
另一个问题:我使用一个comand,它取一条线,并将其转化为一条穿孔线,每个线段都是一条单独的多段线。它按顺序创建了所有这些。紧接着这个命令,是否有一种方法可以调用为提取其数据而创建的第一条多边形线,而无需手动选择它?
回复

使用道具 举报

5

主题

1074

帖子

1088

银币

初来乍到

Rank: 1

铜币
9
发表于 2022-7-6 09:22:25 | 显示全部楼层
我怀疑您在Autocad 2000上是这样做的,但在2012年,在命令行类型列表>输入,然后选择多段线或直线或其他任何内容,然后向下查看列表底部的坐标,如附件所示。
 
 
 
 
 
 
 
 
哎呀,我无意中误入了池的最深处,刚刚注意到您正在寻找编码帮助。不要介意。
092613nux7uwowgu5nooww.jpg
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 09:26:29 | 显示全部楼层
 
假设您引用的是LWMOLYLINE图元,而不是三维多段线或二维多段线,则有三种方法可以执行此操作:
1) 使用LWPolyline图元的DXF组码:
 
LWPolyline的顶点存储在多个DXF Group 10对中,我们可以使用简单的foreach循环获得它们,然后使用列表两端的条目(注意,列表将通过使用cons的构造反转):
 
  1. (foreach pair (entget <LWPolyline Entity>)
  2.    (if (= 10 (car pair))
  3.        (setq lst (cons (cdr pair) lst))
  4.    )
  5. )
  6. (setq p1 (last lst))
  7. (setq p2 (car  lst))

 
或者,您可以直接从DXF数据的开始和结束处获取第一对和最后一对:
 
  1. (setq el (entget <LWPolyline Entity>)
  2.      p1 (cdr (assoc 10 el))
  3.      p2 (cdr (assoc 10 (reverse el)))
  4. )

 
2) 使用LWPolyline VLA对象的坐标特性:
 
使用Visual LISP时,请记住调用:
 
  1. (vl-load-com)

 
在会话期间加载Visual LISP函数一次。
 
使用vlax ename->VLA对象将LWPolyline图元转换为VLA对象后,可以检索坐标特性,并再次使用列表的开始和结束:
 
  1. (setq obj (vlax-ename->vla-object <LWPolyline Entity>)
  2.      lst (vlax-get obj 'coordinates)
  3.       p1 (list (car lst) (cadr lst))
  4.      lst (reverse lst)
  5.       p2 (list (cadr lst) (car lst))
  6. )

 
注意,我使用了未记录的vlax get函数来避免从变体到SafeArray再到列表的转换。
 
3) 使用vlax曲线*函数:
 
这可能是最简单的方法,因为vlax curve*函数使用起来很直观,可以处理所有曲线对象(直线、圆弧、圆、椭圆、长多段线、多段线、样条曲线等)
 
同样,您需要调用(vl load com)来加载Visual LISP函数,然后:
 
  1. (setq p1 (vlax-curve-getstartpoint <LWPolyline Entity>)
  2.      p2 (vlax-curve-getendpoint <LWPolyline Entity>)
  3. )

 
 
如果要使用命令调用创建LWLopyline,请在创建LWLopyline之前,使用entlast将最后一个图元存储在数据库中,然后在创建LWLopyline之后,可以使用entnext函数逐步遍历数据库中位于“entlast”图元之后的每个图元。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-7 09:02 , Processed in 0.708663 second(s), 60 queries .

© 2020-2025 乐筑天下

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