明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
123
返回列表 发新帖
楼主: 无痕

再探 vlax-curve-getsecondDeriv和曲线上一点的切线和法线

  [复制链接]
发表于 2022-8-9 17:43:15 | 显示全部楼层
谢谢分享,
解决了大问题了。
发表于 2022-12-23 07:50:17 | 显示全部楼层
meflying 发表于 2003-12-29 08:54
看看这个程序,希望能看出这两个函数的意义(主要是返回值及参数的意义)

这个计算有误,未对(car dir1)为0的情况处理。而且画了2个方向,未展示矢向。
发表于 2023-5-4 12:34:31 | 显示全部楼层
meflying 发表于 2003-12-29 08:54
看看这个程序,希望能看出这两个函数的意义(主要是返回值及参数的意义)

优化了当拾取点为第一象限点时除数为零的错误
  1. (defun c:test(/ angf angs ent obj os para pt vecf vecs)
  2.   (setq os (getvar "osmode"))
  3.   (setq ent (car (entsel)))
  4.   (setq obj (vlax-ename->vla-object ent))  
  5.   (while (setq pt (getpoint "\n拾取点:"))
  6.     (setq para (vlax-curve-getParamAtPoint obj (setq pt (vlax-curve-getClosestPointTo obj pt))))
  7.                 ;;切线
  8.     (setq vecf (vlax-curve-getFirstDeriv obj para))
  9.                 (setq angf (angle pt (mapcar '+ pt vecf)))
  10.                 ;;法线
  11.                 (setq vecs (vlax-curve-getsecondDeriv obj para))
  12.                 (setq angs (angle pt (mapcar '+ pt vecs)))
  13.     (setvar "osmode" 0)
  14.                 (command "_.line" (polar pt (+ angf pi) 100) (polar pt angf 100) "")
  15.     (command "_.line" (polar pt (+ angs pi) 100) (polar pt angs 100) "")
  16.     (setvar "osmode" os)
  17.   )
  18.   (setvar "osmode" os)
  19.   (princ)
  20. )
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-10-2 01:24 , Processed in 0.142816 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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