永发信息网

可以帮我看看这个CAD中的程序autolisp的语言有哪里是错误的吗?这个是别人编好的滚刀加工齿轮的范成过程。

答案:2  悬赏:10  手机版
解决时间 2021-04-19 18:44
  • 提问者网友:沉默菋噵
  • 2021-04-19 15:35
把程序挂在这里,应该主体是对的,可能格式有点小问题或者函数使用的问题。
;定义函数
(defun tan (x) (/ (sin x) (cos x)))
(defun acos (x) (atan (/ (sqrt (- 1 (*x x)))x)))
(defun asin (x) (atan (/ x (sqrt (- 1 (*x x))))))
(defun inv (x) (- (tan x) x))
(defun C:tqgd () (command"osnap""none")
;输入齿轮参数
(setq m (getreal"模数=?"))
(setq ao (getreal"压力角=?"))
(setq aos (/ (* ao pi) 180))
(setq Z (getreal"齿数=?"))
(setq k (getreal"变位系数=?"))
(setq Rh (/ (* m z) 2.0))
(setq Ro (* Rh (cos aos)))
(setq Re (getstring"<齿顶圆半径=?
/Enter>"))
(if (= Re"")
(setq re (+ Rh (* m 1) (* m k)))
(setq re (read Re)))
(setq Ri (getstring"<齿根圆半径=?
/Enter>"))
(setq sh (+ (/ (* pi m) 2) 0))
(if (= Ri"")
(setq Ri (+ (- Rh (* m 1.35)) (* m k)))
(setq Ri (read Ri)))
;输入剃前滚刀参数
(setq lt (getreal"留剃余量=?"))
(setq st (- sh lt))
(setq hg (getreal"沉割高度=?"))
(setq dds (getreal"沉割深度=?"))
(setq hd (getreal"倒角高度=?"))
(setq dj (getreal"倒角角度=?"))
(setq djs (/ (* dj pi) 180))
;计算齿条坐标点共二十二点
(setq p11 (list (+ (- (/ st 2) (* m 1.
(tan aos))) (/ dds (cos aos))) ri))
(setq p12 (list (+ (- (/ st 2) (* hg
(tan aos))) (/ dds (cos aos))) (+ ri
(- (* 1.35 m) hg))))
(setq p13 (list (+ (- (/ st 2) (* hg
(tan aos))) (/ dds (cos aos))) (+ ri
(- (* 1.35 m) hg) (/ dds (sin aos)))
(setq p14 (list (+ (/ st 2) (* hd (tan
aos))) (+ rh (* m k) hd)))
(setq p15 (list (+ (/ st 2) (* hd (tan
aos)) (* (- m hd) (tan djs))) re))
(setq p16 (list (- (* pi m) (car p15))
(setq p17 (list (- (* pi m) (car p14))
(+ rh (* m k) hd)))
(setq p18 (list (- (* pi m) (car p13))
(+ ri (- (* 1.35 m) hg) (/ dds (sin
aos)))))
(setq p19 (list (- (* pi m) (car p12))
(+ ri (- (* 1.35 m) hg))))
(setq p20 (list (- (* pi m) (car p11))
(setq p21 (list (+ (* pi m) (car p11))
(setq p10 (list (- (car p11)) ri))
(setq p9 (list (- (car p12)) (+ ri (-
(* 1.35 m) hg))))
(setq p8 (list (- (car p13)) (+ ri (-
(* 1.35 m) hg) (/ dds (sin aos)))))
(setq p7 (list (- (car p14)) (+ rh (*
m k) hd)))
(setq p6 (list (- (car p15)) re))
(setq p5 (list (- (car p15) (* pi m)) r
(setq p4 (list (- (car p14) (* pi m))
(+ rh (* m k) hd)))
(setq p3 (list (- (car p13) (* pi m))
(+ ri (- (* 1.35 m) hg) (/ dds (sin
aos)))))
(setq p2 (list (- (car p12) (* pi m))
(+ ri (- (* 1.35 m) hg))))
(setq p1 (list (- (car p11) (* pi
(setq p0 (list (- (car p10) (* pi
(command"pline"p0 p1 p2 p3 p4 p
p7 p8 p9 p10 p11 p12 p13 p14 p15
p17 p18 p19 p20 p21"")
(command"block""zt"(list 0 rh )
"c"(list (- (car p0) 2) (- ri 2)
(list (+ (car p21) 2)(+ re 2))""
(setq F (/ (- (/ (* m pi) 4) (*
aos) m)) rh))
(setq Fo (- F (inv aos)))
(setq fh (+ Fo (inv aos)))
(setq ax (/ (* -A pi) 180))
;自变量压力角的初值
(repeat A (setq ax (+ ax (/ (* p
;压力角自变量也是插入转角
(setq rx ( rh (cos ax)))
(setq fx ( (tan ax) ax))
(setq px (list (* rx (sin fx)) (*
(cos fx)) 0))
(command"insert"(strcat"*""zt"
1 (- (/ (* ax 180) pi)))
;按自变量循环插入齿条块
))
最佳答案
  • 五星知识达人网友:青尢
  • 2020-12-09 21:38
1、你的表达式括号少的太多了,括号必须()成对称形式把公式、变量等等全部括进去;
2、很多变量都没有定义,你让公式怎么进行下去呢?比如“P”、“A”“-A”;你不给公式,也不定义他们的值,电脑就无法计算的啊;
你应该吧程式放到lisp编辑器里面,就可以看的很清楚了,也比较好修改
全部回答
  • 1楼网友:山君与见山
  • 2019-10-15 11:04
你好! 同意ahwx0814说法,先不说你的逻辑和话法对不对,就括号你就不匹配! 希望对你有所帮助,望采纳。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