找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1381|回复: 15

[讨论]:如何以曲线上的某一点作为切点画线?

[复制链接]
发表于 2005-6-10 19:24:55 | 显示全部楼层 |阅读模式

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

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

×
我们可以很轻松地从某一点开始画一条和另一条曲线相切的直线或曲线,但如何在已知曲线上的一点为切点时作该曲线的相切的线,呢?若是圆或圆弧好办,画一条从这一点到圆或圆弧的圆心,再作与这条半径线垂直的直线,把它移到切点上就成,但要想相切的是曲线的就难办了。而已知曲线是样条曲线的话那该怎么办?
    请各位先学指点。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2005-6-10 20:00:31 | 显示全部楼层
用vla函数可以办到
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2005-6-12 11:09:18 | 显示全部楼层

  1. (defun c:tt (/ e p v1 v2 oldos oldco)
  2.   (if (and (setq e (entsel "\n选择曲线:"))
  3.            (wcmatch (cdr (assoc 0 (entget (car e))))
  4.                     "*LINE,ARC,CIRCLE"
  5.            )
  6.       )
  7.     (progn
  8.       (setq p (cadr e)
  9.             e (car e)
  10.       )
  11.       (setq v1 (vlax-curve-getfirstderiv
  12.                  e
  13.                  (vlax-curve-getparamatpoint
  14.                    e
  15.                    [color=red][b](setq p (vlax-curve-getclosestpointto e p)[/B][/color])
  16.                  )
  17.                )
  18.             v2 (vlax-curve-getsecondderiv
  19.                  e
  20.                  (vlax-curve-getparamatpoint e p)
  21.                )
  22.             p1 (mapcar '+ p v1)
  23.             p2 (mapcar '+ p v2)
  24.       )
  25.       (setq oldos (getvar "osmode")
  26.             oldco (getvar "cecolor"))
  27.       (setvar "osmode" 0)
  28.       (setvar "cecolor" "1")
  29.       (command ".line" p p1 "")
  30.       (setvar "cecolor" "2")
  31.       (command ".line" p p2 "")
  32.       (setvar "osmode" oldos)
  33.       (setvar "cecolor" oldco)
  34.     )
  35.   )
  36.   (princ)
  37. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-6-12 18:54:05 | 显示全部楼层
vlax-curve-getsecondderiv
我到现在一直不太明白这个函数的作用,请ea和lucas或其它大侠解释一下
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2005-6-12 19:58:55 | 显示全部楼层
firstderiv Help 解释是Returns the first derivative (in WCS) of a curve at the specified location,返回值是一个向量,表示该点的切线方向,对直线段就是至下一点的向量;secondderiv Help 解释是  Returns the second derivative (in WCS) of a curve at the specified location,就是曲线上该点的垂线的矢量方向,对直线段总返回 '(0. 0. 0.)

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

使用道具 举报

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

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

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

使用道具 举报

发表于 2005-6-12 21:21:26 | 显示全部楼层
最初由 eachy 发布
[B]firstderiv Help 解释是Returns the first derivative (in WCS) of a curve at the specified location,返回值是一个向量,表示该点的切线方向,对直线段就是至下一点的向量;secondderiv Help 解释是  Returns the... [/B]


我以前在写曲线相关程序的时候测试国 secondderiv , 在对大多数曲线是法线向量,但是对spline的时候,不知道是什么(可用你提供的程序检测),所以对你在程序中直接用secondderiv 感到有点疑问。我想可能secondderiv 不一定是法线向量,只是在对简单曲线的时候和法线向量一样。
我的数学很差,所以想问问其他人有这方面的解释或理解么?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2005-6-12 22:07:52 | 显示全部楼层
如果 Firstderiv 是切向量,secondderiv 和它垂直,你说是什么?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-6-12 23:32:51 | 显示全部楼层
对于spline线,产生的俩线明显不垂直,也不与线相切。
其他情况俩线垂直,但也不与线相切(程序中的p点未在线上)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-6-12 23:45:50 | 显示全部楼层
谢谢eachy的详细用法(代码),谢谢狂刀的直白的解答,再通过你俩的一问一答,就更明白一点了。1964的分析又让我糊涂了,我先试试。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2005-6-13 00:49:22 | 显示全部楼层
最初由 xyp1964 发布
[B]对于spline线,产生的俩线明显不垂直,也不与线相切。
其他情况俩线垂直,但也不与线相切(程序中的p点未在线上) [/B]

Spline 问题大概只有 Autodesk  能讲清楚,你打开 spliframe 看看,并将 splinetype 改成 5 和 6 分别画不同的 spline 线, firstderiv 画出的第一条线看似不在 spline 上,但用dist 量 Line 到 spline 的 per 距离看看是多少。

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-28 07:03 , Processed in 0.299697 second(s), 60 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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