明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1604|回复: 12

[函数] 判断点在线上

[复制链接]
发表于 2018-8-31 11:32 | 显示全部楼层 |阅读模式
(defun donpl( pt plname / vlist p1 p2 x1 x2 y1 y2 a b xt yt ax n)
  (setq vlist (vl-remove-if'not(mapcar'(lambda(x) (if (= (car x) 10) (cdr x))) (entget plname))))
        (setq n 0)
        (while (and p2 (not jg))
                (setq p1 (nth n vlist)
                        p2 (nth (+ n 1) vlist)
                        x1 (car p1)
                        y1 (cadr p1)
                        x2 (car p2)
                        y2 (cadr p2)
                        a (/ (- y1 y2) (- x1 x2))
                        b (- y1 (/ (* x1 (- y1 y2)) (- x1 x2)))
                        xt (car pt)
                        yt (cadr pt)
                        ax (+ (* xt a) b)
                )
               
                (setq jg (equal ax yt 0.001))
                (setq n (1+ n))
        )
        jg
)

评分

参与人数 1明经币 +1 收起 理由
USER2128 + 1 赞一个!

查看全部评分

发表于 2018-8-31 14:19 | 显示全部楼层
  1. (equal pt (vlax-curve-getClosestPointTo plname pt) 0.000001)
复制代码

评分

参与人数 1明经币 +1 收起 理由
USER2128 + 1 很给力!

查看全部评分

回复 支持 1 反对 0

使用道具 举报

发表于 2022-2-17 11:33 | 显示全部楼层
cghdy 发表于 2022-2-16 16:30
能否区分在线上和在延长线上
  1. (setq on1 (equal pt (vlax-curve-getClosestPointTo plname pt) 0.000001))
  2. (setq on2 (equal pt (vlax-curve-getClosestPointTo plname pt t) 0.000001))
  3. (cond
  4.   ((and on1 on2) (princ "在线上"))
  5.   ((and (not on1) on2) (princ "在延长线上"))
  6.   (t (princ "在线外"))
  7.   )
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2018-8-31 15:29 | 显示全部楼层

新手函数太少,谢谢大神指点,万分感谢
发表于 2018-9-1 09:13 | 显示全部楼层

这个写好  可惜我不会VL
发表于 2018-9-1 14:46 | 显示全部楼层
谢谢楼主分享!!!!!!
发表于 2022-2-16 16:30 | 显示全部楼层

能否区分在线上和在延长线上
发表于 2022-2-17 08:34 | 显示全部楼层
cghdy 发表于 2022-2-16 16:30
能否区分在线上和在延长线上

要判断是否在延长线上,最简单的办法是在P点产生一根直线,用vla-IntersectWith来判断。
发表于 2022-2-18 13:39 | 显示全部楼层
发表于 2022-2-18 13:40 | 显示全部楼层
自贡黄明儒 发表于 2022-2-17 08:34
要判断是否在延长线上,最简单的办法是在P点产生一根直线,用vla-IntersectWith来判断。

lijiao回复的vlax-curve-getClosestPointTo是带了这个功能的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-4-27 05:37 , Processed in 0.179367 second(s), 32 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表