基于AutoLISP的渐开线圆柱齿轮参数化设计及绘图系统

合集下载

渐开线直齿圆柱齿轮参数化设计

渐开线直齿圆柱齿轮参数化设计

渐开线直齿圆柱齿轮参数化设计渐开线直齿圆柱齿轮是一种常见的传动装置,它广泛应用于各种机械设备中。

参数化设计是一种通过设置可变参数,快速、灵活地生成各种规格的齿轮模型的方法。

本文将介绍渐开线直齿圆柱齿轮的参数化设计方法,并详细描述其参数设计过程。

1.渐开线直齿圆柱齿轮的基本参数渐开线直齿圆柱齿轮的基本参数包括模数(m)、压力角(α)、齿数(z)、齿轮宽度(b)等。

其中,模数是齿轮的主要几何参数,表示每个齿所占据的齿轮圆周长度,是设计齿轮的基本参考值。

压力角是齿轮的设计角度,齿数决定了齿轮的大小,齿轮宽度表示齿轮的宽度尺寸。

2.渐开线直齿圆柱齿轮的几何计算3.渐开线直齿圆柱齿轮的绘制方法4.渐开线直齿圆柱齿轮的参数化设计过程1)确定齿轮的基本参数,如模数、压力角、齿数、齿轮宽度等。

2)进行齿轮的几何计算,计算齿轮圆直径、齿距、齿宽等参数。

3)绘制齿轮的模型,可以通过数学方法计算齿轮的轮廓图,也可以通过绘图软件生成齿轮的模型。

4)设置可变参数,将齿轮的各个参数进行参数化设置,使得齿轮可以根据具体需求自由调整。

5)进行参数化设计,根据具体需求设置合适的参数值,生成所需规格的齿轮模型。

5.渐开线直齿圆柱齿轮的参数化设计应用渐开线直齿圆柱齿轮的参数化设计应用广泛,可以配合其他机械设备的参数化设计,在产品设计和生产过程中,快速生成各种规格的齿轮模型。

通过参数化设计,可以灵活调整齿轮的大小、齿轮的几何形状等,提高设计效率,减少生产成本。

总结:渐开线直齿圆柱齿轮是一种常见的传动装置,参数化设计是一种通过设置可变参数,快速生成各种规格的齿轮模型的方法。

该设计方法主要包括确定齿轮的基本参数、进行几何计算、绘制齿轮模型、设置可变参数和进行参数化设计等步骤。

参数化设计可以帮助提高设计效率、减少生产成本,广泛应用于各种机械设备的设计和生产中。

利用AutoLISP语言实现渐开线齿轮齿廓的参数化绘制

利用AutoLISP语言实现渐开线齿轮齿廓的参数化绘制

