
- (defun c:test ()
- (setq od (getdist "\n 输入皮带轮外径:"))
- (setq h (getdist "\n 输入轮齿高度:"))
- (setq n (getint "\n 输入皮带轮齿数:"))
- (setq rw (getdist "\n 输入皮带轮根部宽度:"))
- (setq sa (getangle "\n 输入皮带轮齿夹角:")) ;返回弧度值
- (setq rr (getdist "\n 输入根部倒圆角:"))
- (setq tipr (getdist "\n 输入顶部倒圆角:"))
- (setq p0 (getpoint "\n 输入一个中心点:"))
- (setq os (getvar "osmode"))
- (setvar "osmode" 0) ;捕捉设置为0
- (SETVAR "CMDECHO" 0)
- (command "undo" "g")
- (setq js (* Pi 0.5))
- (setq pt1 (polar p0 js (/ od 2)))
- (setq rota (/ (* (/ 180 n) pi) 180)) ;rota单齿一半的角度(弧度)
- (setq pt2 (polar p0 (- js rota) (/ od 2)))
- (setq pt3 (polar pt1 (* pi 1.5) H)) ;根部起点pt3的坐标
- (setq pt4 (polar pt3 0 (* rw 0.5))) ;根部终点pt4的坐标
- (setq pt5 (polar pt4 (- js (* sa 0.5)) (* H 1.1)));齿侧直线终点pt5坐标
- (command "arc" pt2 "c" p0 pt1) ;绘制外径弧线pt2pt1
- (setq en1 (entlast)) ;保存弧线pt2pt1为en1
- (command "line" pt3 pt4 "") ;绘制根部直线
- (setq en2 (entlast)) ;保存直线pt3pt4为en2
- (command "line" pt4 pt5 "") ;齿侧直线pt4pt5
- (setq p45 (mapcar '(lambda (a b) (/ (+ a b) 2)) pt4 pt5))
- (setq en3 (entlast)) ;保存齿侧直线pt4pt5为en3
- (command "fillet"
- "r"
- rr
- "fillet"
- (list en2 pt3)
- (list en3 p45)
- ) ;绘制根部倒圆角
- (setq en4 (entlast))
- (command "fillet"
- "r"
- tipr
- "fillet"
- (list en3 p45)
- (list en1 pt2)
- ) ;绘制顶部倒圆角
- (setq en5 (entlast)
- ent en5
- )
- (setq ss nil)
- (setq ss (ssadd))
- (command "mirror" en1 en2 en3 en4 en5 "" pt1 pt3 "n")
- (while (setq ent (entnext ent))
- (ssadd ent ss)
- )
- (command "-array" en1 en2 en3 en4 en5 ss "" "p" p0 n "" "")
- (setvar "osmode" os)
- (command "undo" "e")
- (SETVAR "CMDECHO" 1)
- (princ)
- )
|