用CAD能画阿基米德螺旋线吗?怎么画呢?

如题所述

1。直接画是很难的.你可以先用“电子表格”按阿基米德螺线公式计算出一列成对的X、Y的值。并做成“X,Y”的形式,然后复制这一列值,在CAD里画样条时粘贴上去就成了,“电子表格”中取样越细,画的图越精确,,“电子表格”中取样细不会增加人的工作量的。 2。还可以用CAXA画,那更方便。

阿基米德螺旋线
用autolisp编程可以实现.
(command "pline" )
(setq n 0)
(repeat 1000
(command (polar (list 0 0) (/ n 57.3) n))
(setq n (1+ n))
)
(command)

弹簧和螺纹(三维)
1、打开CAD后,找工具/AUTOLISP/VISUAL LISP编辑器,打开.点新建文件
2、然后输入
(defun c:luoxuan
(/)
(setq b1 (getpoint "请指定螺旋线基点: "))
(setq r (getreal "请输入螺纹平均半径: "))
(setq disp (getreal "请输入螺纹节距: "))
(setq n (getint "请输入每圈细化段数: "))
(setq delta (/ (* 2.0 pi) n))
(setq j (/ disp n))
(setq bb (caddr b1))
(setq ang 0)
(setq jj 0)
(Command "UCS" "o" b1)
(Command "3dpoly" (list r 0 0))
(repeat n
(setq jj(+ jj 1)
(setq ang(+ delta ang))
(setq pt2(list (* r (cos ang)) (* r (sin ang)) (+ 0 (* j jj))))
(Command pt2)
)
(Command "")
)
存盘为luoxuan.lsp,关闭编辑器
3、要用时,点工具/AUTOLISP/加载,找到luoxuan.lsp文件将其加载,关闭对话框.在命令行输入luoxuan回车,就开始了螺旋线的绘制
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-03-10
新建一个文本文件 把下面的代码复制到文件 保存为 .lsp; 3DSPIRAL.LSP(defun myerror (s) (if (/= s "function cancelled") (princ (strcat "\nError: " s)) ) (setvar "cmdecho" ocmd) (setvar "blipmode" oblp) (setq *error* olderr) (princ))(defun cspiral (ntimes bpoint hfac lppass strad vfac / ang dist tp ainc dhinc dvinc circle dv) (setvar "blipmode" 0) (setvar "cmdecho" 0) (setq circle (* 3.141596235 2)) (setq ainc (/ circle lppass)) (setq dhinc (/ hfac lppass)) (if vfac (setq dvinc (/ vfac lppass))) (setq ang 0.0) (if vfac (setq dist strad dv 0.0) (setq dist 0.0) ) (if vfac (command "3dpoly") (command "mline" bpoint) ) (repeat ntimes (repeat lppass (setq tp (polar bpoint (setq ang (+ ang ainc)) (setq dist (+ dist dhinc)) ) ) (if vfac (setq tp (list (car tp) (cadr tp) (+ dv (caddr tp))) dv (+ dv dvinc) ) ) (command tp) ) ) (command "") (princ)) (defun C:SPIRAL (/ olderr ocmd oblp nt bp cf lp) ;;;;(setq olderr *error* ;;;; *error* myerror) (setq ocmd (getvar "cmdecho")) (setq oblp (getvar "blipmode")) (setvar "cmdecho" 0) (initget 1) ; bp must not be null (setq bp (getpoint "\nCenter point: ")) (initget 7) ; nt must not be zero, neg, or null (setq nt (getint "\nNumber of rotations: ")) (initget 3) ; cf must not be zero, or null (setq cf (getdist "\nGrowth per rotation: ")) (initget 6) ; lp must not be zero or neg (setq lp (getint "\nPoints per rotation <30>: ")) (cond ((null lp) (setq lp 30))) (cspiral nt bp cf lp nil nil) (setvar "cmdecho" ocmd) (setvar "blipmode" oblp) (setq *error* olderr) ; Restore old *error* handler (princ)) ;;;;;; Interactive spiral generation;;;(defun C:3DSPIRAL (/ olderr ocmd oblp nt bp hg vg sr lp) ;;;;(setq olderr *error* ;;;; *error* myerror) (setq ocmd (getvar "cmdecho")) (setq oblp (getvar "blipmode")) (setvar "cmdecho" 0) (initget 1) ; bp must not be null (setq bp (getpoint "\nCenter point: ")) (initget 7) ; nt must not be zero, neg, or null (setq nt (getint "\nNumber of rotations: ")) (initget 7) ; sr must not be zero, neg, or null (setq sr (getdist bp "\nStarting radius: ")) (initget 1) ; cf must not be zero, or null (setq hg (getdist "\nHorizontal growth per rotation: ")) (initget 3) ; cf must not be zero, or null (setq vg (getdist "\nVertical growth per rotation: ")) (initget 6) ; lp must not be zero or neg (setq lp (getint "\nPoints per rotation <30>: ")) (cond ((null lp) (setq lp 30))) (cspiral nt bp hg lp sr vg) (setvar "cmdecho" ocmd) (setvar "blipmode" oblp) (setq *error* olderr) ; Restore old *error* handler (princ)) (princ "\n\tC:SPIRAL and C:3DSPIRAL loaded. ")(princ)在CAD 下用命令 load 加载你保存的文件 后使用命令 3dspiral
第2个回答  2014-03-10
就这么花
第3个回答  2014-03-10
可以
相似回答