乐筑天下

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

[求助]如何测量两线最远距离?

[复制链接]

6

主题

28

帖子

5

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
52
发表于 2004-10-16 09:01:00 | 显示全部楼层 |阅读模式
[求助]请高手帮忙如何测量在同一平面的两线段最远距离?
其中包括圆弧线,样条曲线,多段线,并显示测量位置线及在命令行提示测量数据.
回复

使用道具 举报

124

主题

837

帖子

9

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1333
发表于 2004-10-16 11:20:00 | 显示全部楼层
你是想做什么用呢? 得到图面范围吗?
回复

使用道具 举报

20

主题

872

帖子

10

银币

中流砥柱

Rank: 25

铜币
952
发表于 2004-10-16 22:18:00 | 显示全部楼层
圆弧线,样条曲线,多段线
你说的线段是????
或你要的特征点是??
回复

使用道具 举报

6

主题

28

帖子

5

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
52
发表于 2004-10-17 03:58:00 | 显示全部楼层
谢谢回复
测量在同一平面的两线段最远距离的目的是得到图面范围,便于排料.
圆弧线,样条曲线,直线或多段线组成的图形
回复

使用道具 举报

124

主题

837

帖子

9

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1333
发表于 2004-10-17 09:02:00 | 显示全部楼层
获取屏幕角点坐标程序,是否对你有用:
请点击此处下载

请先注册会员后在进行下载

已注册会员,请先登录后下载

文件名称:xtes2c5qglh.rar 
下载次数:0  文件大小:1.52 KB  售价:2银币 [记录]
下载权限: 不限 以上或 Vip会员   [开通Vip]   [签到领银币]  [免费赚银币]



以前在本站上收集的lisp程序,可以参考一下:
dispbbs.asp?boardid=16&star=1&replyid=88899&id=12315&skin=0&page=1
回复

使用道具 举报

6

主题

28

帖子

5

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
52
发表于 2004-10-17 10:44:00 | 显示全部楼层
谢谢热心的5楼,我下载了你全部的,还是不行,我的意图是当在一个平面内,一条是直线,另一条是弧线,要知道二线最远的距离才行.
回复

使用道具 举报

124

主题

837

帖子

9

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1333
发表于 2004-10-17 11:46:00 | 显示全部楼层
那要处理具体实体了,通过坐标,或者实体的范围BoundingBox,
如果有图形贴上来, 标明目的意图!
回复

使用道具 举报

6

主题

28

帖子

