找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1759|回复: 6

[编程申请]:如何获取任意曲线上距指定点等距的法线(标注公里标)

[复制链接]
发表于 2004-12-4 11:39:43 | 显示全部楼层 |阅读模式

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

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

×
如何实现获取任意曲线上距指定点等距的法线,给曲线等距等分。

试过mearsure命令,但它只能朝一个方向,并且是从离选择点较近的曲线端点开始等分的。

需要从曲线(包括直线、多段线、圆弧)上任意指定点开始等距等分,并在等分点向指定法线方向绘制一给定长度线段,标明文字。

具体比如,给曲线标注公里标。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2004-12-4 13:53:37 | 显示全部楼层
关键有两个问题:一是找出距给定点指定距离(沿曲线)的点, 二是在这个点上做曲线的法线. 搜索一下论坛, 这两个方面的贴子都有.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

发表于 2004-12-7 03:19:43 | 显示全部楼层
请参考:
[php]
曲线上任意点的法线:
(defun C:test ()
  (setvar "osmode" 512)
  (setq p (getpoint "\nPick a Point:"))
  (setq cur (car (entsel)))
  (setq tan (vlax-Curve-GetFirstDeriv cur
              (vlax-Curve-GetParamatDist cur
                (vlax-curve-getDistAtPoint cur p))))
  (setq pe (polar p (+ (/ pi 2)(atan (/ (cadr tan)(car tan)))) 1))
  (vl-cmdf "xline" p pe  "")
)
[/php]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-12-7 15:31:35 | 显示全部楼层
测试过,可以改成:
(defun C:test ()
  (setvar "osmode" 512)
  (setq p (getpoint "\nPick a Point:"))
  (setq cur (car (entsel)))
  (setq tan (vlax-Curve-getFirstDeriv cur (vlax-Curve-getParamAtPoint cur p)))
  (setq pe (polar p (+ (/ pi 2) (atan (/ (cadr tan) (car tan)))) 1))
  (vl-cmdf "xline" p pe "")
  )

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-22 05:54 , Processed in 0.192454 second(s), 44 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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