找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1771|回复: 10

[求助] [求助]:求点到曲线的最近垂线的方法(lisp)

[复制链接]
发表于 2002-3-26 05:12:14 | 显示全部楼层 |阅读模式

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

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

×
求点pt 到曲线 s 的最近垂线 t 的方法
思路1:经pt offset s ,得到曲线s',求s' 在 pt 的法线 即可得到t
请问是否有其他思路?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 23个

财富等级: 恭喜发财

发表于 2002-3-26 06:52:53 | 显示全部楼层
vlax-curve-getClosestPointTo
Function Returns the point (in WCS) on a curve that is nearest to the specified point

(vlax-curve-getClosestPointTo curve-obj givenPnt [extend])

Arguments

curve-obj

The VLA-object to be measured.

givenPnt

A point (in WCS) for which to find the nearest point on the curve.

extend

If specified and not nil, vlax-curve-getClosestPointTo extends the curve when searching for the nearest point.

Return Values

A 3D point list representing a point on the curve, if successful, otherwise nil.

Examples

Assume that the curve being measured is the arc in the following drawing:



Return the closest point on the arc to the coordinates 6.0, 0.5:

_$ (vlax-curve-getClosestPointTo arcObj '(6.0 0.5 0.0))

(6.0 1.5 0.0)
Return the closest point on the arc to the coordinates 6.0, 0.5, after extending the arc:

_$ (vlax-curve-getClosestPointTo arcObj '(6.0 0.5 0.0) T)

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

使用道具 举报

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

使用道具 举报

已领礼包: 3337个

财富等级: 富可敌国

发表于 2002-3-26 22:57:05 | 显示全部楼层
有现成的函数,为什么还要讨论算法。难道为了做衣服先要学织布吗?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2002-3-27 00:34:20 | 显示全部楼层
我对刚刚接触ARX编程,个人认为有时对于一些自定义的实体类型需要算法支持,
用lisp可以较方便的验证算法。请指教。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2002-3-27 00:47:56 | 显示全部楼层
最初由 y0yxt 发布
[B]我对刚刚接触ARX编程,个人认为有时对于一些自定义的实体类型需要算法支持,
用lisp可以较方便的验证算法。请指教。 [/B]


ARX提供了完备的几何库的,可以用到你的自定义对象上。

当然某些复杂的图形学算法有可能需要自己写,但是一般情况下,在AUTOCAD环境下,在AcGe几何库里面都能找到方法或者是一些AcGe几何库的方法的组合。

比如你说的垂线:

你可以构造一个和数据库曲线对象AcDbCurve等价的几何模型AcGeCurve3d,
然后使用AcGeCurve3d几何库,很容易做的:

AcGeCurve3d::closestPointTo
AcGeCurve3d::getClosestPointTo
AcGeCurve3d::getLocalClosestPoints
AcGeCurve3d::getProjClosestPointTo
AcGeCurve3d::projClosestPointTo

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

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2002-3-27 00:50:55 | 显示全部楼层
最初由 y0yxt 发布
[B]我对刚刚接触ARX编程,个人认为有时对于一些自定义的实体类型需要算法支持,
用lisp可以较方便的验证算法。请指教。 [/B]


AcGe几何库基本上提供了图形学上算法的支持,这也是用ARX的效率高的地方,程序员不必要为一个算法的实现去费时间了,AcGe几何库提供了完备的支持。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2002-3-27 01:02:00 | 显示全部楼层
我原来(两年前)准备自定义缓和曲线(回旋线)实体,R14版AcGe几何库不够完备,所以后来就放弃了。
可否提供一些自定义实体方面的例子,谢谢
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2002-3-27 01:18:09 | 显示全部楼层
最初由 y0yxt 发布
[B]我原来(两年前)准备自定义缓和曲线(回旋线)实体,R14版AcGe几何库不够完备,所以后来就放弃了。
可否提供一些自定义实体方面的例子,谢谢 [/B]


推荐你用OBJECT ARX 2000,2002的SDK,对R14的SDK进行了大幅度的提升,提供了更多的功能。

当然,现在AUTOCAD自己也还不支持回旋线这种实体,即不存在AcDb类对应的对象,所以就没有AcGe类可供选择了。

所以,对于ACAD不支持的图形学算法,只能自己去找算法了。然后定义自己的worldDraw(),用AcGi类库的图原子显示实体,但是图原子里面都是些基本的向量绘制,如LINE,PLINE,弧等等,若实现你的回旋线,我估计还得用曲线模拟的方法不会是精确的。若真是只能模拟,那还不如直接用AcDbCurve类模拟,不比麻烦的用自定义实体。上面仅仅是我个人的一些理解,我没有搞过这些。

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

使用道具 举报

 楼主| 发表于 2002-3-27 05:19:50 | 显示全部楼层
我曾经由AcDbEntity类自定义动态桩号实体,确实较为麻烦。
若有时间,请再仔细谈谈用AcDbCurve类模拟。
另:ARX2002是否支持VC++.NET
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2002-3-27 06:28:17 | 显示全部楼层
最初由 y0yxt 发布
[B]我曾经由AcDbEntity类自定义动态桩号实体,确实较为麻烦。
若有时间,请再仔细谈谈用AcDbCurve类模拟。
另:ARX2002是否支持VC++.NET [/B]


下面是关于VC++.NET的问答


问题:
是否可以使用 Visual Studio .Net 开发ObjectARX 应用程序?

回答:

Autodesk supports the use of Visual Studio .NET to drive and customize its AutoCAD-based
products through COM Automation. The use of Visual C++ 7.0  is not supported
for ObjectARX development: Visual C++ 6.0 must be used when developing ObjectARX
applications for the current versions of AutoCAD-based products.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-5 02:59 , Processed in 0.514124 second(s), 52 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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