本 文利用 A tLS uo IP语言 编写 了绘 制渐开线 齿轮齿 廓及 三维实 体 形成 的程序 , 根据展成 法的切齿原理( 如图 1 , )利用齿 条插刀动态仿 真 加工齿廓和生成标 准渐开线齿轮 的方法 , 实现齿轮的参数化绘制
a展成法加工齿 轮 ) b完成齿轮齿廓 ) 图 3齿 轮 齿 廓 形 成 图 () 割轴孑 4切 L 创建 圆柱 , 并与 以上齿轮做差集( 用齿轮减 去轴孑 圆柱 ) 完成全部 L , 建模 过 程 。 仿真程序略 。 2 绘制渐开线齿轮三维实体造 型 _ 3 在输 入参数 动态 加工 出渐开线 齿廓 的基础 上 ,程序 中采用 “x e— t d” r e命令生成一个三维标准齿轮。 由主程序 中输入建立三维齿轮的 u 再 系列参数 , : 轮宽度 、 如 齿 轴径 、 键槽 尺寸 、 轮辐宽度 、 轮毂 半径等 尺 寸, 编程 中采 用 “i l” “xrd ” “u t c” “yid r等命令 进行 布 cr e 、 et e 、sbr t、cl e” c u a n 尔“ ” 算 来 实 现 添 加 其 它 结 构 , 差 运 最终 完成 齿 轮 的三 维 造 型 。 仿真程序略。
参 考 文 献 [] 1 肖莉. 于 Auo IP渐开线齿轮 三维 实体的参数化设 计[] 基 tLS I 制 造 业 自化 。 1(0: 7 9 2 01) 9 —19 0 1 [ 唐觉明. 于 Auo IP技 术的渐 开线齿轮参数化三 维设 计[] 2] 基 tLS J 煤 矿机 械 ,0 91) 0 — 1 2 0 (0: 9 2 2 1 图 2A T HS U O P流 程 图 2 . 2渐开线齿轮齿廓二维图形的绘 制 基于 上述 齿 轮展 成法 原 理 ,使用 A tLS uo IP语 言编 制 程序 名 为 C iu .p应用程序。首先 , Auo A hL n1 s 在 t D中加载该程序 , C 然后 , 运行名为 C iu hL n的 dfn函数 , 入所需 的参数后 , e u 输 程序将 自行完成计算 并在屏 幕上 自动演示渐开线齿轮展成过程。

基于AutoCAD渐开线直齿圆柱齿轮的三维建模方法

基于AutoCAD渐开线直齿圆柱齿轮的三维建模方法

渐开线齿轮是各种机械传动中的常用零件,工程人员在设计中经常需要创建齿轮三维模型。

由于渐开线齿轮端面齿廓为渐开线,而且轮齿厚度与齿轮模数相关,所以用AutoCAD建立渐开线圆柱齿轮三维模型十分困难。

目前,国内多采用模拟切削加工方法进行齿轮三维建模,但该方法比较复杂,一般设计人员难以做到,而且对硬件要求较高。

本文介绍的方法是根据渐开线形成原理,近似绘制出齿形,然后通过拉伸、阵列以及合并,实现渐开线圆柱齿轮三维建模,具体模型如图1所示,其中模数m=3,齿数z=20,压力角α=20°,齿轮宽b=50mm,孔径d n=30mm,键槽宽为8mm,键槽深t=3.3mm。

图1 渐开线直齿圆柱齿轮模型1 渐开线直齿圆柱齿轮几何参数计算分度圆直径d=mz=6×20=120mm:齿顶圆直径d a=m(z+2) =6×(20+2)=132mm;齿根圆直径d f=m(z-2)=6×(20-2.5)= 105mm:基圆直径d b=120×cos20°≈112.8mm。

2 渐开线绘制方法2.1 渐开线形成直线在圆上纯滚动时,直线上一点K的轨迹称为该圆的渐开线,该圆称为渐开线的基圆;直线称为渐开线的发生线。

因此,发生线在基圆上滚过的长度等于基圆上被滚过的相应弧长。

2.2 渐开线的绘制方法根据渐开线性质,在绘制渐开线时,可以绘制与弧长相等长度的发生线,其上的端点作为渐开线的轨迹点,之后将这些点用样条线光滑连接起来,就得到一段渐开线。

渐开线绘制从基圆开始,到齿顶圆结束;基圆到齿根圆部分为非渐开线,用直线和圆弧绘制。

绘制时,只需要绘制出齿的一侧齿形轮廓,再通过镜像,绘制出另一侧的齿行轮廓。

为绘制基圆到齿顶圆部分渐开线,应事先对基圆进行等分,可将其分为40等份,之后在基圆上绘制一部分切线,取其长度为对应的弧长。

40等份的每段弧长L=πd b/40≈3.14×112.8/140≈8.85mm;若基圆上的点不算,则第1个点的切线长是8.85mm,第2个点是2×8.85=17.7mm,第3个是3×8.85=26.55mm,第4个是4×8.85=35.4mm,依此类推,最后将这些切线的端点用样条曲线光滑相连,即可得到一条渐开线。

AUTOLISP圆柱齿轮程序

AUTOLISP圆柱齿轮程序

(defun c:ch () ;定义绘制圆柱齿轮三维图形子程序(setq ak 1 bk 0 ck 1 dk 0 ek 0)(command "osmode" 0)(command "ortho" 0)(command "layer" "m" "aa" "c" 1 "" "") ;建立图层(command "layer" "m" "bb" "c" 5 "" "")(command "layer" "m" "cc" "c" 7 "" "")(setq qqq (load_dialog "chh.dcl")) ;调用显示主对话框程序(if (not(new_dialog "ch0" qqq))(exit)) ;显示主对话框(tianchong "tu0" "tu_00") ;调用填充幻灯片子程序(action_tile "zhch" "(setq ak 1)(zhuanhuan0)") ;激活直齿轮控件(action_tile "xch" "(setq bk 1)(zhuanhuan0)") ;激活斜齿轮控件(action_tile "accept" "(done_dialog 2)") ;点击确定按钮则关闭对话框(action_tile "cancel" "(exit)")(start_dialog)(zhchun) ;调用齿轮子级子程序);defun(defun zhuanhuan0() ;转换主对话框的输入(setq ak (atof(get_tile "zhch")))(setq bk (atof(get_tile "xch")))(if (= ak 1)(tianchong "tu0" "tu_00")(tianchong "tu0" "tu_01")));zhuanhuan0(defun zhchun () ;定义直齿子级对话框程序(if (= ak 1)(progn ;直齿子级对话框程序(if (not(new_dialog "ch22" qqq))(exit)) ;显示对话框(tianchong "tu2" "tu_1")(action_tile "zht" "(zhuanhuan)") ;激活整体式控件(action_tile "fb" "(zhuanhuan)") ;激活腹板式控件(action_tile "lf" "(zhuanhuan)") ;激活轮辐式控件(action_tile "msh" "(zhuanhuan)") ;激活模数控件(action_tile "chsh" "(zhuanhuan)") ;激活齿数控件(action_tile "d" "(zhuanhuan)") ;激活轴径控件(action_tile "ksh" "(zhuanhuan)") ;激活板孔数控件(action_tile "accept" "(done_dialog 2)");点击确定按钮则关闭对话框(action_tile "cancel" "(exit)")(start_dialog)))(if (= bk 1)(progn ;斜齿子级对话框程序(if (not(new_dialog "ch4" qqq))(exit)) ;显示对话框(tianchong "tu3" "tu_4")(action_tile "zht1" "(zhuanhuan1)") ;激活整体式控件(action_tile "fb1" "(zhuanhuan1)") ;激活腹板式控件(action_tile "lf1" "(zhuanhuan1)") ;激活轮辐式控件(action_tile "msh1" "(zhuanhuan1)") ;激活模数控件(action_tile "chsh1" "(zhuanhuan1)") ;激活齿数控件(action_tile "d1" "(zhuanhuan1)") ;激活轴径控件(action_tile "ksh1" "(zhuanhuan1)") ;激活板孔数控件(action_tile "xj" "(zhuanhuan1)") ;激活螺旋角-度控件(action_tile "xj1" "(zhuanhuan1)") ;激活螺旋角-分控件(action_tile "xj2" "(zhuanhuan1)") ;激活螺旋角-秒控件(action_tile "yx" "(zhuanhuan1)") ;激活右旋控件(action_tile "zx" "(zhuanhuan1)") ;激活左旋控件(action_tile "accept" "(done_dialog 2)");点击确定按钮则关闭对话框(action_tile "cancel" "(exit)")(start_dialog)))(js) ;调用计算直齿轮参数子程序);defun(defun zhuanhuan() ;转换子级对话框的输入1(setq ck (atof(get_tile "zht")))(setq dk (atof(get_tile "fb")))(setq ek (atof(get_tile "lf")))(setq m (atof(get_tile "msh")))(setq z (atof(get_tile "chsh")))(setq d (atof(get_tile "d")))(setq n (atof(get_tile "ksh")))(if (= ck 1)(tianchong "tu2" "tu_1"))(if (= dk 1)(tianchong "tu2" "tu_2"))(if (= ek 1)(tianchong "tu2" "tu_3"))(if (or(= ck 1)(= ek 1))(mode_tile "ksh" 1)(mode_tile "ksh" 0)));zhuanhuan(defun zhuanhuan1() ;转换子级对话框的输入1(setq ck (atof(get_tile "zht1")))(setq dk (atof(get_tile "fb1")))(setq ek (atof(get_tile "lf1")))(setq m (atof(get_tile "msh1")))(setq z (atof(get_tile "chsh1")))(setq d (atof(get_tile "d1")))(setq n (atof(get_tile "ksh1")))(setq bet (atof(get_tile "xj")))(setq bet1 (atof(get_tile "xj1")))(setq bet2 (atof(get_tile "xj2")))(setq yx1 (atof(get_tile "yx")))(setq zx1 (atof(get_tile "zx")))(if (= ck 1)(tianchong "tu3" "tu_4"))(if (= dk 1)(tianchong "tu3" "tu_5"))(if (= ek 1)(tianchong "tu3" "tu_6"))(if (or(= ck 1)(= ek 1))(mode_tile "ksh1" 1)(mode_tile "ksh1" 0)));zhuanhuan1(defun tianchong (key image_name / x y) ;定义填充幻灯片子程序(start_image key) ;开始填充(setq x (dimx_tile key) ;将控件尺寸赋予变量x、yy (dimy_tile key))(fill_image 0 0 x y 131) ;填充背景色(slide_image 0 1 (* 2 x)(- y 2) image_name) ;填充幻灯片(end_image) ;结束填充) ;defun(defun js () ;定义计算齿轮参数子程序(setq rf (/ (* (- z 2.5) m) 2)) ;计算齿根圆半径(setq rj (/ (* m z (/ (* 20 pi) 180) 2))) ;计算基圆半径(setq r (/ (* z m) 2)) ;计算分度圆半径(setq ra (/ (* (+ z 2) m) 2)) ;计算齿顶圆半径(setq P (* m pi)) ;计算齿距(setq L (* 0.35 2 r)) ;设置齿宽--0.35为齿宽系数(setq dj (* 0.5 m)) ;设置倒角尺寸(if (= bk 1)(progn(setq btt (+ bet (/ bet1 60) (/ bet2 3600)));btt为螺旋角变量(setq bt0 (- 90 btt)) ;bt0为螺旋角与水平线夹角变量(setq bt (* bt0 (/ pi 180))) ;将bt0转换为弧度(if (= zx1 1)(setq bt (- 0 bt))) ;左旋的螺旋角为负值(setq lxx (/ L (/ (sin bt) (cos bt))))))(setq dc (/ 36.0 z));确定切削齿轮毛坯的旋转单位角,即单位齿距所对应的1/10圆周角(setq LL (/ (* 1.25 m)(cos (* 20 (/ pi 180))))) ;计算齿条顶部的斜线长(setq s0 (list 200.0 30.0 0.0)) ;设置图形基准点(setq s1 (polar s0 0 (/ P 4))) ;设置齿条廓线上一点(setq s2 (polar s0 pi (/ P 4))) ;设置pt1对称于pt0的点(setq s3 (polar s1 (* 110 (/ pi 180)) LL)) ;计算齿条顶部右侧端点坐标(setq s5 (polar s1 (* -70 (/ pi 180)) LL)) ;计算齿条根部右侧端点坐标(setq s4 (polar s2 (* 70 (/ pi 180)) LL)) ;计算齿条顶部左侧端点坐标(setq s6 (polar s2 (* 250 (/ pi 180)) LL)) ;计算齿条根部左侧端点坐标(setq s7 (polar s6 (* -90 (/ pi 180)) LL)) ;齿条上退后于pt6的一点(command "layer" "s" "aa" "") ;设置当前层(command "pline" s7 s6 s4 s3 s5) ;用多段线连接齿条上一个齿上的各点(setq i 1)(while (<= i 7) ;利用循环复制齿条上的7各齿(共8个齿) (setq s6 (polar s6 0 P))(setq s4 (polar s4 0 P))(setq s3 (polar s3 0 P))(setq s5 (polar s5 0 P))(command s6 s4 s3 s5)(setq i (+ i 1)) ;改变循环变量值);while(setq s8 (polar s5 (* -90 (/ pi 180)) LL)) ;最后一个齿上的与s7对应的点(command s8 "c") ;结束绘制齿条(setq st (polar s0 (* 180 (/ pi 180))(* 4 P))) ;定义移动齿条的定位点(command "move" "L" "" s0 st) ;将齿条向左移动4个齿距(setq k0 (entlast)) ;为完成的齿条命名(if (= bk 1)(xch)) ;调用绘制斜齿轮毛坯圆柱子程序(if (= dk 1)(setq Lk (* 1.2 L))) ;计算腹板式齿轮轮毂的宽度(if (= ak 1) ;若为直齿轮,则往下运行(progn(command "layer" "s" "cc" "")(setq p0 (polar s0 (* 90 (/ pi 180)) r)) ;定义齿轮毛坯圆的中心点(command "circle" p0 ra) ;绘制齿轮毛坯圆(command "region" "L" "") ;将该毛坯圆转换为面域(setq k2 (entlast)) ;为齿轮毛坯圆命名))(qzh) ;调用切制齿轮子程序);js(defun qzh () ;定义切制齿轮子程序(command "layer" "s" "bb" "")(command "view" "swiso") ;设置三维图形绘图环境(setq j 1) ;设置切制齿轮循环的循变量初值(while (<= j z) ;外循环控制切制纵齿数(setq i 1) ;定义切制一个齿的循环变量初值(while (<= i 10) ;内循环控制每个齿的切制(command "rotate" k2 "" p0 dc) ;旋转毛胚(setq yy (* r dc (/ pi 180) i)) ;计算齿条切制齿轮时移动量;dc (/ pi 180)为毛坯旋转角度的弧度值;(* r dc (/ pi 180) )为毛坯旋转dc角所对应的分度圆弧长(setq pt (polar s0 0 yy)) ;定义齿条移动的定位点(command "copy" k0 "" s0 pt) ;复制并移动齿条(setq k1 (entlast))(if (= ak 1) ;若为直齿则将齿轮毛坯圆建立面域(progn(command "region" "L" "") ;将复制并移动的齿条建立面域(setq k1 (entlast)) ;命名面域(command "delay" 10) ;延时))(command "subtract" k2 "" k1 "") ;切制齿轮(setq i (+ i 1)) ;改变内循环变量值);while---内(setq j (+ j 1)) ;改变外循环变量值);while----外(command "erase" k0 "") ;擦除齿条(setq x0 (car p0) y0 (cadr p0)) ;提取基准点的x、y坐标(if (= ak 1) ;若为直齿,则将毛坯圆拉伸成齿轮(progn(command "layer" "s" "cc" "")(command "extrude" k2 "" L 0) ;拉伸齿轮(setq k2 (entlast)) ;命名齿轮))(if(= ck 1)(progn ;整体式(command "cylinder" p0 (/ d 2) L) ;绘制轴孔圆柱(setq yzh (entlast))(command "subtract" k2 "" yzh "") ;切制轴孔))(if (= dk 1)(progn ;腹板式(setq LLP (/ (- Lk L) 2)) ;计算轮毂凸出部分的尺寸(setq dg (* 1.6 d)) ;计算轮毂直径(setq ret (- rf 8)) ;计算轮缘直径(command "cylinder"(list x0 y0 0) ret L) ;绘制轮缘圆柱(setq yzh1 (entlast))(command "subtract" k2 "" yzh1"") ;切制轮缘(command "ucs" "n" (list x0 y0 (/ L 2))) ;移动坐标系(command "ucs" "x" "") ;旋转坐标系(setq cu (* 0.15 L)) ;腹板厚度的一半(setq cup (- (/ L 2) cu)) ;凹槽深(setq pu0 (list (/ d 2) 0) ;凹槽断面上各点的坐标pu12 (list ret 0)pu1 (list (/ d 2)(- (/ Lk 2) dj))pu2 (list (+ (/ d 2) dj)(/ Lk 2))pu3 (list (- (/ dg 2) dj)(/ Lk 2))pu4 (list (/ dg 2)(-(/ Lk 2) dj))pu5 (list (+ (/ dg 2)(/ (/ Lk 2) 40)) 0)pu11 (list ret (/ L 2))pu10 (list (- ret dj)(- (/ L 2) dj))pu9 (list (- (- ret dj)(/ (/ L 2) 40)) 0)pu6 (list (+ (/ dg 2)(/ (/ L 2) 40)) cu)pu7 (list (- (- ret dj)(/ (/ L 2) 40)) cu))(command "line" pu0 pu1 "") ;凹槽断面上各点连线(setq ef1(entlast))(command "line" pu1 pu2 "")(setq ef2(entlast))(command "line" pu2 pu3 "")(setq ef3(entlast))(command "line" pu3 pu4 "")(setq ef4(entlast))(command "line" pu4 pu5 "")(setq ef5(entlast))(command "line" pu6 pu7 "")(setq ef6(entlast))(command "line" pu0 pu12 "")(setq ef7(entlast))(command "line" pu12 pu11 "")(setq ef8(entlast))(command "line" pu11 pu10 "")(setq ef9(entlast))(command "line" pu10 pu9 "")(setq ef10(entlast))(command "fillet" "r" dj "fillet" "t" "t" ef5 ef6)(setq ef11(entlast))(command "fillet" "r" dj "fillet" ef6 ef10)(setq ef12(entlast))(command "region" ef1 ef2 ef3 ef4 ef5 ef6 ef7ef8 ef9 ef10 ef11 ef12 "")(setq ef13 (entlast))(command "mirror" ef13 "" pu0 pu12 "n") ;镜像断面图形(setq ef14 (entlast))(command "union" ef13 ef14 "") ;合并上下断面凹槽(setq ef15 (entlast))(command "revolve" ef15 "" "y" 360) ;旋转凹槽断面成型(setq ef16 (entlast))(command "union" k2 ef16 "") ;合并凹槽实体与轮缘(command "ucs" "x" -90)(setq dddg (+ (* 0.5 (- ret (/ dg 2)))(/ dg 2))) ;计算板孔中心定位圆半径(setq rrr (* 0.25 (- ret (/ dg 2)))) ;板孔半径(command "cylinder" (list dddg 0 (- (/ L 4))) rrr L) ;板孔圆柱(setq ef17 (entlast))(setq jdd (/ (* pi (/ 360 n)) 180)) ;板孔所对的圆心角(setq pg1 (list (+ dddg rrr) 0 (- 0 cu))) ;计算板孔下端面倒角图形上各点的坐标(setq pg2 (list (+ (+ dddg rrr) dj) 0 (- 0 cu)))(setq pg3 (list (+ dddg rrr) 0 (+ (- 0 cu) dj)))(command "3dpoly" pg1 pg2 pg3 "c") ;画出下端面倒角的断面图形(setq eww (entlast))(command "revolve" eww "" (list dddg 0 0)(list dddg 0 20) 360) ;旋转出齿轮下端面倒角(setq eeww (entlast))(setq pgg1 (list (+ dddg rrr) 0 cu)) ;计算板孔上端面倒角图形上各点的坐标(setq pgg2 (list (+ (+ dddg rrr) dj) 0 cu))(setq pgg3 (list (+ dddg rrr) 0 (- cu dj)))(command "3dpoly" pgg1 pgg2 pgg3 "c") ;画出上端面倒角的断面图形(setq ewww (entlast))(command "revolve" ewww "" (list dddg 0 0)(list dddg 0 20) 360) ;旋转出齿轮上端面倒角(setq eewww (entlast))(setq ii 1)(while (<= ii n)(command "copy" ef17 "" (list dddg 0 0)(polar (list 0 0 0)(* ii jdd) dddg))(setq ef18 (entlast))(command "copy" eeww "" (list dddg 0 0)(polar (list 0 0 0)(* ii jdd) dddg))(setq ef19 (entlast))(command "copy" eewww "" (list dddg 0 0)(polar (list 0 0 0)(* ii jdd) dddg))(setq ef20 (entlast))(command "subtract" k2 "" ef18 ef19 ef20 "")(setq ii (+ ii 1)));whlie(command "subtract" k2 "" ef17 eeww eewww "")));dk=1(if (= ek 1)(progn ;轮辐式(setq dg (* 1.6 d)) ;计算轮毂直径(setq ret (- rf 15)) ;计算轮缘直径(command "cylinder"(list x0 y0 0) ret L) ;绘制轮缘圆柱(setq yzh1 (entlast))(command "subtract" k2 "" yzh1"") ;切制轮缘(command "ucs" "n" (list x0 y0 (/ L 2))) ;移动坐标系(command "ucs" "x" "") ;旋转坐标系(setq hhu (* 0.8 d)) ;轮辐系数H (setq hu (* 0.8 hhu)) ;轮辐系数H1 (setq cu (* 0.2 hhu)) ;腹板厚度的一半(setq cup (- (/ L 2) cu)) ;凹槽深(setq pu0 (list (/ d 2) 0) ;凹槽断面上各点的坐标pu12 (list ret 0)pu1 (list (/ d 2)(- (/ L 2) dj))pu2 (list (+ (/ d 2) dj)(/ L 2))pu3 (list (- (/ dg 2) dj)(/ L 2))pu4 (list (/ dg 2)(-(/ L 2) dj))pu5 (list (+ (/ dg 2)(/ (/ L 2) 40)) 0)pu11 (list ret (/ L 2))pu10 (list (- ret dj)(- (/ L 2) dj))pu9 (list (- (- ret dj)(/ (/ L 2) 40)) 0)pu6 (list (+ (/ dg 2)(/ (/ L 2) 40)) cu)pu7 (list (- (- ret dj)(/ (/ L 2) 40)) cu));setq(command "line" pu0 pu1 "") ;凹槽断面上各点连线(setq ef1(entlast))(command "line" pu1 pu2 "")(setq ef2(entlast))(command "line" pu2 pu3 "")(setq ef3(entlast))(command "line" pu3 pu4 "")(setq ef4(entlast))(command "line" pu4 pu5 "")(setq ef5(entlast))(command "line" pu6 pu7 "")(setq ef6(entlast))(command "line" pu0 pu12 "")(setq ef7(entlast))(command "line" pu12 pu11 "")(setq ef8(entlast))(command "line" pu11 pu10 "")(setq ef9(entlast))(command "line" pu10 pu9 "")(setq ef10(entlast))(command "fillet" "r" dj "fillet" "t" "t" ef5 ef6)(setq ef11(entlast))(command "fillet" "r" dj "fillet" ef6 ef10)(setq ef12(entlast))(command "region" ef1 ef2 ef3 ef4 ef5 ef6 ef7ef8 ef9 ef10 ef11 ef12 "")(setq ef13 (entlast))(command "mirror" ef13 "" pu0 pu12 "n") ;镜像断面图形(setq ef14 (entlast))(command "union" ef13 ef14 "") ;合并上下断面凹槽(setq ef15 (entlast))(command "revolve" ef15 "" "y" 360) ;旋转凹槽断面成型(setq ef16 (entlast))(command "union" k2 ef16 "") ;合并凹槽实体与轮缘(setq cuh (- L (* 0.8 2 cu))) ;肋板厚度(setq su 10) ;肋板宽度尺寸(if(and(> d 6)(<= d 8))(setq b 2 t1 1)) ;根据轴孔直径d确定键槽宽度b及轮毂键槽尺寸t1(if(and(> d 8)(<= d 10))(setq b 3 t1 1.4))(if(and(> d 10)(<= d 12))(setq b 4 t1 1.8))(if(and(> d 12)(<= d 17))(setq b 5 t1 2.3))(if(and(> d 17)(<= d 22))(setq b 6 t1 2.8))(if(and(> d 22)(<= d 30))(setq b 8 t1 3.3))(if(and(> d 30)(<= d 38))(setq b 10 t1 3.3))(if(and(> d 38)(<= d 44))(setq b 12 t1 3.3))(if(and(> d 44)(<= d 50))(setq b 14 t1 3.8))(if(and(> d 50)(<= d 58))(setq b 16 t1 4.3))(if(and(> d 58)(<= d 65))(setq b 18 t1 4.4))(if(and(> d 65)(<= d 75))(setq b 20 t1 4.9))(if(and(> d 75)(<= d 85))(setq b 22 t1 5.4))(if(and(> d 85)(<= d 95))(setq b 25 t1 5.4))(if(and(> d 95)(<= d 110))(setq b 28 t1 6.4))(setq puu1 (list (- 0 (/ su 2))(/ cuh 2)(+ (/ d 2) t1 2)) ;肋板断面上各点的坐标puu2 (list (+ 0 (/ su 2))(/ cuh 2)(+ (/ d 2) t1 2))puu3 (list (+ 0 (/ su 2))(- 0 (/ cuh 2))(+ (/ d 2) t1 2))puu4 (list (- 0 (/ su 2))(- 0 (/ cuh 2))(+ (/ d 2) t1 2)))(command "3dpoly" puu1 puu2 puu3 puu4"c") ;画出上端面倒角的断面图形(setq ewwww (entlast))(command "extrude" ewwww "" (- rf(/ d 2) 8) 0) ;拉伸肋板(setq err (entlast))(command "ucs" "w" "")(command "array" err "" "p" (list x0 y0 0) 6 360 "y") ;阵列肋板(command "union" "all" "") ;合并肋板与轮毂、轮缘(setq k2 (entlast))(command "ucs" "n" (list x0 y0 0)) ;绘制板槽图形(setq pq1 (list (/ hhu 2) 0)) ;第一条线段两端点坐标(setq pq2 (list (/ hu 2) ra))(command "line" pq1 pq2 "") ;连接此两点(setq et (entlast))(setq pq3 (polar (list 0 0 0)(/(* pi 120) 180)(/ hhu 2)));第二条线段两端点坐标(setq pq4 (polar pq2 (/(* pi 330) 180)(- ra hu)))(command "line" pq3 pq4 "") ;连接此两点(setq ett (entlast))(setq pq5 (polar (list 0 0)(/(* pi 46) 180) (- ret 8))) ;圆弧槽两端点坐标(setq pq6 (polar (list 0 0)(/(* pi 76) 180) (- ret 8)))(command "arc" "c" (list 0 0 0) pq5 pq6) ;画出圆弧槽上的圆弧(setq eett (entlast))(setq hff (atan(/ (* 0.5 (- hhu hu)) ra))) ;计算线1的角度(setq pqq1 (polar (list (/ hhu 2) 0 0)(+ (/ (* 90 pi) 180) hff) (- (- ret 8) 6))) ;线1上中间一点的端点坐标(setq pqq3 (polar (list 0 0)(/(* pi 50) 180) (- ret 8))) ;计算圆弧上中间一点的坐标(command "fillet" "r" 10 "fillet" et ett) ;倒两直线圆弧(setq eete (entlast))(command "fillet" "r" 10 "fillet" pqq1 pqq3) ;倒第一直线和圆弧的圆角(setq eetee (entlast))(setq jddd (angle (polar (list 0 0 0)(/(* pi 120) 180)(/ hhu 2));求pq3,pq4两点连线的角度(polar pq2 (/(* pi 330) 180)(- ra hu))))(setq pqq2 (polar pq3 jddd (- (- ret 8) 10))) ;线2上中间一点的端点坐标(command "fillet" "r" 10 "fillet" pqq2 pqq3) ;倒第二直线和圆弧的圆角(setq eette (entlast))(command "region" eete eette eett ett et eetee"") ;将圆弧槽作成面域(setq efg (entlast))(command "extrude" efg "" L 0) ;拉伸圆弧槽(setq efgg (entlast))(command "array" efgg "" "p" (list 0 0) 6 360 "y")(command "subtract" k2 "" "all" "")));ek=1(command "ucs" "w" "")(if(and(> d 6)(<= d 8))(setq b 2 t1 1)) ;根据轴孔直径d确定键槽宽度b及轮毂键槽尺寸t1(if(and(> d 8)(<= d 10))(setq b 3 t1 1.4))(if(and(> d 10)(<= d 12))(setq b 4 t1 1.8))(if(and(> d 12)(<= d 17))(setq b 5 t1 2.3))(if(and(> d 17)(<= d 22))(setq b 6 t1 2.8))(if(and(> d 22)(<= d 30))(setq b 8 t1 3.3))(if(and(> d 30)(<= d 38))(setq b 10 t1 3.3))(if(and(> d 38)(<= d 44))(setq b 12 t1 3.3))(if(and(> d 44)(<= d 50))(setq b 14 t1 3.8))(if(and(> d 50)(<= d 58))(setq b 16 t1 4.3))(if(and(> d 58)(<= d 65))(setq b 18 t1 4.4))(if(and(> d 65)(<= d 75))(setq b 20 t1 4.9))(if(and(> d 75)(<= d 85))(setq b 22 t1 5.4))(if(and(> d 85)(<= d 95))(setq b 25 t1 5.4))(if(and(> d 95)(<= d 110))(setq b 28 t1 6.4))(command "facetres" 4) ;设置渲染精度参数(setq pw1 (list (- x0 (/ b 2)) y0) ;确定绘制轮毂键槽上的四点坐标pw2 (list (+ x0 (/ b 2)) y0)pw3 (list (- x0 (/ b 2))(- y0 (+(/ d 2) t1)))pw4 (list (+ x0 (/ b 2))(- y0 (+(/ d 2) t1))))(command "pline" pw1 pw2 pw4 pw3 pw1 "") ;用多段线绘制轮毂键槽平面图形(setq e5(entlast))(if (or(= ck 1)(= ek 1))(progn ;整体式和轮辐式(command "extrude" e5 "" L 0) ;将键槽平面图形拉伸为三维图形(setq ee2(entlast))(command "subtract" k2 "" ee2 "") ;切除键槽))(if (= dk 1)(progn ;腹板式(command "move" e5 "" (list 0 0 0)(list 0 0 (- 0 LLP)))(command "extrude" e5 "" Lk 0) ;将键槽平面图形拉伸为三维图形(setq ee2(entlast))(command "subtract" k2 "" ee2 "") ;切除键槽))(if (= ck 1)(progn ;整体式--切制轴孔倒角(setq pf1 (list (+ x0(/ d 2)) y0)) ;计算齿轮下端面轴孔倒角图形上各点的坐标(setq pf2 (list (+ x0 dj (/ d 2)) y0))(setq pf3 (list (+ x0 (/ d 2)) y0 dj))(command "3dpoly" pf1 pf2 pf3 "c") ;画出下端面轴孔倒角的断面图形(setq ew (entlast))(command "revolve" ew "" (list x0 60 0)(list x0 60 20) 360) ;旋转出齿轮下端面轴孔倒角(setq es (entlast))(setq pr1 (list (+ x0 (/ d 2)) y0 L)) ;计算齿轮上端面轴孔倒角图形上各点的坐标(setq pr2 (list (+ x0 dj (/ d 2)) y0 L))(setq pr3 (list (+ x0 (/ d 2)) y0 (- L dj)))(command "3dpoly" pr1 pr2 pr3 "c") ;画出上端面轴孔倒角的断面图形(setq el (entlast))(command "revolve" el "" (list x0 60 0)(list x0 60 20) 360) ;旋转出齿轮上端面倒轴孔角(setq ed (entlast))))(if (= dk 1)(progn ;腹板式--切制轴孔倒角(setq pf1 (list (+ x0(/ d 2)) y0 (- 0 LLP))) ;计算齿轮下端面轴孔倒角图形上各点的坐标(setq pf2 (list (+ x0 dj (/ d 2)) y0 (- 0 LLP)))(setq pf3 (list (+ x0 (/ d 2)) y0 (+ (- 0 LLP) dj)))(command "3dpoly" pf1 pf2 pf3 "c") ;画出下端面轴孔倒角的断面图形(setq ew (entlast))(command "revolve" ew "" (list x0 y0 0)(list x0 y0 20) 360) ;旋转出齿轮下端面倒角(setq es (entlast))(setq pr1 (list (+ x0 (/ d 2)) y0 (- Lk LLp))) ;计算齿轮上端面轴孔倒角图形上各点的坐标(setq pr2 (list (+ x0 dj (/ d 2)) y0 (- Lk LLp)))(setq pr3 (list (+ x0 (/ d 2)) y0 (- (- Lk LLp) dj)))(command "3dpoly" pr1 pr2 pr3 "c") ;画出上端面轴孔倒角的断面图形(setq el (entlast))(command "revolve" el "" (list x0 0 0)(list x0 0 20) 360) ;旋转出齿轮上端面倒角(setq ed (entlast))))(command "subtract" k2 "" es ed "") ;切除轴孔上下面的倒角(setq p00 (list (car p0) (cadr p0) L)) ;p00为齿轮上端面的中心点(setq pp0 (polar p0 (/ pi 2) ra)) ;确定倒角断面上各点的坐标(setq ppp0 (list (car pp0) (cadr pp0) L ));pp0、ppp0为齿轮上下两端面边缘的定位点(setq pp1 (list (car pp0) (cadr pp0) dj))(setq pp2 (list (car pp0) (- (cadr pp0) dj) 0));pp1、pp2为下端面轮齿倒角断面上的点(command "3dpoly" pp0 pp1 pp2 "c" "") ;绘制下端面轮齿的倒角断面图形(setq ff (entlast))(command "revolve" ff "" P0 P00 360 "") ;将下端面轮齿倒角断面旋转成型(command "subtract" k2 "" "l" "") ;切出下端面轮齿倒角(setq ppp1 (list (car ppp0) (cadr ppp0) (- (caddr ppp0) dj)))(setq ppp2 (list (car ppp0) (- (cadr ppp0) dj) (caddr ppp0)));ppp1、pppp2为上端面轮齿倒角断面图形上的点(command "3dpoly" ppp0 ppp1 ppp2 "c" "");绘制上端面轮齿倒角断面图形(setq bbb (entlast))(command "revolve" bbb "" P0 P00 360 "");将上端面齿轮的倒角断面旋转成型(command "subtract" k2 "" "L" "") ;切出倒角(command "osmode" 167)(command "ortho" 1 ));qzh(defun xch () ;定义斜齿轮拉伸齿条子程序(command "view" "swiso") ;设置三维图形绘图环境(command "line" (list 0 0 0)(list lxx 0 L)"") ;根据齿轮螺旋角及高度画齿条拉伸路径(setq k9 (entlast)) ;为齿条拉伸路径命名(command "extrude" k0 "" "P" k9) ;拉伸齿条(setq k0 (entlast))(command "copy" k0 "" (list 0 0 0)(list lxx 0 L)) ;复制齿条(setq kk0 (entlast))(command "union" k0 kk0 "") ;合并两齿条(setq k0 (entlast))(command "erase" k9 "") ;删除齿条拉伸路径线(command "layer" "s" "cc" "")(setq p0 (polar s0 (* 90 (/ pi 180)) r )) ;确定齿轮毛坯圆柱中心点(command "cylinder" p0 ra L) ;画出齿轮毛坯圆柱(setq k2 (entlast)) ;为齿轮毛坯圆柱命名);xch。

lisp制作渐开线齿轮

lisp制作渐开线齿轮

来看看吧很多朋友没有接触过AutoCAD的内置编程模块LISP.本人学过些,用它编写一个制作渐开线齿轮的小程序,给大家分享.代码:;标准直齿圆柱齿轮(defun c:齿轮(/ P0 P1 P2 p3 m z YLJ R Ra Rf Rb hak stk a Rk n d jcg bp3 ss1 ss2 l youzbz;储存CAD对象捕捉)(command "layer" "n" "齿轮" "" "");新建图层(command "s" "齿轮" "" "");设为当前层(command "lw" 0 "齿轮" "" "");特别特别实用的操作.;在绘制足球时,没有由此操作理论上画不成(command "view" "top" "");上视图(setq p0 (getpoint "\n请输入齿轮回转中心:"))(command "ucs" "n" p0 "");将回转中心放到坐标系原点(setq p0 '(0 0 0);将回转中心放到坐标系原点(修正上一步)m (getreal "\n齿轮模数:<1>")z (getint "\n齿轮齿数:<32>")ylj (getint "\n齿廓压力角(度):<20>");单位:度h (getdist "\请输入齿轮拉伸的高度:<10>"));设置默认数据(if (= m nil)(setq m 1))(if (= z nil)(setq z 32))(if (= ylj nil)(setq ylj 20))(if (= h nil)(setq h 10))(setq r (* m z 0.5);分度圆半径ra (+ r m)rf (- r (* 1.25 m))ylj (/ (* ylj pi) 180);压力角.单位:度rb (* r (cos ylj))p1 (polar p0 0 rb);渐开线起始点p2 p1;a 0.021;角度累加最小单位(度)ak 0;渐开线展开角.初值为0°n (- (/ (sin ylj) (cos ylj)) ylj);渐开线起始点与圆心连线和水平线的夹角)(setvar "CMDECHO" 0);关闭命令显示(setq bz (getvar "OSMODE"));储存CAD对象捕捉(setvar "OSMODE" 0);CAD对象捕捉设置成无任何捕捉(command "pline" p0);开始画渐开线(样条线)(while (< (distance p0 p2) ra);当渐开线画到齿顶圆外面时终止循环(setq p2 (jkx (+ a ak) rb p0));jkx是下面自定义函数;返回轮廓上下个点;控制渐开线精度(while (> (distance p1 p2) (* m 0.1));该处while控制渐开线精度不能大于0.1倍齿轮模数(setq a (* 0.95 a) p2 (jkx (+ a ak) rb p0)))(while (< (distance p1 p2) (* m 0.08));该处while控制渐开线精度不能小于0.08倍齿轮模数;否则画图较慢(setq a (* 1.25 a) p2 (jkx (+ a ak) rb p0)))(setq ak (+ ak a) p1 p2);角度累加,将p2储存起来(if (and (> (distance p2 p0) rf)(< (distance p0 p2) ra))(command p2);如果轮廓上点p2在齿顶根圆之间,继续画样条曲线));(while (< (distance p0 p2) ra)结束(setq p1 p2 ak (+ ak a) rk (/ rb (cos ak))stk (- (/ (sin ak) (cos ak)) ak)p2 (polar p0 stk rk);绘制齿顶圆外部的渐开线的第一点a (+ n (/ pi z 2))p3 (polar p0 a r);渐开线做镜像的基准线上一点p2 (inters p0 p3 p1 p2 nil);镜像的基准线和渐开线的焦点(大约是))(command p2 "");结束轮廓线绘制(setq ss1 (ssget "L"))(command "mirror" ss1 "" p0 p2 "" "");将刚绘制的轮廓线镜像(command "array" ss1 (entlast) "" "p" p0 z "" "" "");阵列(command "_circle" p0 rf "");齿根圆(setq l (distance p0 p2);此处找出齿轮所在的区域p1 (polar p0 (* pi 1.25) (* l 2))p2 (polar p0 (* pi 0.25) (* l 2)))(command "region" (ssget "w" p1 p2) "");做齿数个面域(command "union" (ssget "w" p1 p2) "");齿根圆面和多个齿的合并(setq ss1 (ssget "L"));ss1获取合并后的面域(command "circle" p0 ra "")(command "region" (ssget "L") "");绘制齿顶圆面(command "_intersect" ss1 (ssget "L") "");交集运算,去除齿轮多画的尖峰(command "extrude" (entlast) "" h "" "");拉伸(command "shademode" "g" "");设置成“体着色”(command "view" "seiso");视图(command "layer" "c" "t" "255,165,0" "" "");涂色(setvar "CMDECHO" 1);打开命令回显(setvar "OSMODE" bz);恢复“对象捕捉”;清空记录(setq P0 nil P1 nil P2 nil p3 nil m nil z nil YLJ nil R nil Ra nil Rf nil Rb nil h nilak nil stk nil a nil Rk nil n nil d nil jcg nil b nilp3 nil ss1 nil ss2 nil l nil youz nil));(defun c:JKXCLCK结束;=================================================================== =======(defun jkx(ak rb p0 / rk stk p2)(setq rk (/ rb (cos ak))stk (- (/ (sin ak) (cos ak)) ak)p2 (polar p0 stk rk)))如何使用这段程序.我来演示下.首先打开AutoCAD的LISP.[工具] [autolisp] [lisp编辑器]在编辑器中新建一个空文件.复制以上代码粘贴新建文件中.然后,加载这个程序.[工具] [加载编辑器中的文字],lisp控制台提示”; 2 表格从#<editor "<未命名0> 正在加载..."> 加载”.则加载成功这时回到autocad窗口,可以使用这段程序了.举例,绘制模数(m)=1,压力角(ylj)=20度,齿数(z)=50,高度(h)=10的齿轮.◆1,在命令行输入,齿轮然后回车,在提示下点选齿轮中心点位置.◆2,在提示下依次输入模数,齿数等◆3,稍等结果其实,该段先开始时不精细,结束处精细,下图是绘制过程的渐开线32,和50的装配图希望大家喜欢。

基于AUTOLISP的渐开线齿轮的设计

基于AUTOLISP的渐开线齿轮的设计

Designing an Involuted Gear Based on AUTOLISP 作者: 李艳;张海涛
作者机构: 北京印刷学院信息与机电工程学院,北京102600
出版物刊名: 北京印刷学院学报
页码: 13-14页
主题词: 齿轮;渐开线;AUTOLISP;3DCAD;AutoCAD
摘要:渐开线作为齿轮的齿廓非常广泛。

在使用AU—TOCAD绘制渐开线齿轮时,尽管AUTOCAD有很强的绘图功能,但其基本命令还是无法直接画出真实的渐开线。

内嵌在AUTOCAD中的AUTOLISP语言是比较简单的,用AUTOLISP语言编制好的齿轮渐开线程序在AUTO-CAD中加载和调用。

就可以快速准确地绘制出渐开线圆柱齿轮的齿廓形状,再经过环形阵列和拉伸等操作就得到了完整的齿轮实体模型。

渐开线直齿圆柱齿轮参数化设计

渐开线直齿圆柱齿轮参数化设计

建立渐开线直齿圆柱齿轮的通用参数化模型实例步骤1:新建零件文件。

(1)在“快速访问”工具栏上单击“新建”按钮,弹出“新建”对话框。

(2)在“类型”选项组中选择“零件”单选按钮,在“子类型”选项组中选择“实体”单选按钮;在“名称”文本框中输入“chilun”;并去除“使用默认模板”复选框,不使用默认模板,然后单击“确定”按钮。

(3)弹出“新文件选项”对话框,在“模板”选项组中选择“mmns_part_solid”选项。

单击“确定”按钮,进入零件设计模式。

步骤2:定义参数。

(1)在功能区中切换至“工具”选项卡,从“模型意图”组中单击“参数”按钮,此时系统弹出“参数”对话框。

(2)单击7次“添加”按钮,从而增加7个参数。

(3)分别修改新参数名称、对应的初始值以及说明信息,如图1所示。

图 1(4)在“参数”对话框中单击“确定”按钮,完成用户自定义参数的建立。

步骤3:创建旋转特征。

(1)在功能区中切换至“模型”选项卡,单击“旋转”按钮,打开“旋转”选项卡。

(2)在“旋转”选项卡中指定要创建的模型特征为(实体)。

(3)选择FRONT基准平面作为草绘平面,进入内部草绘模式。

(4)草绘图2所示的旋转截面,其中水平的中心线将作为旋转轴线。

(5)在功能区中切换至“工具”选项卡,从“模型意图”组中单击“关系”按钮,打开“关系”对话框。

此时草绘截面的尺寸以变量符号显示,如图3所示。

图 2 图3在“关系”对话框的文本框中输入以下关系式:Sd0=M∗Z +2∗(HAX+X)∗M /∗等于齿顶圆直径Sd1=B /∗等于齿轮宽度在“关系”对话框中单击“确定”按钮。

(6)返回到功能区的“草绘”选项卡,单击“确定”按钮,完成草绘并推出草绘模式。

(7)接受默认的旋转角度为“360°”。

(8)在“旋转”选项卡中单击“完成”按钮,创建一个圆柱体。

步骤4:草绘曲线。

(1)单击“草绘”按钮,弹出“草绘”对话框。

(2)选择RIGHT基准平面为草绘平面,以TOP基准平面为“左”方向参考,单击“草绘”按钮。

基于AutoLISP的渐开线圆柱齿轮参数化设计及绘图系统

基于AutoLISP的渐开线圆柱齿轮参数化设计及绘图系统
2.利用DCL文件创建自己的对话框,以齿轮轴为例。输入界 面如图l所示,程序如下:
chjlunzhou:dialogf label=”齿轮轴参数输入-.; :column( :boxed_column flabel=”齿轮轴结构预览:”;
:image{width=30;height=15;key=”img_z”;color=-2;l l

息Ⅲ 术D 信n 技舭 一一■流 ●蕾 ■
■●■■一 ■■一密■ ■■一■ ■■一




■■
郑州机械研究所王永郭钢蒋晶黄红涛潘军远
圆柱齿轮在机械产品中应用十分广泛.并且品种、规格繁 多。长期以来。在齿形上以采用渐开线齿形为主。其传动的速度 和功率范围很大且效率较高。对中心距的敏感性小。装配和维 修方便。可以进行变位切削及各种修形、修缘.从而提高传动质 量。易于进行精密加工,可以取得高精度,是各种齿轮中应用最 为广泛的一种齿轮。考虑到传统设计费时费力,且容易出错。 本文应用AutoLISP语言二次开发出渐开线圆柱齿轮的设计及绘 图系统,实现二维参数化绘制工程图,将设计人员从大量繁琐的 计算和绘图中解放出来,实现渐开线圆柱齿轮精确和快速的绘 制。
}..…‘11. 3.初始化绘图环境及选择坐标系。绘图环境是对 AUTOCAD的系统变量进行保存,并在绘图完成后恢复原来的设 定状态,包括绘图比例、图纸幅面、线型、图层、尺寸标注形式和 文字样式等。初始化程序代码应放在绘图程序的最前端。 4.基本绘图参数的选择。绘制齿形部分需要7个参数,即齿 轮旋向、齿轮模数、一对啮合齿轮的齿数、齿轮啮合中心距、螺旋
”c” l ”center2”
nC”3’'dim”——o’
”e”2”hidden2”
”l” “center2” ”center2””l” ”hidden2” ”hidden2”

基于Auto LISP的参数化绘图技术与实例分析

基于Auto LISP的参数化绘图技术与实例分析

基于Auto LISP的参数化绘图技术与实例分析摘要:AutoCAD 是一款通用的绘图软件,Auto LISP是嵌入AutoCAD的二次开发工具,参数化绘图是其典型的应用。

文章探讨了参数化绘图设计原理及步骤,并以轴承参数化绘图为例,介绍了Auto LISP的参数化绘图技术。

关键词:参数化;AutoCAD;Auto LISPAutoCAD是由Autodesk公司发行的一款应用于多领域的设计辅助和图形处理软件。

在机械行业得到了广泛应用。

AutoCAD虽然功能强大,但在专业应用上还是有不足之处,如何让通用的CAD系统更适合行业需要,必须对其要进行二次开发。

AutoCAD在30多年时间里相继推出了Auto LISP、ADS、Visual LISP、VBA、Object ARX、几种不同层次的二次开发工具。

“其中Auto LISP是唯一的一种以解释方式运行于AutoCAD内部的解释性程序设计语言,Auto LISP把数据和程序统一表达为表结构,所以它既可以把程序当作数据来处理,还可以把数据当作程序来执行”。

其语言规则简单,直接针对AutoCAD,易学易用,AutoCAD的绝大多数命令可直接调用,参数化绘图是其典型的应用之一。

1 参数化绘图设计原理及步骤所谓参数化就是将图形的有关几何关系、约束关系有机地结合起来,从而构成一个完整的参数化模型。

当设计人员改变图形的某一参数时,模型能根据尺寸及几何约束等自动计算出满足约束关系的工程图形。

参数化编程方法的实质,就是将图形信息记录在程序中。

它用一组变量记录图形的几何参数,用一些约束条件或者赋值语句来表达几何参数与结构参数之间的关系,再用一些绘图语句来表述图形的拓扑关系。

参数化方法快捷、高效,参数化绘图程序编写步骤是:①先进行图形结构特征分析,一般绘制一个零件的图样,需要很多尺寸,这就需要我们分析这个零件,确定图形中的关健几何尺寸及图形对象之间的依赖关系。

②从设计角度具体分析,确立不仅能体现零件的结构特征,又可以推导出其它尺寸的基本尺寸作为图形参数,并明确尺寸与图形参数之间的关系。

基于AutoLISP的齿轮参数化设计

基于AutoLISP的齿轮参数化设计
图1
April 1960:1—7.
[8lJohn
McCarthy.
FORTRAN
Programmer’s Reference Manual L1].US:
IBM
15,1956.
Corporation,New
York,Oct.
(作者单位:兰州理工大学机电3--
齿轮参数化基于AutoLISP的齿轮参数化设计
键槽深b=h一(0.5・d1)一(o.5・d。)2一o.25a2
(3-5)
M].高等教育出版社,2006:179—181.
『41胡仁喜,胡星,史青录.AutoLIsP
3.设计绘图流程 流程图如图1所示。
机械设计高级应用实例M].北京:机械
工业出版社.2005—1:88—89.188—200. 『5]刘喜平.基于AutoLISP的Au— toCAD二次开发技术卟机械制造与自 动化,2011(4):128—129,146. 『6]李长勋.AutoCAD
关键词:AutoLISP齿轮参数化
设计
500nml,采用腹板式结构; (3)齿轮圆直径范围在>,500nml,采 用轮辐式结构;
一、齿轮参数化绘图设计 (一)概述 在实际设计生产中,利用AutoLISP 语言来编写程序,可大幅提高生产效 率。假设某设计人员花了二十几个小时 编写一个AutoLISP程序,表面上,这将 近三天的时间,他并没有绘制一张按要 求的图纸。但如果设计部门需要后续的 研发其零部件的后续系列产品,则该程
Visual
LISP程
序开发技术M].北京:国防3--业出版社.
2005.
[7lJohn
Institute of
McCarthy.Massachusetts Technology口].US:ACM.