5

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
52
发表于 2004-10-17 14:47:00 | 显示全部楼层
不好意思!我不会贴图,比如一个四边图形,底边是直边顶边是弧线,二边是直线,但不相等,请问底边到弧边最远点的距离,目的是我知道最远点的距离也就可以知道用多宽的钢板下料了,如果我用在网上下载的的方法也可以检查出最远点,但麻烦,我想能不能直接测量出最远点.下面是我网上下载的,相当好用.
;_求共面曲线间最近距离及最近点的LISP程序__BY__WKAI__晓东CAD论坛______________
;_2004.01.05.16.02___________________________________________________________
;____________________________________________________________________________
;____________________________________________________________________________
(defun c:ln (/ ent1 ent2 n1 n2 dist)
         (princ "\n请选择共面的线段、圆、圆弧,或者复义线,第一段:")
         (setq vlobject1 (vlax-ename->vla-object (setq ent1 (car (entsel)))))
         (princ "\n请选择共面的线段、圆、圆弧,或者复义线,第二段:")
         (setq vlobject2 (vlax-ename->vla-object (setq ent2 (car (entsel)))))
         (setq int (vlax-variant-value (vla-intersectwith vlobject1 vlobject2 acextendnone)))
         (if (> (vlax-safearray-get-u-bound int 1) 0)
                         (princ "\n最小距离为:0")
                         (progn
                                         (setq s1 (is_pl ent1 vlobject1))
                                         (setq s2 (is_pl ent2 vlobject2))
                                         (setq n1 0
                                 n2 0
                                         )
                                         (repeat (sslength s1)
        (setq ent1 (ssname s1 n1)
                                                 n1                 (1+ n1)
                                                 n2                 0
        )
        (repeat        (sslength s2)
                 (setq        ent2 (ssname s2 n2)
                n2                 (1+ n2)
                 )
                 (setq dist (append dist (list (distance_between_ents ent1 ent2))))
        )
                                         )
                                         (setq dist (car (vl-sort dist (function (lambda (e1 e2) ( (sslength s) 1)
                         (command "erase" s "")
         )
)
;____________________________________________________________________________
;____________________________________________________________________________
;____________________________________________________________________________
(defun distance_between_arc_and        (a1 a2 / dd en1 en2 di1 di2)
         (if (= "CIRCLE" (cdr (assoc 0 (entget (vlax-vla-object->ename a1)))))
                         (progn
                                         (setq cen1 (vlax-safearray->list (vlax-variant-value (vla-get-center a1))))
                                         (setq di3 (vlax-curve-getClosestPointTo a2 cen1))
                                         (setq en3 (polar cen1 (angle cen1 di3) (vla-get-radius a1)))
                                         (setq dd (append dd (list (list (distance di3 en3) en3 di3))))
                         )
                         (progn
                                         (setq en1 (vlax-safearray->list (vlax-variant-value (vla-get-startpoint a1))))
                                         (setq en2 (vlax-safearray->list (vlax-variant-value (vla-get-endpoint a1))))
                                         (setq cen1 (vlax-safearray->list (vlax-variant-value (vla-get-center a1))))
                                         (setq di1 (vlax-curve-getClosestPointTo a2 en1))
                                         (setq di2 (vlax-curve-getClosestPointTo a2 en2))
                                         (setq di3 (vlax-curve-getClosestPointTo a2 cen1))
                                         (setq en3 (polar cen1 (angle cen1 di3) (vla-get-radius a1)))
                                         (setq dd (append dd (list (list (distance di1 en1) en1 di1))))
                                         (setq dd (append dd (list (list (distance di2 en2) en2 di2))))
                                         (if (vlax-curve-getParamAtPoint a1 en3)
        (setq dd (append dd (list (list (distance di3 en3) en3 di3))))
                                         )
                         )
         )
         (car (vl-sort dd (function (lambda (e1 e2) (list (vlax-variant-value (vla-get-startpoint a1))))
         (setq en2 (vlax-safearray->list (vlax-variant-value (vla-get-endpoint a1))))
         (setq di1 (vlax-curve-getClosestPointTo a2 en1))
         (setq di2 (vlax-curve-getClosestPointTo a2 en2))
         (setq dd (append dd (list (list (distance di1 en1) en1 di1))))
         (setq dd (append dd (list (list (distance di2 en2) en2 di2))))
         (car (vl-sort dd (function (lambda (e1 e2) (vla-object e1))
         (setq vlo2 (vlax-ename->vla-object e2))
         (setq int (vlax-variant-value (vla-intersectwith vlo1 vlo2 acextendnone)))
         (if (> (vlax-safearray-get-u-bound int 1) 0)
                         (princ "\n距离为0")
                         (progn
                                         (if (or (= "ARC" (cdr (assoc 0 (entget e1))))
                                                 (= "CIRCLE" (cdr (assoc 0 (entget e1))))
                 )
        (setq dd_l (append dd_l (list (distance_between_arc_and vlo1 vlo2))))
        (setq dd_l (append dd_l (list (distance_between_line_and vlo1 vlo2))))
                                         )
                                         (if (or (= "ARC" (cdr (assoc 0 (entget e2))))
                                                 (= "CIRCLE" (cdr (assoc 0 (entget e2))))
                 )
        (setq dd_l (append dd_l (list (distance_between_arc_and vlo2 vlo1))))
        (setq dd_l (append dd_l (list (distance_between_line_and vlo2 vlo1))))
                                         )
                                         (setq dd_l (car (vl-sort dd_l (function (lambda (e1 e2) (< (car e1) (car e2)))))))
                                         dd_l
                         )
         )
)
;____________________________________________________________________________
;____________________________________________________________________________
;____________________________________________________________________________
(princ "\n求共面曲线间最近距离及最近点的LISP程序__BY__WKAI__晓东CAD论坛")
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-8-20 15:55 , Processed in 2.045336 second(s), 74 queries .

© 2020-2025 乐筑天下

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