jammal 发表于 2007-1-2 11:06

求助:在AutoCAD2006里绘制3D弹簧怎么画啊?

我用的AutoCAD2006绘图,可画三维弹簧画不出来,请各位大虾帮忙啊!
我的邮箱:[email protected]
谢谢了啊!

[ 本帖最后由 cad 于 2007-1-25 16:42 编辑 ]

jammal 发表于 2007-1-2 11:10

:victory: 谢谢了!

[ 本帖最后由 jammal 于 2007-1-3 09:18 编辑 ]

cad 发表于 2007-1-2 11:35

先给你一个程序,你可以看看
将以下代码COPY到记事本中,然后存为spring.lsp,后在CAD中加载进去,就可以在命令行输入spring,绘制三维螺旋线,转换坐标系,在线头画一个端面圆利用拉伸命令就可以画三维的弹簧

spring;;;-----------弹簧的程序----------
(defun c:spring(/)
(setq p1(getpoint "请指定螺旋线基点:"))
(setq r(getreal "请输入弹簧平均半径:"))
(setq d0(getreal "请输入弹簧丝直径:"))
(setq disp(getreal "请输入弹簧节距:"))
(setq n0(getint "请输入弹簧工作圈数:"))
(setq n(getint "请输入每圈细化段数(16/20/24/28/32/36/40/48/52/56/60/100):"))
(setq n1(* 1.25 n))                   ;支撑圈细化段数
(setq n1(fix n1))
(setq n2(* n0 n))                     ;工作圈细化段数
(setq delta(/ (* 2.0 pi) n))          ;单位转角
(setq j(/ disp n))                  ;工作圈轴向位移量
(setq j0(/ d0 n))                     ;支撑圈轴向位移量
(setq bb(caddr p1))
(setq ang 0)
(setq jj 0)
(command "ucs" "o" p1)
(setq pt1(list r 0 0))
(command "3dpoly" pt1)
(repeat n1                            ;绘制下支撑圈
    (setq jj(+ jj 1))
    (setq ang(+ delta ang))
    (setq pt(list (* r (cos ang)) (* r (sin ang)) (* j0 jj)))
    (command pt)
)
(setq p2(list 0 0 (* j0 jj)))
(setq g1(* j0 jj))                  ;下支撑圈高度
(setq jj 0)
(repeat n2                            ;绘制工作圈
    (setq jj(+ jj 1))
    (setq ang(+ delta ang))
    (setq pt(list (* r (cos ang)) (* r (sin ang)) (+ g1 (* j jj))))
    (command pt)
)
(setq p3(list 0 0 (* j jj)))
(setq g2(* j jj))                     ;工作圈高度
(setq jj 0)
(repeat n1                            ;绘制上支撑圈
    (setq jj(+ jj 1))
    (setq ang(+ delta ang))
    (setq pt(list (* r (cos ang)) (* r (sin ang)) (+ g1 g2 (* j0 jj))))
    (command pt)
)
(setq g3(* j0 jj))                  ;上支撑圈高度
(command "")
(setq e1(entlast))
(command "ucs" "x" "")                ;拉伸弹簧
(command "circle" pt1 (/ d0 2))
(setq e2(entlast))
(command "extrude" e2 "" "p" e1)
(setq e3(entlast))
(setq pt2(list r (/ d0 4) 0))         ;磨平
(setq py(+ g1 g2 g3 (- 0 (/ d0 4))))
(setq pt3(list (- 0 r) py 0))
(command "slice" e3 "" "zx" pt2 pt3)
(command "slice" e3 "" "zx" pt3 pt2)
(command "ucs" "w")

)
;;;---------end----------弹簧程序结束!

jammal 发表于 2007-1-2 15:38

谢谢版主!我已按照cad 超级版主的方法做了.
可是在命令行输入spring后,提示
命令: spring
未知命令“SPRING”。按 F1 查看帮助。
是我哪里弄错了吗?

zjzllll 发表于 2007-1-2 20:43

你要先加载这个程序阿

cad 发表于 2007-1-2 20:59

原帖由 jammal 于 2007-1-2 15:38 发表
谢谢版主!我已按照cad 超级版主的方法做了.
可是在命令行输入spring后,提示
命令: spring
未知命令“SPRING”。按 F1 查看帮助。
是我哪里弄错了吗?
不好意思,刚才的代码我弄错了,现在更新了代码。你重新来做一次

zqc6901780 发表于 2007-1-3 08:28

;P ;P ;P

jammal 发表于 2007-1-3 09:07

可以做出来了!谢谢版主啊!
我想发上来分享一下!呵呵
怎么贴图呢?请教各位!

jammal 发表于 2007-1-3 09:28

回复 #6 cad 的帖子

按您的方法我做出来了!谢谢!:victory:

zjzllll 发表于 2007-1-3 21:26

原帖由 cad 于 2007-1-2 20:59 发表

不好意思,刚才的代码我弄错了,现在更新了代码。你重新来做一次
是吗版主,以前的程序加载之后输入lxx也可以的是吗?;P

lingxuan 发表于 2007-1-4 13:17

如何加载上述内容?

cad 发表于 2007-1-4 13:28

复制代码,粘贴到记事本里,保存为spring.lsp,将这个文件复制到“C:\Program Files\AutoCAD 2004\Support”(版本不同位置也不同),然后打开你的autocad,工具---AutoLISP----加载。找到你刚才的spring.lsp加载就可以了。

zjzllll 发表于 2007-1-12 18:59

你可以更改为自己的命令
spring;;;-----------弹簧的程序----------
(defun c:spring(/)
只要把spring更改就可以了,例如更改为tanhuang你只要输入tanhuang就加载了版主的程序了,那样还好记呢
不好意思版主,这样应该可以吧

henry0128 发表于 2007-1-25 21:40

麻煩指教一下

我把你上面所說的另存了,那怎麼加載到cad裡面啊,我用的是2006的。是加載到程序文件裡面還是直接從cad界面加載啊?請高人指教。
tks

henry0128 发表于 2007-1-25 21:59

感謝

tks very much
页: [1] 2
查看完整版本: 求助:在AutoCAD2006里绘制3D弹簧怎么画啊?