基于solidworks的渐开线直齿圆柱齿轮的参数化设计

基于solidworks的渐开线直齿圆柱齿轮的参数化设计

基于solidworks的渐开线直齿圆柱齿轮的参数化设计渐开线直齿圆柱齿轮是一种常见的传动装置,常用于工业机械中,其精确的传动模式和高效的传动效率使其成为机械传动中不可或缺的部件。

SolidWorks是一款常用的三维建模软件,可以提供强大的功能和工具,用于进行参数化设计和精确建模。

在SolidWorks中,我们可以使用数学公式和几何关系,来实现渐开线直齿圆柱齿轮的参数化设计。

在进行参数化设计之前,我们需要明确齿轮的基本参数,包括齿轮齿数、齿轮模数、齿轮压力角等。

在SolidWorks中,我们可以使用公式驱动这些参数,方便地进行修改和调整。

以下是一些常见的参数和公式:齿数(Z):齿轮的齿数可以通过修改参数来进行调整,公式为:Z=D/m,其中D为齿轮直径,m为模数。

齿轮模数(m):齿轮模数是齿轮齿数与齿轮模数的比值,它决定了齿轮的大小和传动比,公式为:m=D/Z,其中D为齿轮直径,Z为齿数。

齿轮压力角(α):齿轮压力角是指齿轮齿面与法线的夹角,它决定了齿轮的传动效率和噪音水平。

