明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: highflybir

【越飞越高讲堂14】椭圆论

    [复制链接]
发表于 2012-11-17 09:18 | 显示全部楼层
一个字 太牛了 太牛了
发表于 2012-11-17 22:29 | 显示全部楼层
向前辈学习啦
 楼主| 发表于 2012-11-17 22:59 | 显示全部楼层
更新了一些问题的解。如:十一题 最似圆椭圆问题
发表于 2013-5-4 00:28 | 显示全部楼层
版主,弱弱问下在CAD模型空间中椭圆形椎体怎么展开?求回复!!!
发表于 2013-5-7 00:50 | 显示全部楼层
严重支持高师傅!!
 楼主| 发表于 2013-5-28 10:48 | 显示全部楼层
MENGZE 发表于 2013-5-4 00:28
版主,弱弱问下在CAD模型空间中椭圆形椎体怎么展开?求回复!!!


  1. ;;;=====================================================================
  2. ;;; 功能: 展开椭圆锥体。                                   
  3. ;;; 输入: 椭圆锥底椭圆的长轴a,短轴b,椭圆锥的高h和分弧精度n            
  4. ;;; 输出: 展开图的曲线的坐标点(可据此形成展开面)                        
  5. ;;;=====================================================================
  6. (defun ELL:ExpandCone (a b h n / Pts Ang D Param DivAng P0 P1 R0 R1 X Y)
  7.   (setq DivAng (/ pi n 0.5))      ;等分角度
  8.   (setq Param 0)       ;开始参数为0
  9.   (setq p0 (list a 0))       ;从椭圆最右边的点开始
  10.   (setq r0 (distance '(0 0 0) (list a 0 h)))    ;开始的锥顶最右边点的距离
  11.   (setq Pts (list (list r0 0) '(0 0)))     ;把最开始的两点加入到数据表
  12.   (setq Ang 0)        ;开始角度也为0
  13.   (repeat n
  14.     (setq Param  (+ Param DivAng))
  15.     (setq x   (* a (cos Param)))     ;椭圆上的x坐标
  16.     (setq y   (* b (sin Param)))     ;椭圆上的y坐标
  17.     (setq p1  (list x y))      ;点的坐标
  18.     (setq r1  (distance '(0 0 0) (list x y h)))    ;展开面的锥线长度
  19.     (setq d   (distance p0 p1))      ;椭圆上的上一点到这点的距离
  20.     (setq Ang (+ Ang (car (TRI:CosinesLaw d r0 r1))))   ;坐标角度
  21.     (setq Pts (cons (polar '(0 0) Ang r1) Pts))    ;得到了坐标,并把它加入到表中
  22.     (setq p0 p1)       ;用新的坐标位置替换旧位置
  23.     (setq r0 r1)       ;用新的锥线长度替换旧长度
  24.   )
  25.   (reverse Pts)        ;逆转表,得到正序的数据
  26. )
  27. ;;; 测试椭圆锥的展开
  28. (defun c:ExpandCone(/ h N e d r c m a b l e o)
  29.   (initget 1)
  30.   (setq h (getdist "\n输入椭圆锥高: "))
  31.   (initget 7)
  32.   (setq N (getint "\n等分数:"))
  33.   (prompt "\n选择椭圆:")
  34.   (if (setq s (ssget ":S" '((0 . "ELLIPSE"))))
  35.     (progn
  36.       (setq e (ssname s 0))
  37.       (setq d (entget e))
  38.       (setq r (cdr (assoc 40 d)))
  39.       (setq c (cdr (assoc 10 d)))
  40.       (setq m (cdr (assoc 11 d)))
  41.       (setq a (distance '(0 0 0) m))
  42.       (setq b (* r a))
  43.       (setq l (ELL:ExpandCone a b h n))
  44.       (setq o (vlax-ename->vla-object (Ent:Make_LWPoly l T)))
  45.       (vla-move o (vlax-3d-point '(0 0 0)) (vlax-3d-point c))
  46.       (princ)
  47.     )
  48.   )
  49. )
  50. ;;;----------------------------------------------------;
  51. ;;; 功能: 根据三边求三个角(利用余弦定理)               ;
  52. ;;; 输入: 构成三角形的三边a,b,c                        ;
  53. ;;; 输出: 返会三条边对应的三个角                       ;
  54. ;;;----------------------------------------------------;
  55. (defun TRI:CosinesLaw (a b c / cc sc a1 a2)
  56.   (if (TRI:IsTriangle a b c)
  57.     (progn
  58.       (setq a  (float a))     ;为了防止整除
  59.       (setq cc (/ (+ (* a a) (* (+ b c) (- b c))) (+ a a) b)) ;角C的余弦
  60.       (setq sc (sqrt (* (- 1 cc) (1+ cc))))    ;角C的正弦
  61.       (setq a1 (atan (* a sc) (- b (* a cc))))    ;角A
  62.       (setq a2 (atan sc cc))     ;角C
  63.       (list a1 (- pi a1 a2) a2)     ;返回三个角度的列表
  64.     )
  65.   )
  66. )
  67. ;;;----------------------------------------------------;
  68. ;;;创建一个三维多段线                                  ;
  69. ;;;输入: 三维的点集                                    ;
  70. ;;;输出: 三维多段线实体                                ;
  71. ;;;----------------------------------------------------;
  72. (defun Ent:Make_Poly (pts / e)
  73.   (setq e (Entmake (list '(0 . "POLYLINE") '(70 . 9))))
  74.   (foreach p pts
  75.     (entmake (list '(0 . "VERTEX") '(70 . 32) (cons 10 p)))
  76.   )
  77.   (entmake '((0 . "SEQEND")))
  78.   (entlast)
  79. )

发表于 2013-5-29 21:18 | 显示全部楼层
谢谢老师!!!
发表于 2013-5-29 21:19 | 显示全部楼层
受教了!!!
发表于 2013-9-24 13:02 | 显示全部楼层
C:test4中(setq ptb (vlax-curve-getPointAtParam ent (* pi 0.5)))与成了(setq ptb (vlax-curve-getPointAtParam en (* pi 0.5)))
发表于 2013-11-22 17:05 | 显示全部楼层
鸟哥的东西,不赞都不行啊!!!!!要是我早看到,要少走多少弯路啊!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-8 05:22 , Processed in 0.197788 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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