哈哈--小螺丝 发表于 2014-11-25 14:40:31

各位高手请看这里

这是我cad上的代码,可是检查运行总是显示错误,代码的功能是实现弹簧的实体建模,知道的大神帮忙看看,或者有这个功能的代码也可以给我,谢了!
(defun c:spring (/)
(set p1(getpoint "请指定螺旋线基点:"))
(setq r(getreal "请输入弹簧平均半径:"))
(setq d0(getreal "请输入弹簧丝直径:"))
(setq s(getreal "请输入弹簧节距:"))
(setq n0(getint "请输入弹簧工作圈数:"))
(setq n(getint "请输入每圈细化段数(23/36/40/44/48/52/56/60):"))
(setq n1(* 1.25 n));支撑圈细化段数
(setq n1(fix n1))
(setq n2(* n0 n));工作圈细化段数
(setq delta(/(* 2.0 pi)n));单位转角
(setq j(/ s 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" p1)
(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(- o (/ d0 4))))
    (setq pt3(list(- 0 r) py 0))
    (command "slice" e3 "" "zx" pt2 pt3);磨平端部支承面
    (command "slice" e3 "" "zx" pt3 pt2)
    (command "ucs" "w"))

fan_zh 发表于 2014-11-25 15:45:03

(command "3dpoly" p1)
(command pt)
目测有问题

ZZXXQQ 发表于 2014-11-26 08:24:42

第一个(command pt)前少个右括弧‘)'

lucas_3333 发表于 2014-11-26 10:20:41

本帖最后由 lucas_3333 于 2014-11-26 10:26 编辑

楼主是在这里下的吧,呵呵
http://www.szthwj.com/ReadNews.asp?NewsID=741

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 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----------弹簧程序结束!
页: [1]
查看完整版本: 各位高手请看这里