在SolidWorks中,我们可以通过修改参数来调整齿轮压力角。

齿槽高度(h):齿槽高度是指齿轮齿槽的深度,它决定了齿轮的强度和耐用性。

在SolidWorks中,我们可以使用公式来计算齿槽高度,公式为:h = m * (1 - cos(α))以上只是一些基本的参数和公式,实际应用中还需要根据具体要求进行进一步的参数化设计。

在SolidWorks中,我们可以使用公差、偏差、配合等功能,来实现更精确和稳定的参数化设计。

除了基本的参数化设计外,还可以在SolidWorks中实现齿轮的装配、运动模拟和性能分析等功能。

通过将多个齿轮组装在一起,并添加运动学关系,可以模拟齿轮的运动轨迹和传动效果。

同时,我们还可以通过载荷分析和强度分析,来评估齿轮的耐久性和性能。

总结起来,基于SolidWorks的渐开线直齿圆柱齿轮的参数化设计可以通过数学公式、几何关系和软件功能来实现。

基于UG和Excel的渐开线斜齿圆柱齿轮参数化设计

基于UG和Excel的渐开线斜齿圆柱齿轮参数化设计

!"#!$%&$'(')*+&,-./&$01$21(3$&)%))$1%(%基于P V和I JA-5的渐开线斜齿圆柱齿轮参数化设计乐治后4王琳4邹云伟4王振宁南昌工学院!江西南昌!##$&$;摘4要 利用J b$%&%软件表达式工具对渐开线斜齿圆柱齿轮进行三维参数化精确设计 可保证渐开线齿廓的准确性 基于J b和O R,A B软件 建立渐开线斜齿轮零件的模型零件库 在批量设计中 通过调用零件族文件 自动更新设计模型 减少大量的工作关键词 表达式 J b O R,A B 参数化 零件族中图分类号 U\('$&1(7(:-47/A,-./012&731@&5<4-;-5/A(5M95/1>7/A(5V-(7Q(.->&1P V(1>I JA-5C<-B=/=&<46(10%/14B&<C<1G-/46(10B=-11/10C-,=7-,9.,/010+0234@612,62R5267,3839:!K1-,9H1C-,67-,9!##$&$;D E.47(A4!U MA K?<?>AE A</_A==A C/H-L;</-P;B NE A MA B/,?B H A?<V?C,?<</A=;NE TF NC/-H A R K<A C C/;-L N-,E/;-;L J b$%&%C;L E V?<A& 7/>/-H?E E MA H A?<K?<E C V/E M C/>/B?<C M?KA?-==/L L A<A-E C/_A"E MA K?<E B/T<?<F;L MA B/,?B H A?<K?<E C/C A C E?TB/C MA=TF NC/-H J b?-= O R,A B C;L E V?<A&#-E MA T?E,M=A C/H-"E MA=A C/H->;=A B/C?NE;>?E/,?B B F NK=?E A=TF,?B B/-H K?<E L?>/B F"?-=?B;E;L V;<./C<A=N,A=&& F-9G&7>.!A R K<A C C/;-'J b'O R,A B'K?<?>A E A</_A='K?<E L?>/B F&概述渐开线斜齿圆柱齿轮广泛应用在变速器$减速器$差速器等各种传动装置中"是一种特殊的重要机械零件*$+#在设计制造中"渐开线斜齿轮的三维建模过程比较困难*)+# J b1&9以上中文版可以直接生成渐开线斜齿轮三维模型"但面临斜齿轮广泛应用$批量化生产的现实"重复的进行斜齿轮三维建模"工作量较大"极其浪费时间和精力#J b中的表达式%O R K<A C C/;-&工具具备参数化设计功能"可以用来控制同一零件上不同特征之间的关系或同一装配不同零件之间的关系"可以用来进行渐开线斜齿轮的三维参数化建模#O R,A B软件输入数据比较方便"可进行数据管理"提取J b软件中三维模型的参数数据到O R,A B 软件中生成零件表"在二次设计中只需修改O R,A B数据表中部分相应的参数数值"生成零件族文件#调用该零件族文件中的参数数值就可以在J b中设计出符合相应参数要求的齿轮零件*(+#这样可以减少大量工作量"较直接生成三维模型也有优势#本文基于J b$%&%软件"使用J b中的表达式%O R K<A C2 C/;-&工具"在J b中建立渐开线斜齿圆柱齿轮的三维模型*(+#利用J b的\?<E@?>/B F%部件族&命令"结合O R,A B软件"建立渐开线斜齿轮的零件族"有利于批量化设计不同系列的齿轮#本文采用的是J b$%&%和"@@#W O)%$%"考虑到J b软件和O R,A B软件的兼容性"建议采用"@@#W O)%$%或以下版本"否则与J b$%&%不能兼容#'建立零件族的思路首先要整体分析零件特征"明确零件特征内在联系及进行零件驱动的参数个数#然后录入尺寸关系#通过O R,A B软件输入不同系列零件的各个尺寸"能够快速地得到一个参数零件库#将参数零件库中一个零件的尺寸作为参数变量提取到J b的表达式中"从而在J b软件中建立三维参数化零件模型*(2'+#J b的O R K<A C C/;-%表达式&中有\?<E L?>/B F%部件族&命令"通过这个\?<E L?>/B F%部件族&命令可以创建一个含有这些参数变量的O R,A B驱动表"在这个O R,A B驱动表中新建多个系列"并输入不同系列的参数数值"保存部件族"即可形成一个齿轮零件族文件#用一个零件模型就可表达多个相同结构类型$尺寸不完全一致的零件"减少了在二次设计中的大量工作"这样就建立了一个模型库文件*(2'+#建立零件族的流程如图$所示!<;图$建立零件族的流程图#斜齿圆柱齿轮建模渐开线斜齿轮在Jb 中的精确设计过程可分为*0+!%$&通过表达式工具建立相互关联的表达式'%)&绘制渐开线斜齿轮齿廓截面'%(&创建斜齿轮基本齿廓'%3&创建斜齿轮整体齿形'%9&创建斜齿轮细节特征#(&$渐开线斜齿轮结构分析标准的渐开线齿轮的齿型*$+如图)所示!图)渐开线齿轮齿形由机械原理可知渐开线的方程式*$%2$(+为!&F S J ),;C %1&n J #,%1&C /-%1&[]B F S J )C/-%1&l J #,%1&,;C %1&[]C F S %1S #=n )=J F S J )@+K 1#=)=S $3L #=S F #3#=l #=斜齿轮的形状和几何尺寸取决于齿轮的1个基本参数"分别是齿数_$法向模数>-$法向压力角"-$分度圆上的螺旋角)$齿轮高度M],B $法向齿顶高系数M "-$法向顶隙系数,-#根据J b 系统对参数变量的要求"这1个基本参数先要赋予初值"而实际中大部分齿轮是变位齿轮"故设计时需考虑变位系数*)+#再加上计算推导出来的$(个参数共有)%个参数#(&)建立表达式建立表达式是很关键的一步"是为了建立零件特征之间的内在联系#方法*$)2$(+如下!在J b 主界面中"选择工具%U ;;B C &[表达式%O R 2K<A C 2C /;-C &"弹出表达式对话框输入*名称+和*公式+"其中在*单位+下拉列表中选择*恒定+选项#输入完成后"单击*接受编辑+图标"建立如下表达式!E S %**J b 规律曲线系统变量T S 8&$%'33**螺旋角?-S )%**法向压力角?S ?<,E ?-%E ?-%?-&*,;C %T &&**端面压力角>-S (**法向模数R S %**变位系数_S 1'**齿轮齿数B +S K/%&!>!_*E ?-%T &**螺距=S >!_**分度圆直径=%S >!_!,;C %?&**基圆直径=],=F S =n )!M],=**齿顶圆直径=],H F S =l )!M],H **齿根圆直径M],=S %$n R &!>**齿顶高M],H S $&)9!%$n R &!>**齿根高>S >-*,;C %T &**端面模数C S '%!E **渐开线展角%%"'%&R E S %=%*)&!,;C %C &n %=%*)&!<?=%C &!C /-%C &**渐开线方程F E S %=%*)&!C /-%C &l %=%*)&!<?=%C &!,;C %C &**渐开线方程_E S %M],B S 0%**齿轮高度也可以在记事本文件中输入以上表达式"保存为A R K文件"再打开NH "选择工具%U ;;B C &[表达式%O R 2K<A C C /;-C &"点击#>K;<E O R K<A C C /;-C L <;>L /B A C "选择保存好的A R K 文件"导入即可"这样输入方便快捷"也可避免出错#(&(绘制渐开线斜齿轮齿廓截面(&(&$创建渐开线运用规律曲线命令创建渐开线"如图(所示!图(创建渐开线$<44(&(&)草绘齿轮截面在建模状态下"草图环境中"绘制圆#这里要建立三个草图"在每个草图里绘制一个圆"分别绘制齿轮的分度圆$齿根圆和齿顶圆#尺寸分别选择=$=],H F 和=],=F #如图3所示!图3绘制圆绘制直线#直线起点为坐标原点"终点为分度圆与渐开线的交点#绘制时打开*交点+捕捉模式#如图9!图9绘制直线创建阵列曲线#选择上步绘制的直线作为阵列对象"数量为)"节距角为l'%*_"进行圆形阵列"如图0!图0阵列曲线44(&(&(创建镜像曲线利用镜像曲线命令"创建渐开线曲线的镜像曲线"如图1所示!图1镜像曲线(&(&3创建螺旋线在建模状态下绘制螺旋线"螺旋线的旋向与斜齿轮一致"螺旋线直径为齿顶圆直径=],=F "螺距为B +"起始点默认%%"%"%&"圈数取%&%$9圈"绘制出螺旋线"如图8所示!图8创建螺旋线(&3创建斜齿轮基本齿廓运用扫掠命令"选择齿廓截面曲线"沿引导线扫掠"形成扫掠特征如图所示#其中"曲线规则选择相连曲线"且在相交处停止"截面选项中应勾选保留形状#如图'!图'扫掠特征&<(&9创建斜齿轮整体齿形(&9&$创建齿顶圆拉伸特征运用拉伸命令"以齿顶圆为拉伸对象"拉伸距离为M],B "曲线规则为相连曲线"形成拉伸特征#如图$%所示!图$%拉伸齿顶圆(&9&)创建偏置面特征运用偏置面命令"选择上步拉伸特征的外侧面为偏置对象"曲线规则为单个面"距离为)"形成偏置特征如图$$所示!图$$偏置面再以齿顶圆拉伸特征为目标体"偏置面特征为工具体"进行求差操作"对实体圆弧两侧边进行倒斜角操作"如图$)所示!图$)求差,倒斜角(&9&(创建阵列面特征运用阵列面命令"创建阵列面特征"其中曲线规则选择特征面"角度为(0%*_"圆数量为_#结果如图$(所示!图$(阵列面(&0创建斜齿轮细节特征先草绘截面"再拉伸创建齿轮中心孔$减轻孔和侧面凹槽特征"最后倒斜角和圆角#最后结果如图$3所示!图$3齿轮三维模型(参数化控制库的建立建立齿轮零件参数化控制库是基于Jb 软件和O R ,A B 软件"通过Jb 建立单个零件三维参数化模型"结合O R ,A B 生成模型零件族"目前有两种方式#第一种方式是Jb 的电子表格功能"在J b 界面主菜单中选择U ;;B C %工具&[C K<A ?=C MA A E %电子表格&[加载项[O R E <?,E O R K<%提取表达式&"提取第一步建立的表达式到C K<A ?=C MA A E %电子表格&中#在电子表格中可以修改相应的参数数据"并在电子表格中选择加载项[J K=?E AJ b \?<E %更新J b 零件&"则齿轮的三维参数化模型将自动更新*)+#但这种方式每次修改参数后前面的参数都被更新"只能保存一种类别的参数"无法形成一个参数库随时调用#要形成一个参数库能被随时调用不同类别的参数要采用下面的方法#进入\?<E @?>/B F %部件族&命令"依次将_$>-$?-$M],B $T $R 添加到参数序列#然后确定进入O R ,A B 表格"在O R ,A B 表格中输入斜齿轮如图$9的主要参数"点击D?P A\?<E L ?>/B F%保存族&命令"返回到J b 界面"点击确定"就完成了参数库的建立*'2$$+#J b 的模型建立功能和O R ,A B 的数'<据处理功能也结合起来了#再新建一个装配文件"从添加组件命令导入保存好的部件族文件#建立装配文件是因为装配状态便于调用部件族文件"在这里不必重复建立斜齿轮的三维模型"只要调用导入的零件族文件"选择零件代号%如HA ?<$$H A ?<)$H A ?<($H A ?<3$H A ?<9$H A ?<0即可&#就可以自动更新模型"这大大减少了模型建立所需的时间*(23+#图$9部件族44图$0零件库中齿轮三维模型结语对斜齿轮进行参数化设计"并基于J b 和O R ,A B 建立参数化控制库"有利于批量化快速进行齿轮设计"可节省大量时间和精力#笔者给出的参数化设计方法也适用于其他机械零件的参数化设计#本文建立的齿轮模型可进行后续的运动仿真$有限元分析等#参考文献$$%徐江敏!孟慧亮!苏石川&渐开线斜齿轮的参数化设计与应用$c %&计算机应用技术!)%%8!(9($$*+((2(9&$)%梁新平&基于Jb 的斜齿圆柱齿轮建模参数化方法$c%&机械传动!)%%'!((()*+3123'&$(%关意鹏!关来德&基于O R ,A B 参数表的三维零件库的设计$c %&柳州职业技术学院学报!)%%0!0(3*+33238&$3%陈志英!张向强&基于J b 零件库的建立$c %&机械设计!)%%$(8*+3'29$&$9%薛辰&基于J b 和O R ,A B 的滚动轴承参数化设计方法研究$c%&制造业信息化!)%$%+$$12$$8&$0%宋娓娓!汪洪峰!汪建利!左敦稳!王珉!叶欢&基于J b 环境下齿轮库系统建立$c %&机械设计与研究!)%$(!)'(3*+93290&$1%张海军!金永福&基于J b 电子表格的三维零件库设计$c %&新技术新工艺!)%%8('*+$92$0&$8%杨英芸&基于J b 表驱动的带轮参数化设计与实现$c %&制造业信息化!)%$(($%*+'02'1&$'%赵斐!戴道立!陆 &基于J b 和O R ,A B接地开关的参数化设计$c %&高压电器!)%$'!99($%*+$%$2$%3&$$%%袁锋&J b 机械设计工程范例教程$a %&北京+机械工业出版社!)%$9+892'8&$$$%赵自强!张春林&机械原理$a %&北京+机械工业出版社!)%$9+$3'2$9%&$$)%郭志全!朱征&斜齿圆柱齿轮在J b 中的三维建模$c %&机械设计!)%%(!)%(8*+9129'&$$(%庄宿涛!孟晓军&基于对称方程的渐开线直齿圆锥齿轮J b 参数化建模$c %&机械传动!)%$)!(0(0*+3129%&作者简介 乐治后($'8')4*!男!湖北黄冈人!硕士!主要研究方向+机械设计理论及方法"#<。

