明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1909|回复: 0

关于AutoCAD圆锥曲线的疑问

[复制链接]
发表于 2007-8-24 09:29:00 | 显示全部楼层 |阅读模式
关于AutoCAD圆锥曲线的疑问
在圆锥曲线(椭圆,双曲线,抛物线)中,AutoCAD能直接做出的是椭圆。而AutoCAD可以做出圆锥体及圆锥曲线,Ahzhl兄曾经多次用这个来解题。
几年前我也学着用Vla-section命令来构建抛物线。代码见后。
可以看出,这种方法构建的抛物线是SPline。
我的疑问是: 能否直接用Spline绘制出部分的抛物线或者双曲线,Spline的数据结构是如何的。
是样条曲线,还是分段二次曲线,还是分段三次曲线,或者更复杂的曲线呢。
假如我们知道它的数据结构,是否直接可以通过构建几个关键点和起始点的切线方向,来得到一段精确的部分抛物线或者双曲线呢。
题外话,虽然椭圆和双曲线和抛物线相比属于封闭类曲线,但由于椭圆是尺规作图中无法直接应用的,那能够利用椭圆变化出双曲线或者抛物线来呢。
请不吝指点,谢谢。
代码
  1. ;;;by qjchen; to draw parabola
  2. (defun c:test (/     *acad-object*       *active-document*
  3.         *model-space*   ratio       vl-p1
  4.         vl-p2     vl-p3  vl-p4       vl-p5
  5.         mycone     cur   a
  6.        )
  7.   (vl-load-com)
  8.   (setq *acad-object* nil)
  9.   (setq *active-document* nil)
  10.   (setq *model-space* nil)  ;(setq ratio (getreal "\n y=kx^2 k=?:"))
  11.   (setq ratio 0.005)
  12.   (setq vl-p1 (vlax-3d-point '(0 0 0)))
  13.   (setq vl-p2 (vlax-3d-point '(1000 0 0)))
  14.   (setq vl-p3 (vlax-3d-point '(1000 1000 0)))
  15.   (setq vl-p4 (vlax-3d-point '(0 0 -500)))
  16.   (setq vl-p5 (vlax-3d-point (list 0 0 (/ 0.5 ratio))))
  17.   (setq mycone (vla-addcone (model-space) vl-p1 1000 1000))
  18.   (vla-move mycone vl-p1 vl-p4)
  19.   (vla-rotate3d mycone vl-p1 vl-p2 (/ pi 4))
  20.   (vla-move mycone vl-p1 vl-p5)
  21.   (setq cur (vla-sectionsolid mycone vl-p1 vl-p2 vl-p3))
  22.   (vla-erase mycone)
  23.   (vla-explode cur)
  24.   (setq a (ssget "X"
  25.    '((-4 . "<OR")
  26.      (0 . "region")
  27.      (0 . "line")
  28.      (-4 . "OR>")
  29.     )
  30.    )
  31.   )
  32.   (command "erase" a "")
  33.   (command "zoom" "e" "" "zoom" ".9x")
  34. )
  35. (defun acad-object ()
  36.   (cond
  37.     (*acad-object*)
  38.     (t
  39.      (setq *acad-object* (vlax-get-acad-object))
  40.     )
  41.   )
  42. )
  43. (defun active-document ()
  44.   (cond
  45.     (*active-document*)
  46.     (t
  47.      (setq *active-document* (vla-get-activedocument (acad-object)))
  48.     )
  49.   )
  50. )
  51. (defun model-space ()
  52.   (cond
  53.     (*model-space*)
  54.     (t
  55.      (setq *model-space* (vla-get-modelspace (active-document)))
  56.     )
  57.   )
  58. )
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-24 01:03 , Processed in 0.166428 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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