找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 527|回复: 5

[研讨] [功能] 判断点在曲线同侧

[复制链接]

已领礼包: 604个

财富等级: 财运亨通

发表于 2016-10-26 11:41:42 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
使用ET工具中的extrim,它能判断剪切同侧的线
;;[功能] 在曲线上最近点的前后取点
;;p1 起点或者曲线最近点后的一点
;;p2 用户给定点
;;p3 终点或者曲线最近点前的一点
;;曲线e上离p1最近的点
(defun _curve2p (e p2 / P P1 P3 PPARAM)
  (setq p (vlax-curve-getClosestPointTo e p2));给定点p2离曲线上最近的点p
  (setq Pparam (vlax-curve-getparamatpoint e p))
  (if (>= Pparam 0.00001)     
    (setq p1 (vlax-curve-getpointatparam e (- Pparam 0.00001)))
    (setq p1 p)
  )
  
  (if (>= (- (vlax-curve-getEndParam e) Pparam) 0.00001)    
    (setq p3 (vlax-curve-getpointatparam e (+ Pparam 0.00001)))
    (setq p3 p)
  )
  (list p1 p3)  
)

;;[功能] 判断点在曲线同侧
;;det [url]http://bbs.xdcad.net/forum.php?mod=viewthread&tid=677303&highlight=%B2%E6%BB%FD[/url]
(defun C:w1 (/ E P2 PTS)
  (setq p2 (getpoint"\n取点"))
  (setq e (car (entsel"\n曲线")))
  (setq pts (_curve2p e p2))
  (if (not (minusp (det (car pts) p2 (cadr pts))))(princ "\n 逆时针"))
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 19个

财富等级: 恭喜发财

发表于 2016-10-26 12:07:07 | 显示全部楼层
黄总又有作品,请问这个和EXTRIM怎么结合?

点评

没有ET,自己可以写EXTRIM,但还没有写  发表于 2016-10-26 15:30
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2016-10-26 15:14:41 | 显示全部楼层
缺 DET 函数,补上吧。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 604个

财富等级: 财运亨通

 楼主| 发表于 2016-10-26 15:23:39 | 显示全部楼层

DET 给了的哇   
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2016-10-26 16:00:29 | 显示全部楼层

老了,眼花了

转帖过来吧,看着方便
;;(det (getpoint)(getpoint)(getpoint))
(defun det (p1 p2 p3 / x2 y2)
  (setq        x2 (car p2)
        y2 (cadr p2)
  )
  (- (* (- x2 (car p3)) (- y2 (cadr p1)))
     (* (- x2 (car p1)) (- y2 (cadr p3)))
  )
)


结论:1    p1 p2 p3 逆时针为正。
           2   三点共线为0

值是三角形2倍面积。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-5-21 18:13 , Processed in 0.246345 second(s), 37 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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