明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1086|回复: 3

求助

[复制链接]
发表于 2005-11-17 10:39 | 显示全部楼层 |阅读模式
我是一个lisp的初学者,最近要用lisp做一个小小的开发,在其中有一段求渐开线上若干点x,y坐标的程序,我想把数据存入表中(因为考虑lisp中没有数组,为方便后面取值所以这样做)。程序写出后,老是调试不能通过,不知为何,请大家多多指教!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2005-11-17 11:11 | 显示全部楼层
你先一行一行的检查左右括号是否对应,
 楼主| 发表于 2005-11-17 12:09 | 显示全部楼层

我刚才在书的指导下,已经把括号匹配检查了,函数tan也进行了改写,也取消了对pi的重新设值,但程序后部仍存在问题,本想把修改后的程序传上来,但由于今天上传文件数超过5个,未能成功,明天再传,敬请大家指教。

发表于 2005-11-17 12:20 | 显示全部楼层

好多问题,

1。括号不匹配。你应该一行一行检查

2。PI、set是受保护字符不应该定义。(setq pi 3.141593) 把这行删除,因为PI,LISP中可以直接用。就是3.1415926……

(setq set (+ (/ 1.5708 z) 0.0149))这里的SET改用SETTT或其他

3。IF循环中应该加入(PROGN   )

4。没有TAN这个语法。如果想求TAN正切应该这样:(/ (SIN A)(COS A))

下面是改好的,没有语法错误了。你再调试看看。可能程序设计上有错误。自己找吧

 

(defun c:qiuzhi() ;求渐开线上各点坐标
  (setq m (getreal "\n m:")) ;模数
  (setq z (getreal "\n z:")) ;齿数
  (setq ha* (getreal "\n ha*:")) ;齿顶高系数
  (setq ar (/ pi 180))  ;弧度
  (setq afa (* 20 ar))  ;分度圆压力角
  (setq deltr 2)  ;极径每次的变化量
  (setq rb (* 0.5 m z (cos afa))) ;rb为基圆半径
  (setq ra (* m (+ (* 0.5 Z) ha*))) ;ra为齿顶圆半径
  (setq rk rb) ;渐开线上任一点的极径
  (setq x (list nil))  ;建立两个空表
  (setq y (list nil))
  (while (<= rk ra)
     (setq afak (atan (/ (sqrt (- (expt rk 2) (expt rb 2))) rb))) ;afak为渐开线上任一点的压力角
     (setq setk (- (/ (SIN afak) (COS afak)) afak))
     (setq settt (+ (/ 1.5708 z) 0.0149))
     (setq xk (* rb (sin (+ settt setk))))  ;求对应于rk点的x,y坐标
     (setq x (cons xk x)) ;x坐标存入列表x中
     (setq yk (* rb (cos (+ settt setk))))
     (setq y (cons yk y)) ;y坐标存入列表y中
     (setq rk (+ deltr rk))
   )
     (if (rk /= ra) ;若rk不是正好等于ra时,再计算一点的坐标,并把它加入到列表中
        (progn
       (setq afak (atan (/ (sqrt (- (expt rk 2) (expt rb 2))) rb))) ;afak为渐开线上任一点的压力角
       (setq setk (- (tan afak) afak))
       (setq set (+ (/ 1.5708 z) 0.0149))
       (setq xk (* rb (sin (+ settt setk))))  ;求对应于rk点的x,y坐标
       (setq x (cons xk x)) ;x坐标存入列表x中
       (setq yk (* rb (cos (+ settt setk))))
       (setq y (cons yk y)) ;y坐标存入列表y中
       (setq rk (+ deltr rk))
       (prinl x)
       (prinl y)
       )
))

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-18 05:29 , Processed in 0.223300 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表