cad抛物线曲线lisp_曲线的转弯半径和曲率 - AutoLISP/Visual LISP 编程技术 - CAD论坛 - 明经CAD社区 - Powered by Discuz!...
;;;=============================================================
;;; 一般平面曲線參數方程的曲率離心公式
;;; 功能: 獲取曲線上一點處的離心半徑和離心圓圓心
;;; 參數: 曲線實體和曲線上的一點
;;; 返回: 此處離心圓圓心、離心半徑
;;;=============================================================
(defun CUR:GetCurvature (en pt / ob px v1 v2 v3 x1 y1 x2 y2 cen rad d1 d2)
(setq ob (vlax-ename->vla-object en))
(setq pt (vlax-curve-getclosestpointto en pt))? ?? ?? ?? ?? ? ;保證此點在曲線上
(setq px (vlax-curve-getParamAtPoint en pt))? ?? ?? ?? ?? ?? ?;此點的曲線參數
(setq v1 (vlax-curve-getFirstDeriv en px))? ?? ?? ?? ?? ?? ???;此點的一階矢量
(setq v2 (vlax-curve-getSecondDeriv en px))? ? ? ? ? ? ? ? ? ? ? ? ;此點的二階矢量
(setq v3 (list (- (cadr v1)) (car v1) (caddr v1)))? ?? ?? ?? ?;此點的切線矢量
(setq x1 (car??v1))? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? ;一階導數的 X值
(setq y1 (cadr v1))? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ;一階導數的 Y值
(setq x2 (car??v2))? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ;二階導數的 X值
(setq y2 (cadr v2))? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ;二階導數的 Y值
(setq d1 (expt (+ (* y1 y1) (* x1 x1)) 1.5))
(setq d2 (- (* x1 y2) (* x2 y1)))? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ;轉彎內外的判定
(if (/= d2 0)? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? ;如果不為直線段
(progn
(setq rad (/ d1 d2))
(if (vlax-method-applicable-p ob 'GetBulge)? ?? ?? ?? ?? ?;如果為多段線(含圓弧)
(if (< (vla-GetBulge ob (fix px)) 0)? ? ? ? ? ? ? ? ? ? ? ? ;如果此段凸度小于0
(setq rad (- rad))
)
)
(list (polar pt (angle '(0 0 0) v3) rad) (abs rad))? ? ? ? ;圓心及半徑
)
)
)
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的cad抛物线曲线lisp_曲线的转弯半径和曲率 - AutoLISP/Visual LISP 编程技术 - CAD论坛 - 明经CAD社区 - Powered by Discuz!...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PHP随机配菜_PHP+JS三级菜单联动
- 下一篇: core控制器属性注入的用处_了解ASP