万科缤纷四季:CAD 中弹簧怎么画?

来源:百度文库 编辑:高校问答 时间:2024/04/27 09:54:51
各位大哥请问一下CAD中怎么画三维的弹簧啊!

为什么不试试3D呢!!!

如果只是画出来,很多的软件都可以轻松做到,只不过是一个简单的命令.不知你有没有想过,把一个弹簧装配到产品中去,当他受到外力的时候,他可以拉伸或者被压缩,而且可以告诉你他所受的力有多大,全部的过程也都是直观的.
试试proe吧!

可以加载一个程序,用 工具-AUTO LISP-编辑器,把下面程序输进去,再加载一下就好了,具体细节我也不太懂的,自己摸索吧:
(defun errMsg (s) ; 当命令执行时出现错误
; 例如用户按下了CTRL + C
(if (/= s "Function cancelled")
(princ (strcat "\nError: " s))
)
(setvar "cmdecho" cmdch) ; 恢复调用前的cmdecho系统变量值
(setvar "blipmode" blpmd) ; 恢复调用前的blipmode系统变量值
(setq *error* olderror) ; 恢复旧的错误处理
(princ)
)

(defun spring (nRepeat cntPoint bhfac lr strad bvfac
/ angle distnc tp aGrw dhGrw dvGrw Pi2 dv)

(setvar "blipmode" 0) ; 关闭 blipmode
(setvar "cmdecho" 0) ; 关闭 cmdecho
(setq Pi2 (* 3.14159265 2))
(setq aGrw (/ Pi2 lr))
(setq dhGrw (/ bhfac lr))
(if bvfac (setq dvGrw (/ bvfac lr)))
(setq angle 0.0)
(if bvfac
(setq distnc strad dv 0.0)
(setq distnc 0.0)
)
(if bvfac
(command "3dpoly") ; 开始绘制弹簧
(command "pline" cntPoint) ; 从基点开始绘制弹簧
)
(repeat nRepeat
(repeat lr
(setq tp (polar cntPoint (setq angle (+ angle aGrw))
(setq distnc (+ distnc dhGrw))
)
)
(if bvfac
(setq tp (list (car tp) (cadr tp) (+ dv (caddr tp)))
dv (+ dv dvGrw)
)
)
(command tp) ; 继续输入下一点
)
)
(command "") ; 输入结束
(princ)
)

;;;
;;; 生成三维弹簧函数调用接口
;;;

(defun C:3DSPRING (/ olderror cmdch blpmd cntPt RottCnt horiGrw vertGrw bgnRdtn ptCntPerCircle)
(setq cmdch (getvar "cmdecho")) ; 获取cmdecho值,以便调用结束后恢复
(setq blpmd (getvar "blipmode")) ; 获取blipmode值,以便调用结束后恢复
(setvar "cmdecho" 0) ; 关闭 cmdecho
(initget 1) ; cntPt 必须非空
(setq cntPt (getpoint "\n请输入底部中心点: "))
(initget 7) ; RottCnt 必须非零、非空,不可忽略
(setq RottCnt (getint "\n旋转的圈数: "))
(initget 7) ; bgnRdtn 必须非零、非空,不可忽略
(setq bgnRdtn (getdist cntPt "\n起始半径: "))
(initget 1) ; cf 必须非零、非空
(setq horiGrw (getdist "\n每一圈的水平增长距离: "))
(initget 3) ; cf 必须非零、非空
(setq vertGrw (getdist "\n每一圈的垂直增长距离: "))
(initget 6) ; ptCntPerCircle 必须非零、不可忽略
(setq ptCntPerCircle (getint "\n每一圈的插值点数<35>: "))
(cond ((null ptCntPerCircle) (setq ptCntPerCircle 35)))
(spring RottCnt cntPt horiGrw ptCntPerCircle bgnRdtn vertGrw)
(setvar "cmdecho" cmdch) ; 恢复调用前的cmdecho系统变量值
(setvar "blipmode" blpmd) ; 恢复调用前的blipmode系统变量值
(setq *error* olderror) ; Restore old *error* handler
(princ)

)