基于AutoLISP语言的参数化绘图设计

基于AutoLISP语言的参数化绘图设计

收稿日期:2018年1月在绘制系列化产品设计图样时,因为包含着许多形状结构相似但参数不同的零件,使设计人员不可避免地要进行大量重复性绘图工作,导致工作效率低下。

要解决这个问题,可以在AutoCAD 软件平台上应用其内嵌的AutoLISP 语言进行编程二次开发,依据国家标准和行业标准,结合企业自身特点,自定义绘图命令,实现参数化绘图设计。

1AutoLISP 语言AutoCAD 作为Autodesk 公司推出的一种通用的计算机辅助设计和图形处理软件,具有易于掌握、使用方便、绘图精确和体系结构开放等优点。

AutoCAD 以强大的绘图功能和便利的交互式操作风格深受广大科技人员的青睐,是现在普遍使用的计算机辅助设计软件,已广泛应用于机械、建筑、电子、化工、航空、航天等领域。

AutoCAD 的缺点是专业性、针对性不强,因此Autodesk 公司在AutoCAD 2.18版及之后的版本中内嵌了AutoLISP 语言编程开发工具[1-3]。

AutoLISP 是LISP 语言的一个分支,具有很强的数据表格处理功能,它与AutoCAD 绘图命令相结合,可以存取和修改AutoCAD 图形实体数据,存取AutoCAD 的块表、层表、视图表、字体表及线型表,控制AutoCAD 图形屏幕和设备输入等,并可直接调用全部的AutoCAD 命令[4]。

