明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1083|回复: 5

[提问] 有关Vlax-curve-getfirstderiv代码的提问。

[复制链接]
发表于 2023-9-2 14:37:04 | 显示全部楼层 |阅读模式
参考http://bbs.mjtd.com/thread-182133-1-1.html,写了一个简化版的垂线代码,其中有一句始终理解不了,所以只要请教各位大佬。
  1. (defun c:cxx (/ a b c cv pt ang ang1 p p2 add *len)
  2. (setq a vlax-curve-getClosestPointTo b Vlax-curve-getfirstderiv c vlax-curve-getParamAtPoint)
  3.     (setq cv (car (entsel "\n选择曲线 : ")))
  4.     (setq pt (getpoint "\n选择曲线上的点 : "))
  5.     (setq p (getpoint pt "\n选择方向"))
  6.     (setq p2 (a cv (trans p 1 0)))
  7.     (setq ang (angle '(0 0) (b cv (c cv p2))))
  8.     (setq add (- (angle p2 p) ang))
  9.     (setq pt (a cv (trans pt 1 0))
  10.         ang1 (angle '(0 0) (b cv (c cv pt)))
  11.     )
  12.     (cond ((setq *len (getdist (strcat "\n长度 > :"))))
  13.           ((setq *len (distance pt p)))
  14.     )
  15.   (entmake (list '(0 . "LINE")(cons 10 pt)(cons 11 (polar pt (+ ang1 add ) *len))))
  16. (princ)
  17. )
其中,(setq ang (angle '(0 0) (b cv (c cv p2)))),这一句怎么理解,这一句理解不了,整个计算过程就理解不了。如果只是针对直线,其实是不需要ang、ang1这段计算的。这句是针对曲线的。
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2023-9-2 14:54:17 | 显示全部楼层
本帖最后由 caaooo 于 2023-9-2 14:56 编辑

(b cv (c cv p2))的结果是点在线上的切线,结果格式是向量形式,然后angle换算成弧度
 楼主| 发表于 2023-9-2 18:26:27 来自手机 | 显示全部楼层
caaooo 发表于 2023-9-2 14:54
(b cv (c cv p2))的结果是点在线上的切线,结果格式是向量形式,然后angle换算成弧度

谢谢您的解释,代码每一句的目的搞清楚了,这两个切线的向量是用来调整pt和p2垂线的角度差的。不过(c cv p2)的用法还是不清楚,它返回的是p2点?还是节点?
发表于 2023-9-2 23:34:27 | 显示全部楼层
hubeiwdlue 发表于 2023-9-2 18:26
谢谢您的解释,代码每一句的目的搞清楚了,这两个切线的向量是用来调整pt和p2垂线的角度差的。不过(c cv  ...

节点........
 楼主| 发表于 2023-9-3 09:34:27 来自手机 | 显示全部楼层
花开富贵 发表于 2023-9-2 23:34
节点........

谢谢富贵哥。
发表于 2024-3-21 10:33:14 | 显示全部楼层
感谢分享感谢分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 21:16 , Processed in 0.173666 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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