找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 15339|回复: 136

[每日一码] Spline精确包围盒ClosestPointToProjection应用

  [复制链接]

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-11-23 09:59:22 | 显示全部楼层 |阅读模式

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

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

×
游客,如果您要查看本帖隐藏内容请回复

splbox.gif

评分

参与人数 2威望 +1 D豆 +10 收起 理由
Highflybird + 1 + 5 很给力!经验;技术要点;资料分享奖!
牢固 + 5 很给力!经验;技术要点;资料分享奖!

查看全部评分

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

已领礼包: 344个

财富等级: 日进斗金

发表于 2013-12-4 11:48:14 | 显示全部楼层
st788796 发表于 2013-12-4 11:46
G 版再改改就适合所有的 Curve 类了

适合所有曲线版本:
  1. (defun gxl-GetCurveUcsBox  (curve / obj p1 p2 p3 p4 lst d)
  2.   (if (= 'ename (type curve))
  3.     (setq obj (vlax-ename->vla-object curve))
  4.     (setq obj curve)
  5.     )
  6.   (vla-GetBoundingBox obj 'p1 'p3)
  7.   (setq  p1 (trans (vlax-safearray->list p1) 0 1)
  8.   p3 (trans (vlax-safearray->list p3) 0 1)
  9.   d  (* 0.5 (distance p1 p3))
  10.   p1 (list (- (car p1) d) (- (cadr p1) d) (caddr p1))
  11.   p3 (list (+ (car p3) d) (+ (cadr p3) d) (caddr p3))
  12.   p2 (list (car p1) (cadr p3) (caddr p1))
  13.   p4 (list (car p3) (cadr p1) (caddr p1))
  14.   )
  15.   (SETQ  lst
  16.       (mapcar '(lambda (a b)
  17.            (vlax-curve-getClosestPointToProjection curve a b t))
  18.         (mapcar '(lambda (p) (trans p 1 0)) (list p1 p2 p3 p4))
  19.         (list (getvar 'ucsxdir)
  20.         (getvar 'ucsydir)
  21.         (getvar 'ucsxdir)
  22.         (getvar 'ucsydir))
  23.         )
  24.   lst (mapcar '(lambda (p) (trans p 0 1)) lst)
  25.   )
  26.   (setq  p1 (apply 'mapcar (cons 'min lst))
  27.   p3 (apply 'mapcar (cons 'max lst))
  28.   p2 (list (car p1) (cadr p3) (caddr p1))
  29.   p4 (list (car p3) (cadr p1) (caddr p1))
  30.   )
  31.   (mapcar '(lambda (p) (trans p 1 0)) (list p1 p2 p3 p4))
  32.   )

点评

稍微简化下, WCS 下返回 WCS 点, UCS 下返回 UCS 点  详情 回复 发表于 2013-12-4 14:37
赞一个! aLisp 在求 Entity Box 的时候用这个可以减少大量的 Rotate 和变换了!  详情 回复 发表于 2013-12-4 11:52

评分

参与人数 1D豆 +5 收起 理由
st788796 + 5 很给力!经验;技术要点;资料分享奖!

查看全部评分

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

使用道具 举报

已领礼包: 604个

财富等级: 财运亨通

发表于 2013-11-23 10:06:51 | 显示全部楼层
学习一下你怎么精确法{:soso_e113:}

点评

用这种方法可以方便的求曲线和直线的最近点,两个曲线还没有找的方便方法  详情 回复 发表于 2013-11-23 10:09
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

 楼主| 发表于 2013-11-23 10:09:12 | 显示全部楼层

用这种方法可以方便的求曲线和直线的最近点,两个曲线还没有找的方便方法

点评

确实很独到,那么对于椭圆也行? 能否叙述一下你的思路?  详情 回复 发表于 2013-11-23 10:16
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 604个

财富等级: 财运亨通

发表于 2013-11-23 10:16:22 | 显示全部楼层
st788796 发表于 2013-11-23 10:09
用这种方法可以方便的求曲线和直线的最近点,两个曲线还没有找的方便方法

确实很独到,那么对于椭圆也行?
能否叙述一下你的思路?

点评

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

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

 楼主| 发表于 2013-11-23 10:23:08 | 显示全部楼层
/db_自贡黄明儒_ 发表于 2013-11-23 10:16
确实很独到,那么对于椭圆也行?
能否叙述一下你的思路?

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

使用道具 举报

已领礼包: 604个

财富等级: 财运亨通

发表于 2013-11-23 10:40:58 | 显示全部楼层
既然可以找到曲线和直线的最近,那么在两条曲线之间画一条线,是不是就可以找到两曲线的最近距离 了?

点评

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

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

 楼主| 发表于 2013-11-23 10:44:43 | 显示全部楼层
/db_自贡黄明儒_ 发表于 2013-11-23 10:40
既然可以找到曲线和直线的最近,那么在两条曲线之间画一条线,是不是就可以找到两曲线的最近距离 了?

那不一定了,这个直线位置不是随意定的

点评

那么两条曲线采用逼进法,各取5个,最短那条线的点周围再取5个点,如果反复多次,相信精度就足够高了  详情 回复 发表于 2013-11-23 12:40
希望版主研究一下关于Spline 的精确(正负0.01)分解为ARC 而且分解段数尽量控制少点  详情 回复 发表于 2013-11-23 11:26
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 685个

财富等级: 财运亨通

发表于 2013-11-23 11:26:33 | 显示全部楼层
st788796 发表于 2013-11-23 10:44
那不一定了,这个直线位置不是随意定的

希望版主研究一下关于Spline  的精确(正负0.01)分解为ARC


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

使用道具 举报

已领礼包: 8611个

财富等级: 富甲天下

发表于 2013-11-23 11:43:49 | 显示全部楼层
也就是说,ClosestPointToProjection对spline是有特效的

点评

这个是vlax-curve类函数,不仅对spline,这只是应用之一  详情 回复 发表于 2013-11-23 12:02
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

 楼主| 发表于 2013-11-23 12:02:48 来自手机 | 显示全部楼层
liuyj 发表于 2013-11-23 11:43
也就是说,ClosestPointToProjection对spline是有特效的


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

使用道具 举报

已领礼包: 604个

财富等级: 财运亨通

发表于 2013-11-23 12:40:57 | 显示全部楼层
st788796 发表于 2013-11-23 10:44
那不一定了,这个直线位置不是随意定的

那么两条曲线采用逼进法,各取5个,最短那条线的点周围再取5个点,如果反复多次,相信精度就足够高了{:soso_e113:}
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2476个

财富等级: 金玉满堂

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

使用道具 举报

已领礼包: 5583个

财富等级: 富甲天下

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

使用道具 举报

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

使用道具 举报

已领礼包: 1个

财富等级: 恭喜发财

发表于 2013-11-23 17:57:12 | 显示全部楼层
从动画看起来很精彩.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-20 10:47 , Processed in 0.229215 second(s), 62 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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