关于AutoCAD圆锥曲线的疑问
关于AutoCAD圆锥曲线的疑问在圆锥曲线(椭圆,双曲线,抛物线)中,AutoCAD能直接做出的是椭圆。而AutoCAD可以做出圆锥体及圆锥曲线,Ahzhl兄曾经多次用这个来解题。
几年前我也学着用Vla-section命令来构建抛物线。代码见后。
可以看出,这种方法构建的抛物线是SPline。
我的疑问是: 能否直接用Spline绘制出部分的抛物线或者双曲线,Spline的数据结构是如何的。
是样条曲线,还是分段二次曲线,还是分段三次曲线,或者更复杂的曲线呢。
假如我们知道它的数据结构,是否直接可以通过构建几个关键点和起始点的切线方向,来得到一段精确的部分抛物线或者双曲线呢。
题外话,虽然椭圆和双曲线和抛物线相比属于封闭类曲线,但由于椭圆是尺规作图中无法直接应用的,那能够利用椭圆变化出双曲线或者抛物线来呢。
请不吝指点,谢谢。
代码
;;;by qjchen; to draw parabola
(defun c:test (/ *acad-object* *active-document*
*model-space* ratio vl-p1
vl-p2 vl-p3vl-p4 vl-p5
mycone cur a
)
(vl-load-com)
(setq *acad-object* nil)
(setq *active-document* nil)
(setq *model-space* nil);(setq ratio (getreal "\n y=kx^2 k=?:"))
(setq ratio 0.005)
(setq vl-p1 (vlax-3d-point '(0 0 0)))
(setq vl-p2 (vlax-3d-point '(1000 0 0)))
(setq vl-p3 (vlax-3d-point '(1000 1000 0)))
(setq vl-p4 (vlax-3d-point '(0 0 -500)))
(setq vl-p5 (vlax-3d-point (list 0 0 (/ 0.5 ratio))))
(setq mycone (vla-addcone (model-space) vl-p1 1000 1000))
(vla-move mycone vl-p1 vl-p4)
(vla-rotate3d mycone vl-p1 vl-p2 (/ pi 4))
(vla-move mycone vl-p1 vl-p5)
(setq cur (vla-sectionsolid mycone vl-p1 vl-p2 vl-p3))
(vla-erase mycone)
(vla-explode cur)
(setq a (ssget "X"
'((-4 . "<OR")
(0 . "region")
(0 . "line")
(-4 . "OR>")
)
)
)
(command "erase" a "")
(command "zoom" "e" "" "zoom" ".9x")
)
(defun acad-object ()
(cond
(*acad-object*)
(t
(setq *acad-object* (vlax-get-acad-object))
)
)
)
(defun active-document ()
(cond
(*active-document*)
(t
(setq *active-document* (vla-get-activedocument (acad-object)))
)
)
)
(defun model-space ()
(cond
(*model-space*)
(t
(setq *model-space* (vla-get-modelspace (active-document)))
)
)
)
页:
[1]