乐筑天下

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

[编程交流] 多段线上的点

[复制链接]

62

主题

466

帖子

404

银币

后起之秀

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

铜币
310
发表于 2022-7-6 09:44:58 | 显示全部楼层 |阅读模式
我希望能够得到我选择的多段线部分之间的两点。
 
例子:
蓝线是所选多段线的一部分,X是我希望得到的两个点。
104504egigugma1jazim9j.jpg
 
我可以通过比较角度和按距离排序得到这个结果,但肯定有更好的方法。
回复

使用道具 举报

20

主题

257

帖子

237

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
100
发表于 2022-7-6 09:52:39 | 显示全部楼层
您只想选择直线并将其端点作为坐标返回?
回复

使用道具 举报

62

主题

466

帖子

404

银币

后起之秀

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

铜币
310
发表于 2022-7-6 10:00:37 | 显示全部楼层
我想选择一条多段线,让它返回该线段的起点和终点
 
我用这个做什么
https://sites.google.com/site/reidbooe/videos和观察门。avi公司
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 10:03:51 | 显示全部楼层
  1. (defun AT:Segment (objPnt)
  2. ;; Retreive segment number and Start & End points
  3. ;; objPnt - List with object & point
  4. ;; Alan J. Thompson, 11.10.09 / 08.19.10
  5. (if (vl-consp objPnt)
  6.    ((lambda (seg)
  7.       (list seg
  8.             (list (vlax-curve-getPointAtParam (car objPnt) seg)
  9.                   (cond ((vlax-curve-getPointAtParam (car objPnt) (1+ seg)))
  10.                         ((vlax-curve-getPointAtParam (car objPnt) (1- seg)))
  11.                   )
  12.             )
  13.       )
  14.     )
  15.      (fix (vlax-curve-getParamAtPoint
  16.             (car objPnt)
  17.             (vlax-curve-getClosestPointTo (car objPnt) (trans (cadr objPnt) 1 0))
  18.           )
  19.      )
  20.    )
  21. )
  22. )

 
如。
  1. (AT:Segment (entsel))
回复

使用道具 举报

62

主题

466

帖子

404

银币

后起之秀

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

铜币
310
发表于 2022-7-6 10:11:19 | 显示全部楼层
我在开发人员的帮助下查看了曲线测量函数,但不知道如何获得端点。
 
非常感谢。
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-6 10:19:49 | 显示全部楼层
谢谢你的代码片段Alanjt,我为同样的目的编写的代码是waaaaayyyy to long。(DXF代码)
 
  1. (vlax-curve-getClosestPointTo (car objPnt) (trans (cadr objPnt) 1 0));<------  

 
但仍然。。随便。有时间我会努力的,谢谢你的鼓励
 
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 10:24:28 | 显示全部楼层
这可能会引起兴趣:
  1. (defun c:Seg (/ pl ss a_10 pt_lst dst_tst seg_pts)
  2. (if (setq pl (entsel "\nSelect Pline:"))
  3.   (progn
  4.           (setq ss (entget (car pl)))
  5. (while (setq a_10 (assoc 10 ss))
  6.           (setq ss (member a_10 ss))
  7.           (setq
  8.             pt_lst
  9.              (cons (cdr (assoc 10 ss)) pt_lst)
  10.             ss (cdr ss)) ;_ end of setq
  11.           )
  12. (setq dst_tst (mapcar (function (lambda (j) (distance (cadr pl) j))) pt_lst)
  13.    2pt (vl-sort dst_tst '<)
  14.   seg_pts
  15.                  (list
  16.    (nth (vl-position (nth 0 2pt) dst_tst) pt_lst)
  17.    (nth (vl-position (nth 1 2pt) dst_tst) pt_lst))
  18.            )
  19.           )
  20.   )
  21.   )
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-6 10:27:36 | 显示全部楼层
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 10:35:02 | 显示全部楼层
Yeah, I could see where you'd have problems with vertices being close together. I still like it.
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-6 10:44:33 | 显示全部楼层
 
yup, bummer huh
 
I could've made it shorter it i did this way(not that it matters)
 
  1. (setq ss     (entget (car pl))       pt_lst (mapcar                'cdr                (vl-remove-if-not '(lambda (x) (= (car x) 10)) ss)))
 
but still.. anyhoo. i'll worked on it when i get time, thank you for the encouragement Alanjt
 
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-6 23:36 , Processed in 0.416302 second(s), 86 queries .

© 2020-2025 乐筑天下

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