乐筑天下

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

[编程交流] 多段线部分的长度

[复制链接]

9

主题

30

帖子

21

银币

初来乍到

Rank: 1

铜币
45
发表于 2022-7-5 23:25:38 | 显示全部楼层 |阅读模式
你好
 
是否有lisp脚本来测量多段线的长度部分?我想选择(仅一条)多段线,现在选择多段线上的点A,以及多段线上的下一个点B。然后我得到这条多段线的一部分长度(不切割这条多段线…)。
 
问候语
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-5 23:39:35 | 显示全部楼层
  1. (Defun c:demo (/ p1 p2 obj)
  2. (and
  3.    (setq p1 (getpoint "\nPick Point A"))
  4.    (setq
  5.      p2 (getpoint p1 "\nPick point B")
  6.    )
  7.    (setq obj (car (nentselp p1)))
  8.    (print (abs        (- (vlax-curve-getdistatpoint
  9.              obj
  10.              (vlax-curve-getclosestpointto obj p1)
  11.            )
  12.            (vlax-curve-getdistatpoint
  13.              obj
  14.              (vlax-curve-getclosestpointto obj p2)
  15.            )
  16.         )
  17.    )
  18.    )
  19. )(princ)
  20. )
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 23:42:57 | 显示全部楼层
我看到pBe打败了我。
 
这是我的密码。
 
  1. (defun c:Test (/ _LW-p 1p o 2p a b d e)
  2. ;;    Tharwat 11. Mar. 2014         ;;
  3. ;;    Measure distance on Polyline by    ;;
  4. ;;    picking two points        ;;
  5. (defun _LW-p (p / e o n)
  6.    (if (setq e (ssget p '((0 . "LWPOLYLINE"))))
  7.      (setq o (cdr (assoc -1 (entget (setq n (ssname e 0))))))
  8.    )
  9.    (list o n)
  10. )
  11. (if (and (setq 1p (getpoint "\n Specify point on Polyline :"))
  12.           (car (setq o (_LW-p 1p)))
  13.           (setq 2p (getpoint "\n Specify point on the same Polyline :"))
  14.           (if (eq (car o) (car (_LW-p 2p)))
  15.             t
  16.             (alert "You should pick two points on the same polyline ")
  17.           )
  18.      )
  19.    (progn (cond ((equal (setq a (vlax-curve-getdistatpoint (setq e (cadr o)) 1p))
  20.                         (setq b (vlax-curve-getdistatpoint e 2p))
  21.                         1e-8
  22.                  )
  23.                  (setq d 0.)
  24.                 )
  25.                 (t
  26.                  (if (> a b)
  27.                    (setq d (- a b))
  28.                    (setq d (- b a))
  29.                  )
  30.                 )
  31.           )
  32.           (alert (strcat "Distance is : < " (rtos d 2) " > ."))
  33.    )
  34. )
  35. (princ)
  36. )
  37. (vl-load-com)
回复

使用道具 举报

107

主题

615

帖子

575

银币

中流砥柱

Rank: 25

铜币
521
发表于 2022-7-5 23:54:14 | 显示全部楼层
嗨,塔尔瓦特。我觉得少了点什么。如果在多段线上有2个特定点,并使用osnap节点选择lisp停止的第一个点。
我认为那样会更有用
 
1) 选择多段线
2) 指定多段线上的第一个点
3) 指定多段线上的第二个点
 
4) (警报(strcat“距离为:.”)
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 00:01:11 | 显示全部楼层
 
我知道,它停止了,因为你在点对象上选择了一个点,而不是在多段线上。
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 00:11:59 | 显示全部楼层
这是我不久前做的一个。。。
 
http://cadtips.cadalyst.com/distance/determine-distance-between-points-entity
回复

使用道具 举报

40

主题

177

帖子

100

银币

后起之秀

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

铜币
248
发表于 2022-7-6 00:20:06 | 显示全部楼层
 
非常好!谢谢分享
回复

使用道具 举报

9

主题

30

帖子

21

银币

初来乍到

Rank: 1

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

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-11 00:29 , Processed in 0.865940 second(s), 68 queries .

© 2020-2025 乐筑天下

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