明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2353|回复: 17

高手帮忙看看啊。头一次编程,犀利糊涂不知道那里错了

  [复制链接]
发表于 2005-5-28 15:34:00 | 显示全部楼层 |阅读模式
本帖最后由 作者 于 2005-5-28 16:00:18 编辑

(defun c:gear1(/ m z ang a dn dt1 bt1 d da db)
(setq m (getreal "\n请输入齿轮模数:")
z (getint "\n请输入齿轮齿数:")
ang1 (getangle "\n请输入齿轮左偏角:")
ang2 (getangle "\n请输入齿轮右偏角:")
a (getdist "\n请输入齿轮宽:")
dn (getdist "\n请输入内径:")
dt1 (getdist "\n请输入齿轮旁台的直径:")
bt1 (getdist "\n请输入齿轮旁台的宽:")
d (* m z)
da (* m(+ z 2))
db (* m(- z 2.5))
p0 (getpoint "\n请输入起点:")
)
(setq p1(polar p0 (/ pi 2) (/ dn 2))
p2(polar p0 (/ pi 2) (/ db 2))
p3(polar p2 0 a)
p4(polar p1 0 a)
p5(polar p0 0 a)
p6(polar p5 (/ pi 2) (/ da 2))
)
(setq x (+ (car p2) (/ (* cos(- (/ pi 2) ang1) (- (/ da 2) (cadr p2))) sin(- (/ pi 2) ang1))))
(setq p7 (list x (/ da 2))
p8 (polar p5 (/ pi 2) (/ dt1 2))
p9 (polar p8 0 bt1)
p10 (polar p0 0 (+ a bt1))
)
(command "pline" p0 p1 p2 p7 p6 p3 p8 p9)
(princ)
) 编写的就是作上边那点几跟线。。。 本来打算做好后用镜象,但是现在连上边都出不来。郁闷啊。求高手指点,
 楼主| 发表于 2005-5-28 15:46:00 | 显示全部楼层



图在这里

本帖子中包含更多资源

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

x
 楼主| 发表于 2005-5-28 15:58:00 | 显示全部楼层
输入完0,0以后。就说
; 错误: 参数类型错误: numberp: #<SUBR @034ee348 COS>
发表于 2005-5-28 16:00:00 | 显示全部楼层
(setq x (+ (car p2) (/ (* cos(- 90 ang1) (- (/ da 2) (cadr p2))) sin(- 90 ang1))))


这具有错误,第一cos,sin函数你不是很明白,第二(- (/ da 2) (cadr p2))好像有可能会是负数吧
 楼主| 发表于 2005-5-28 16:21:00 | 显示全部楼层
(- (/ da 2) (cadr p2))


da是齿顶高,p2的y坐标是齿根高啊。不会是负数把?


       


sin cos我在研究研究。


送您鲜花
 楼主| 发表于 2005-5-28 16:24:00 | 显示全部楼层
那如果是负数会怎么样样啊。


sin cos就是后边加个弧度啊。然后返回他得到的值啊


不明白,还是不会修改啊
 楼主| 发表于 2005-5-28 16:27:00 | 显示全部楼层
还有个问题就是我用mirror的时候如何选择刚才连到一起的线啊 改了改。程序如下: (defun c:gear1(/ m z ang a dn dt1 bt1 d da db)
(setq m (getreal "\n请输入齿轮模数:")
z (getint "\n请输入齿轮齿数:")
ang1 (getangle "\n请输入齿轮左偏角:")
ang2 (getangle "\n请输入齿轮右偏角:")
a (getdist "\n请输入齿轮宽:")
dn (getdist "\n请输入内径:")
dt1 (getdist "\n请输入齿轮旁台的直径:")
bt1 (getdist "\n请输入齿轮旁台的宽:")
d (* m z)
da (* m(+ z 2))
db (* m(- z 2.5))
p0 (getpoint "\n请输入起点:")
)
(setq p1(polar p0 (/ pi 2) (/ dn 2))
p2(polar p0 (/ pi 2) (/ db 2))
p3(polar p2 0 a)
p4(polar p0 0 a)
p5(polar p4 (/ pi 2) (/ da 2))
)
(setq x (+ (car p2) (/ (* cos(- (/ pi 2) ang1) (- (/ da 2) (cadr p2))) sin(- (/ pi 2) ang1))))
(setq p6 (list x (/ da 2))
p7 (polar p4 (/ pi 2) (/ dt1 2))
p8 (polar p7 0 bt1)
p9 (polar p0 0 (+ a bt1))
p10 (polar p9 (/ pi 2) (/ dn 2))
)
(command "pline" p0 p1 p2 p6 p5 p3 p7 p8)
(command "line" p2 p3)
(command "line" p1 p10)
(princ)
)
发表于 2005-5-28 17:00:00 | 显示全部楼层
你给我个数据吧,因为我不大懂这个,我不是学机械的,好吧


我帮你看看


谢谢你的花