相比其它编程语言,AutoLISP 语言简便易学,既具有一般高级语言的基本结构和功能,又具有一般高级语言所没有的强大图形处理功能,是应用AutoCAD 的一种重要手段[5]。

2参数化绘图设计步骤所谓参数化绘图设计,是指绘图平台能够根据用户输入的相关参数信息,自动生成所需的图样,要求设计或开发人员事先根据所要绘制的零件结构及图样进行相应的程序设计。

参数化绘图设计可以遵循以下步骤。

(1)分析结构特征,确定绘图参数,将既能体现零件结构特征,又能推导出其它尺寸的基本尺寸确定为绘图参数,参数应简洁明了[6]。

CAD画齿轮的渐开线程序 (LSP)和渐开线齿轮关系

CAD画齿轮的渐开线程序 (LSP)和渐开线齿轮关系

一、CAD中齿轮画法有下面一段渐开线程序:;;;begain suprgear.lsp;************************************************* ;SPURGEAR.LSP-a lisp program by Tony Hotchkiss;-------------------------------------------------;This routine draws a spur gear using joined;polylines.It lets you use any pressure angle;to design the gear teeth.;************************************************* (defun err(s)(if(=s"Function cancelled")(princ"\nSPURGEAR-cancelled:")(progn(princ"\nSPURGEAR-Error:")(princ s) (terpri)));if(resetting)(princ"SYSTEM VARIABLES have been reset\n")(princ));err(defun setv(systvar newval)(setq x(read(strcat systvar"1")))(set x(getvar systvar))(setvar systvar newval));setv(defun setting()(setq oerr*error*)(setq*error*err)(setv"CMDECHO"0)(setv"BLIPMODE"0));end of setting(defun rsetv(systvar)(setq x(read(strcat systvar"1")))(setvar systvar(eval x)));restv(defun resetting()(rsetv"CMDECHO")(rsetv"BLIPMODE")(setq*error*oerr));end of resetting(defun dxf(code ename)(cdr(assoc code(entget ename))));dxf(defun spurgear(/D N phi DO RO A B DR DB inv-plst p1 trimcode invent p0p curvent linent linent2ent2p2) (setq D(getreal"\nPitch diameter:")N(getint"\nNumber of teeth:")phi(getreal"\nPressure angle:")phi(*(/phi180)pi);Pressure angleDO(*D(+(/2.0N)1.0));Outside diameterRO(/DO2.0);Outside radiusA(/D N);AddendumB(*1.25A);DedendumDR(-D(*B2.0));Root diameterDB(*D(cos phi));Base circle dia.inv-plst(involute DB N phi);involute pointstrimcode nil);setq(command"ZOOM"(list0(-B))(list RO(/RO1.5)));command(setq invent(draw-inv inv-plst));Draw involute.(setq p0(car inv-plst)trimcode(ext-trim p0DR D);trim or extend);setq;the involute.(if(and trimcode(=trimcode0))(progn;Joins the involute to the extension.(setq p(list(/DR2.0)0)) (command"PEDIT"p"Y""J"invent"""X")(setq curvent(entlast)));progn(setq curvent(entlast)));if(if(null trimcode)(setq curvent invent))(setq linent(draw-top-line D DB N RO));top line. (command"COPY"linent"""0,0""0,0")(setq linent2(entlast))(setq ent2(mir-it curvent linent));mirror curve (command"PEDIT"curvent"J"linent ent2"""X") (segment DR N linent2);Finish the job!(setq p1(list(-RO)(-RO)))(setq p2(list RO RO))(command"ZOOM"p1p2)(prompt"\nConverting to POLYLINE,please wait...") (command"PEDIT"(entlast)"J""C"p1p2"""X") (prompt"\nAll done!"));spurgear(defun involute(DB N phi/numer denom frac theta2max thetamax theta-inc theta plist RB xval yval p)(setq invfact3)(setq numer(+N2.0)denom(*N(cos phi))frac(/numer denom)theta2max(-(*frac frac)1)thetamax(sqrt theta2max)theta-inc(/thetamax(float invfact)) theta0plist nilRB(/DB2.0));setq(repeat(1+invfact)(setq xval(do-x RB theta)yval(do-y RB theta)p(list xval yval)plist(append plist(list p)));setq(setq theta(+theta theta-inc)));repeatplist);involute(defun do-x(RB theta)(*RB(+(cos theta)(*theta(sin theta)))) );do-x(defun do-y(RB theta)(*RB(-(sin theta)(*theta(cos theta)))) );do-y(defun draw-inv(inv-plst/dirpt plist p) (command"PLINE"(nth0inv-plst))(setq dirpt(polar(nth0inv-plst)01)) (command"A""D"dirpt)(setq plist(cdr inv-plst))(foreach p plist(command p))(command"")(entlast));draw-inv(defun ext-trim(p0DR D/trimcode dist endr)(if(>(car p0)(/DR2.0));Extends the involute (progn(command"LINE"(list(/DR2.0)0)p0"")(setq trimcode0));progn);if(if(<(car p0)(/DR2.0));Trims the involute (progn(command"CIRCLE""0,0""D"DR);Root circle (setq dist(-(/D2.0)(car p0))) (command"ZOOM"p0(polar p00.6dist))(setq endr(entlast)) (command"TRIM"endr""p0"") (command"ZOOM""P")(entdel endr)(setq trimcode1));progn);iftrimcode);ext-trim(defun draw-top-line(D DB N RO/theta-p xp yp alphabeta tang angend inv-endpt lend)(setq theta-p(sqrt(-(*(/D DB)(/D DB))1.0))xp(do-x(/DB2.0)theta-p);This sectionyp(do-y(/DB2.0)theta-p);sets up anglesalpha(atan yp xp);for drawing aabeta(angle(list00)(last inv-plst))beta(-abeta alpha);line across thetang(/pi N);top of a toothangend(-(+alpha tang)beta)inv-endpt(last inv-plst);This also createslend(polar(list00)angend RO);the tooth);setq;thickness.(command"LINE"inv-endpt lend"");Draws the line (redraw)(entlast));draw-top-line(defun mir-it(cvent linent/pt)(setq pt(dxf11linent)) (command"MIRROR"cvent"""MID"pt"0,0""") (entlast));mir-it(defun segment(DR N en/p1p2ang dist midp p0pang pang2p p3ent3entl1entl2en1en2)(setq p1(dxf10en)p2(dxf11en)ang(angle p1p2)dist(/(distance p1p2)2.0)midp(polar p1ang dist)p0(list00)pang(angle p0midp)pang2(/pi N)p(polar p0pang(/DR2.0))p1(polar p0(-pang pang2)(/DR2.0))p2(polar p0(+pang pang2)(/DR2.0))p3(polar p0(+pang pang2pang2)(/DR2.0)) ent3(entlast);This is the tooth p-line);setq(command"ZOOM""W"p3p1) (command"CIRCLE""0,0""D"DR);Root circle (command"TRIM"ent3""p"");Trim the root circle (command"ZOOM""P") (command"LINE"p0p1"")(setq entl1(entlast))(command"LINE"p0p2"")(setq entl2(entlast)) (command"TRIM"entl1entl2""p3"")(entdel entl1)(entdel entl2)(entdel en)(command"ZOOM""W"p3p1) (command"PEDIT"p1"Y""X")(setq en1(entlast))(command"PEDIT"p2"Y""X")(setq en2(entlast)) (command"PEDIT"en1"J"midp en2"""X") (command"ZOOM""P") (command"ARRAY"p1"""P""0,0"N"360""Y") );segment(defun c:sg()(setting)(spurgear)(resetting)(princ));c:sg(prompt"\n**SPURGEAR.LSP Loaded!")(prompt"\n Enter'SG'to start");;;end suprgear.lsp将上述代码保存成lsp文档格式,最好存入cad目录下的Support文件夹下。

基于AutoLISP的渐开线齿轮参数化设计

基于AutoLISP的渐开线齿轮参数化设计

基于AutoLISP的渐开线齿轮参数化设计摘要:渐开线齿轮的精确化设计一直是机械设计的难题,用AutoLISP对AutoCAD进行二次开发,结合DCL语言实现渐开线齿轮的参数化设计,并根据需要绘制齿顶圆弧和齿根过渡圆弧,提高齿轮参数化设计的效率。

关键词:AutoLISP DCL 参数化设计;齿根过渡圆弧半径;隐式超越方程前言齿轮传动是机械传动中最为常见的机构之一,其中渐开线齿轮应用最广。

渐开线齿轮具有传动比准确、传动效率高等优点,在工程实际中被广泛采用。

但因渐开线齿廓的复杂性,简单的利用AutoCAD只能借助直线或圆弧拟合渐开线,很难实现渐开线齿廓的精确造型,应用AutoCAD提供的AutoLISP、DCL等二次开发工具为这一问题的解决提供了便利条件。

利用AutoLISP在AutoCAD中生成渐开线,合理地结合DCL语言可以方便、快速地实现渐开线齿轮的参数化造型,并对输入参数进行核算,还能根据需要绘制齿顶倒圆和齿根过渡圆弧等,从而大大提高了齿轮参数化设计的工作效率。

1.什么是AutoLISP和DCLAutoCAD是大家再熟悉不过的绘图软件了,但说到AutoLISP和DCL,恐怕连一般经常用AutoCAD设计的人也会感到陌生。

那么,AutoLISP和DCL又是什么呢?其实,AutoLISP作为嵌入在AutoCAD内部的具有智能特点的编程语言,是开发应用AutoCAD不可缺少的工具。

利用它能够实现自动计算、分析、绘图、数据交换等功能,还可以在AutoCAD中定义新命令,为AutoCAD扩充具有一定智能化、参数化的功能,使设计人员的主要精力用于产品的构思和创新设计上,实现真正意义上的计算机辅助设计。

简单地说,AutoLISP是AutoCAD进行用户化、专业化二次开发的一个主要工具。

[1]自R12版本开始,AutoCAD就已经实现了人机交互,很多命令通过对话框来完成则更加直观。

因此DCL应运而生。

DCL是对话框控制语言(Dialogue Control Language)的简称,对话框形象、直观,可以随意输入、随时修改,鼠标、键盘并用,是一种深受用户欢迎的界面。

渐开线圆柱齿轮几何参数计算的计算机辅助设计系统的设计.

渐开线圆柱齿轮几何参数计算的计算机辅助设计系统的设计.

渐开线圆柱齿轮几何参数计算的计算机辅助设计系统的设计论文关键词: 齿轮精度几何参数计算机辅助软件论文摘要:齿轮是机器、仪器中使用最多的传动零件,尤其是渐开线圆柱齿轮的应用更为广泛。

齿轮是一个较复杂的几何体,对单个齿轮的齿廓加工误差国家标准规定了17种控制参数,根据齿轮使用要求的不同,对以上17个参数控制的要求也不同。

如何确定齿轮的精度等级以及依据其精度等级确定相关控制参数的公差值,是齿轮设计的关键所在。

传统的设计方法是依据经验用类比法,结合查表及大量繁杂的公式计算,这样的方法一是工作量大,二是不可能对各参数进行优化及筛选,很难保证齿轮精度设计的合理性。

因此,借用了辅助软件对齿轮的几何参数进行计算后,对齿轮精度的设计及其相关的数据进行计算机处理,使齿轮的精度设计达到快速、准确、合理,齿轮设计起来就没那么费时和吃力了。

引言现行机械行业中在齿轮设计的过程里,非常缺乏对几何参数计算的比较统一的软件,很多时候只是采用手工计算、取大概的数值,对于一些比较复杂的齿轮来说,制造出来的齿轮存在误差较大。

传统的设计方法是依据经验用类比法,结合查表及大量繁杂的公式计算,这样的方法一是工作量大,二是不可能对各参数进行优化及筛选,很难保证齿轮精度设计的合理性。

因此,借用了辅助软件对其进行计算后,对齿轮精度的设计及其相关的数据进行计算机处理,使齿轮的精度设计达到快速、准确、合理,齿轮设计起来就没那么费时和吃力了。

我国现有(1)GB/T10095。

1-2001渐开线圆柱齿轮精度第一部分:轮齿等效ISO1328-1。

(2)GB/T10095。

2-2001渐开线圆柱齿轮精度第二部分:径向综合等效ISO1328-2。

1. 渐开线圆柱齿轮几何参数计算相关研究综述1.1渐开线圆柱齿轮国内的研究现状1.1.1齿轮的简介标准齿轮的结构构造图如图1。

图1 齿轮构造图齿轮的组成结构一般有轮齿、齿槽、端面、法面、齿顶圆、齿根圆、基圆和分度圆。

轮齿简称齿,是齿轮上每一个用于啮合的凸起部分,这些凸起部分一般呈辐射状排列,配对齿轮上的轮齿互相接触,可使齿轮持续啮合运转;基圆是形成渐开线的发生线作纯滚动的圆;分度圆,是在端面内计算齿轮几何尺寸的基准圆。

基于solid works的渐开线直齿圆柱齿轮的参数化设计

基于solid works的渐开线直齿圆柱齿轮的参数化设计

基于solid works的渐开线直齿圆柱齿轮的
参数化设计
渐开线直齿圆柱齿轮的参数化设计,是基于SolidWorks软件进行的设计。

设计过程如下:
1、建立零件文件:打开SolidWorks软件,新建一个零件文件,选择“毫米”作为单位,然后绘制一个圆柱体作为齿轮的轴,设置轴的直径为20毫米,长度为30毫米。

2、绘制齿轮:选择圆柱体表面,然后使用“齿轮”命令绘制齿轮,根据实际需求调整齿轮直径、齿轮宽度、齿数等参数。

3、减去齿顶:使用“切割”命令,将齿顶切割掉,以便后续加工。

4、添加齿根:使用“旋转体”命令,将一个齿根的剖面旋转30度,然后复制并沿圆周方向等间距地排列,形成整个齿根。

5、添加齿廓:使用“曲线”命令,根据渐开线的公式绘制齿廓,然后将其旋转一定角度,以形成整个齿轮的齿廓。

6、检查齿轮参数:在完成齿轮的设计后,打开“设计表”面板,修改各个参数,进行齿轮参数的调整和优化,以满足实际需求。

7、导出零件文件:完成齿轮的设计后,将其导出为STEP或IGES 文件,以进行后续的生产和加工。

总之,基于SolidWorks软件的渐开线直齿圆柱齿轮的参数化设计,需要细致认真地进行各个步骤,以保证齿轮的性能和质量符合实际需求。

基于Autolisp渐开线齿轮三维实体的参数化设计

基于Autolisp渐开线齿轮三维实体的参数化设计

基于Autolisp渐开线齿轮三维实体的参数化设计
肖莉
【期刊名称】《制造业自动化》
【年(卷),期】2010(032)004
【摘要】采用AutoCAD嵌入式开发语言Autolisp编程,程序设计是基于齿轮范成法原理,利用齿条刀具模拟加工齿轮的齿廓,实现对渐开线齿轮进行参数化建模,生成精确度较高的标准齿轮三维模型,该方法有助于建立各种齿轮的CAD参数化模型库.【总页数】3页(P197-199)
【作者】肖莉
【作者单位】广西工业职业技术学院,南宁,530003
【正文语种】中文
【中图分类】TP319
【相关文献】
1.基于SolidWorks的渐开线斜齿轮、锥齿轮参数化设计 [J], 魏勇;沈占彬;邬向伟
2.基于AutoLISP的渐开线齿轮参数化设计 [J], 胡志勇
3.基于AutoLISP的渐开线圆柱齿轮参数化设计及绘图系统 [J], 王永;郭钢;蒋晶;黄红涛;潘军远
4.基于AutoLISP的渐开线修缘齿轮滚刀修缘值参数验证 [J], 张西有
5.基于AutoLISP的渐开线修缘齿轮滚刀修缘值参数验证 [J], 张西有;
因版权原因,仅展示原文概要,查看原文内容请购买。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

k y ”l ”v le ” ” } e = fl ;au = 5 ; i| :di bx Fra bibliotek t o—
{ bl” 轮 1z) ;dtwdh 8 k y ”l ; le 齿 a = (1: e i it= ; e=z” l ” _
:di bx e t o

{ b l” 轮 2 z ) ;dt it= ; ky ”2 ; le 齿 a : (2 : e iw dh 8 ” _ e= z”}
图程 序设 计 , 包括 尺 寸驱 动程 序 , 鼠标 拖 动程 序等 。另一 个
A t IP的 典 应 用 就 是 利 用 A tC D提 供 的 P B模 块 构 成 u LS o uo A D D L Dao o t lL nug ) C ( i g C nr agae 文件 创 建 自己 的对 话 框 。 l o
} :w { r o
:o e bxd

clm { bl” ou nl e 齿轮 参 数 输 入 :; a = ”
: p p lt f bl” 轮 旋 向 : ”lt” 旋\ 右旋 i” p u—i l e:齿 o s a ;s 左 n i= n;
k y ”u n ;au = 0 ; dh 0; e = tr ” v le ” ” wit=1 )
ky f bl” 轮 啮 合 中 心 距 : ;dtwi t =8; e = le 齿 a = ”e i dh
_
:di bx e t o

作全局 选择性 改 变的 程序 事实 上 , 以用 A tLS 可 u IP编制任 o 何 程序 , 或把它嵌 入到菜单 中 , 这样定制 的系统会取得 更高 的 效率 自从 A tLS 嵌入 到A t A uo IP uo D以后 , C 使仅 仅作为交互式冈 形编辑软件 的 A t A uo D变成能真正进行计算机辅助设计 、 C 绘图
以使用 A t IP 言= uo S 语 L 二、 渐开线圆柱齿轮的参数化绘图 参数化绘 图就是将 图形 的尺寸与一定 的设计条件 ( 或约束 条件 ) 相关联 , 即将 图形的尺寸看成是设计条件的函数:当设计
量。易于进行精密加工 , 以取得高精度 , 各种齿轮 中应用最 可 是
为广泛 的一种 齿轮 考 虑到传统设 计 费时 费力 , 且容易 出错 。
l e= 齿 轮轴 参 数输 人 ” a l” b ;
: lmn cu { o
:o e bxd

clmn { bl” 轮轴 结 构 预 览 :; o u le 齿 a = ”
A tLS 目的是使 用户充分利用 A tC D进 行二次开 发, uoIP的 uo A 实 现直接增 加和修改 A tC D命令 、 uo A 随意扩大图形编辑功能 、 建立
下: 1对齿 轮 进 行 分 类 一渐 开 线 网柱 齿 轮 可 分 为分 离 式 和 整 体 .
计算 和绘 图中解放 来 , 实现渐开线网柱齿轮精确和快速 的绘 制。

式。 2利用 D L文件 创建 自己的对话框 , . C 以齿轮轴为例 , 入界 输
面如 图 1 示 , 所 程序 如 下 :
量・糍 息 术 瓣 m- :誓 信 技 : m m
um m翼鞋璧糍 ●鞴 黧 震
一 —
I R D T WO L
瓣瓣
郑州机 械研究 所



钢 蒋 晶 黄 红涛
潘军远
圆柱齿 轮在机械 产品 中应 用十分广 泛 , 且品种 、 格繁 并 规 多。长期 以来 , 在齿形 卜 以采用渐开线齿形为主 , 其传动的速度 和功率范 同很大且效率较高 ?对 中心距 的敏感 性小 , 装配和维 修方便 :可 以进行变位切削及各种修形 、 修缘 , 从而提高传动质
: p pl tae ” 轮 模 数 M ( p u—i { bl 齿 o sl = n mm)l . I ;
l t ’ 8n 2 n 6 i =’ \ 1 \ l s n \2 n0 \ 2 \ ” n 5n :
A t AD软件包 中包含大 多数用 于产生 图形 的命 令 , uo C 但仍
本 文应 用 A tLS 语 言二 次开 发 出渐 开 线 同柱 齿 轮 的 设计 及绘 uo lP 图 系统 , 实现 二 维 参 数 化 绘 制 T程 图 , 设 计 人 员 从 大 量 繁琐 的 将
条件发生变化时 , 图形尺寸便会随之进行相应更新。
根据渐开线圆柱齿轮设计参 数进 行 自动化绘罔 , 其步骤如
有某 些 命 令 未 被 提 供 。例 如 , uo A A t D中 没 有 在 冈 形 文 本 对 象 C 内 绘 制 矩 形 及 作 令 局 改 变 的命 令 。 通 过 A tIS 你 可 以 使 uo IP, 用 A t IP程 序 语 言 编 制 能 够 在 图 形 文 本 对 象 内绘 制 矩 形 或 uo S L
图形 库 和 数 据 库 并 对 当前 罔形 进 行 直 接 访 问 和 修 改 、 发 C D 开 A 软 件包 等 : A t IP 言最 典 型 的应 用 之 一 是 实现 二 维 三维 参 数 化绘 uo S 语 L
: ae it= O hi tl ; ky ” g z;oo- 2 } i g{ dh 3 ; e h= 5 m w g e= i _ ”clr一 ; m =
c i nhu i 0{ h1 z 0 : a g u d l

A tLS 简 介 uo 1P
LS (i Poes g L nug ) 一种计算 机 的表 处理 IP Ls r si ag ae是 t c n
语 言 , 在 人 T 智 能 学 科 领 域 广 泛 应 用 的 一 种 程 序设 计 语 言 。 是 A tLS 语 言 是 嵌 套 于 A t A uoIP u C D内部 , LS 语 言 和 A tC D o 将 IP u A o 有 机 结 合 的 产 物 : 美 国 A t1 S u ) K公 司 在 A t A1内 部 嵌 入 oE uo ) C
相关文档
最新文档