明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1814|回复: 3

链轮轴向视图程序

[复制链接]
发表于 2006-1-9 10:09 | 显示全部楼层 |阅读模式

这是一个链轮轴向视图的程序与前一阵子发的链轮径向视图程序是“姊妹程序”,是本人长期使用的程序,大家放心使用,如果喜欢请顶一下.

;;;链轮轴向视图程序
(defun c:wlb()
  (setvar "cmdecho" 0)
  (initget "08A 10A 12A 16A 20A 24A 28A 32A 40A 48A")
  (setq no (getkword "请输入链号08A,10A,12A,16A,20A,24A,28A,32A,40A或48A<08A>:"))
  (if (= no nil) (setq no "08A"))
  (setq z (getint "请输入齿数<12>:"))
  (if (null z) (setq z 12))
  ;;;以下根据用户输入条件确定链轮参数初始值,即确定与链轮咧合的链条参数
  (setq no (strcase no))
  (cond ((= no "08A") (setq p 12.7) (setq dr 7.95) (setq pt 14.38) (setq b1 7.85) (setq h 12.07))
 ((= no "10A") (setq p 15.875) (setq dr 10.16) (setq pt 18.11) (setq b1 9.4) (setq h 15.09))
 ((= no "12A") (setq p 19.05) (setq dr 11.91) (setq pt 22.78) (setq b1 12.57) (setq h 18.08))
 ((= no "16A") (setq p 25.4) (setq dr 15.88) (setq pt 29.29) (setq b1 15.75) (setq h 24.13))
 ((= no "20A") (setq p 31.75) (setq dr 19.05) (setq pt 35.76) (setq b1 18.9) (setq h 30.18))
 ((= no "24A") (setq p 38.1) (setq dr 22.23) (setq pt 45.44) (setq b1 25.22) (setq h 36.2))
 ((= no "28A") (setq p 44.45) (setq dr 25.4) (setq pt 48.87) (setq b1 25.22) (setq h 42.24))
 ((= no "32A") (setq p 50.8) (setq dr 28.585) (setq pt 58.55) (setq b1 31.55) (setq h 48.26))
 ((= no "40A") (setq p 63.5) (setq dr 39.68) (setq pt 71.55) (setq b1 37.85) (setq h 60.33))
 ((= no "48A") (setq p 76.2) (setq dr 47.63) (setq pt 87.83) (setq b1 47.35) (setq h 72.39))
 (t                         (setq dr 7.95) (setq pt 14.38) (setq b1 7.85) (setq h 12.07))
  )
  (setq ang1 (/ pi z))  ;;;ang1为180/z的弧度值,本角度为方便下面计算而定义
  ;;;以下进行链轮参数计算
  (setq angdd (/ (* 2 pi) z))                                                              ;;;每个齿对应的角度
  (setq re (* 0.12 dr (+ z 2)))                                                            ;;;齿面圆弧半径
  (setq ri (* dr 0.505))                                                                   ;;;齿沟圆半径
  (setq a (- (* (/ pi 180) 140) (/ (* pi 0.5) z)))                                         ;;;齿沟角
  (setq d (/ p (sin (/ pi z))))                                                            ;;;分度圆直径
  (setq da (fix (/ (+ (- (+ d (* p (- 1 (/ 1.6 z)))) dr) (- (+ d (* p 1.25)) dr) 6) 2)))   ;;;齿顶圆直径
  (setq df (- d dr))                                                                       ;;;齿根圆直径
  (setq dg (fix (- (* p (/ (cos ang1) (sin ang1))) (* h 1.04) 0.76 dr)))                   ;;;齿侧凸缘直径
  ;;;以下进行绘图点的定义与赋值
  (setq c1 (getpoint "请输入中心点:"))                                                     ;;;链轮中心点
  (setq c2 (polar c1 (* -1 (* angdd 0.5)) (* d 0.5)))
  (setq cr1 (polar c2 (- (+ pi (* a 0.5)) (* angdd 0.5)) (+ re ri)))
  (setq cr2 (polar c2 (- (- pi (* a 0.5)) (* angdd 0.5)) (+ re ri)))
  ;;;求三角1角度angm1
  (setq u1 (* d 0.5))
  (setq v1 (+ ri re))
  (setq w1 (distance c1 cr1))
  (setq s1 (* (+ u1 v1 w1) 0.5))
  (setq area1 (sqrt (* s1 (- s1 u1) (- s1 v1) (- s1 w1))))
  (setq h1 (/ (* 2 area1) w1))
  (setq l1 (sqrt (- (* u1 u1) (* h1 h1))))
  (setq angm1 (atan h1 l1))
  ;;;求三角2角度angm2
  (setq u2 (* da 0.5))
  (setq v2 re)
  (setq s2 (* 0.5 (+ u2 v2 w1)))
  (setq area2 (sqrt (* s2 (- s2 u2) (- s2 v2) (- s2 w1))))
  (setq h2 (/ (* 2 area2) w1))
  (setq l2 (sqrt (- (* u2 u2) (* h2 h2))))
  (setq angm2 (atan h2 l2))
  ;;;求齿顶圆弧对应的角度angm4
  (setq angm3 (- angm1 angm2))
  (setq angm4 (- angdd (* angm3 2)))
  ;;;继续进行绘图点的定义与赋值
  (setq pa1 (polar c1 (* -1 (+ (* angdd 0.5) angm3)) (* da 0.5)))
  (setq pa2 (polar c2 (- (+ pi (* 0.5 a)) (* angdd 0.5)) ri))
  (setq pa3 (polar c1 (* -1 (* angdd 0.5)) (- (* d 0.5) ri)))
  (setq pa4 (polar c2 (- (- pi (* a 0.5)) (* angdd 0.5)) ri))
  (setq pa5 (polar c1 (* -1 angm4 0.5) (* da 0.5)))
  (setq pa6 (polar c1 0 (* da 0.5)))
  (setq pa7 (polar c1 (* angm4 0.5) (* da 0.5)))
  ;;;关闭捕捉
  (setq os (getvar "osmode"))
  (setvar "osmode" 0)
  ;;;绘制轮齿
  (command "pline" pa1 "w" 0 "" "a" "ce" cr1 pa2 "s" pa3 pa4 pa5 "s" pa6 pa7 "")
  (command "change" (entlast) "" "p" "la" "轮廓线" "")
  (command "array" (entlast) "" "p" c1 z "" "")
  (command "circle" c1 c2)
  (command "change" (entlast) "" "p" "la" "中心线" "")
  (command "circle" c1 "d" dg)
  (command "change" (entlast) "" "p" "la" "轮廓线" "")
  ;;;打开捕捉
  (setvar "osmode" os)
  (princ)
  )

发表于 2006-1-15 14:03 | 显示全部楼层
谢楼主.程序很好用.我喜欢...也很感谢你的付出努力...我也喜欢做lisp..不介意的话加我QQ...呵...以后常联系...祝楼主工作顺利..程序越做越好.我在单位也是从事机械的..
发表于 2006-1-15 14:05 | 显示全部楼层

我的QQ:471955901,.加我时发"明经"

发表于 2006-1-18 13:37 | 显示全部楼层
dddddddd
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-3 21:29 , Processed in 0.535149 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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