发表于 2005-5-28 18:56:00 | 显示全部楼层
程序中的错误太多,下面是更改过的程序:
  1. (defun c:gear1(/ m z ang a dn dt1 bt1 d da db)
  2.    (setq m (getreal "\n请输入齿轮模数<2.5>:")
  3.   m (if m m 2.5)
  4.   z (getint "\n请输入齿轮齿数<18>:")
  5.   z (if z z 18)
  6.   ang1 (getangle "\n请输入齿轮左偏角<10>:")
  7.   ang1 (if ang1 ang1 (/ pi 18))
  8. ;  ang2 (getangle "\n请输入齿轮右偏角<0>:")
  9. ;  ang2 (if ang2 ang2 0)
  10.   a (getdist "\n请输入齿轮宽<13>:")
  11.   a (if a a 13)
  12.   dn (getdist "\n请输入内径<20>:")
  13.   dn (if dn dn 20)
  14.   dt1 (getdist "\n请输入齿轮旁台的直径<38>:")
  15.   dt1 (if dt1 dt1 38)
  16.   bt1 (getdist "\n请输入齿轮旁台的宽<7>:")
  17.   bt1 (if bt1 bt1 7)
  18.   d (* m z)
  19.   da (* m (+ z 2))
  20.   db (* m (- z 2.5))
  21.   p0 (getpoint "\n请输入起点:")
  22.    )
  23.    (setq p1 (polar p0 (/ pi 2) (/ dn 2))
  24.   p2 (polar p0 (/ pi 2) (/ db 2))
  25.   p3 (polar p2 0 a)
  26.   p4 (polar p0 0 a)
  27.   p5 (polar p4 (/ pi 2) (/ da 2))
  28.   p6 (polar p2 (- (/ pi 2) ang1) (/ (* m 2.25) (cos ang1)))
  29.   p7 (polar p4 (/ pi 2) (/ dt1 2))
  30.   p8 (polar p7 0 bt1)
  31.   p9 (polar p4 0 bt1)
  32.   p10 (polar p9 (/ pi 2) (/ dn 2))
  33.    )
  34.    (command "pline" p0 p1 p2 p6 p5 p3 p7 p8 p9 "")
  35.    (command "line" p2 p3 "" "line" p1 p10 "")
  36.    (COMMAND "MIRROR" "C" P9 P6 "" P0 P9 "N")
  37.    (princ)
  38. )
 楼主| 发表于 2005-5-28 20:49:00 | 显示全部楼层
佩服佩服啊。谢谢楼上。我执行了一下。就mirror那里好象有点问题。而且我也看不懂啊。我把mirror那一行去掉就可以执行成图了。 然后哪个m (if m m 2.5)这些都是意思就是默认的是2.5吗? 然后哪个p6算的太巧了。我笨蛋一个没想出来。。。原来可以那么简单。。。 然后还有一个问题就是p3连p7然后连p8.怎么执行完总是p3直接连p8呢?成一个斜线了,不明白啊 然后其实是自己乱加的哪个princ,其实看了半天书也没懂这个万一到底干吗地! 学会的知识是懂了怎么用if语句了,学会如何设置默认。懂了""的意思了。 然后由于p8到p9的连线我是不用的,所以我在command "pline"那行去掉了p9, 程序如下,希望高手可以帮忙把哪个mirror的帮忙解决下。我不会选择那些线啊。 感觉有进步。谢谢楼上啊。鲜花送您! 新程序如下 (defun c:gear1(/ m z ang a dn dt1 bt1 d da db)
(setq m (getreal "\n请输入齿轮模数<2.5>:")
m (if m m 2.5)
z (getint "\n请输入齿轮齿数<18>:")
z (if z z 18)
ang1 (getangle "\n请输入齿轮左偏角<10>:")
ang1 (if ang1 ang1 (/ pi 18))
; ang2 (getangle "\n请输入齿轮右偏角<0>:")
; ang2 (if ang2 ang2 0)
a (getdist "\n请输入齿轮宽<13>:")
a (if a a 13)
dn (getdist "\n请输入内径<20>:")
dn (if dn dn 20)
dt1 (getdist "\n请输入齿轮旁台的直径<38>:")
dt1 (if dt1 dt1 38)
bt1 (getdist "\n请输入齿轮旁台的宽<7>:")
bt1 (if bt1 bt1 7)
d (* m z)
da (* m (+ z 2))
db (* m (- z 2.5))
p0 (getpoint "\n请输入起点:")
)
(setq p1 (polar p0 (/ pi 2) (/ dn 2))
p2 (polar p0 (/ pi 2) (/ db 2))
p3 (polar p2 0 a)
p4 (polar p0 0 a)
p5 (polar p4 (/ pi 2) (/ da 2))
p6 (polar p2 (- (/ pi 2) ang1) (/ (* m 2.25) (cos ang1)))
p7 (polar p4 (/ pi 2) (/ dt1 2))
p8 (polar p7 0 bt1)
p9 (polar p4 0 bt1)
p10 (polar p9 (/ pi 2) (/ dn 2))
)
(command "pline" p0 p1 p2 p6 p5 p3 p7 p8 "")
(command "line" p2 p3 "" "line" p1 p10 "")
(princ)
)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-17 11:45 , Processed in 0.197962 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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