Visual_LISP课件13.ppt_第1页
Visual_LISP课件13.ppt_第2页
Visual_LISP课件13.ppt_第3页
Visual_LISP课件13.ppt_第4页
Visual_LISP课件13.ppt_第5页
已阅读5页,还剩69页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第13章综合应用实例,本章介绍两个以对话框设计为主的两个综合应用实例。实例一是定义绘制多种螺钉的命令。该实例建立了互动关系的图像按钮和列表,供用户直观地选择螺钉种类;通过“自定义尺寸”切换开关控制一些控件的状态,若该切换开关关闭,表示绘制标准螺钉,标准螺钉的数据只需在列表中选择,自定义尺寸的编辑框处于禁用状态;反之,螺钉的标准数据列表处于禁用状态,此时在自定义尺寸的编辑框输入数据,即可绘制出非标准的螺钉。实例二是定义范成法加工齿轮的命令。调用该命令即可仿真演示范成法加工齿轮的过程,逼真地演示了生成渐开线齿形的原理。该实例利用图元名作为选择图形对象的手段,利用面域作为加工的刀具和对象,利用布尔差运算完成了齿轮的加工。在调用命令的过程中,被加工齿轮的模数、压力角从下拉列表中选择,齿数、变位系利用具有互动关系的编辑框和滑动条输入,通过互鎻按钮确定齿廓精度。齿轮加工完毕,显示其几何参数,并可以将其参数输入到指定的文件。,13.1定义绘制多种螺钉的命令螺钉是最常用的标准件,它的结构、尺寸参数在国家标准中有详细的规定。螺钉是由标准件厂专门生产的,一般的厂家只是选用螺钉。因此只有在绘制部件图时才绘制螺钉。传统的手工绘制螺钉的步骤是:根据具体的应用场合确定螺钉的种类,初步计算所需螺钉的大径和长度;查阅机械零件设计手册,确定螺钉的大径、长度和其他有关结构的尺寸;根据指定的位置和方向绘制螺钉(通常是外形图)。在CAD环境下,计算机提供螺钉的种类和标准数据供设计人员选择,设计人员只需确定螺钉的位置和方向,其余的工作,主要是繁琐的绘图由计算机去完成。,13.1.1文件和使用说明1.文件说明本程序由以下三种类型的10个文件组成。(1)对话框定义文件文件名为13-1.dcl,存放在d:exampledcl路径下。该文件定义了确定螺钉种类的主对话框main_dlg和确定螺钉参数的子对话框children_dlg。(2)AutoLISP源文件文件名为13-1.lsp,存放在自定的路径下。该文件是驱动对话框并绘制各种螺钉的AutoLISP源程序。(3)幻灯片文件显示在主对话框的幻灯片文件有:13-1scr0.sld、13-1scr1.sld、13-1scr2.sld和13-1scr3.sld。显示在子对话框的幻灯片文件有:13-1screw0.sld、13-1screw1.sld、13-1screw2.sld和13-1screw3.sld。它们存放在d:examplesld路径下。,2.使用说明(1)安装和加载从电子教案中找出上述文件并复制到指定的路径,加载13-1.lsp。(2)调用绘制螺钉的命令种类确定螺钉的种类在“command:”提示下,输入screw命令,弹出图13-1所示确定螺钉种类对话框。,图13-1确定螺钉种类对话框,图13-2确定螺钉参数对话框,(3)确定螺钉的种类图13-1所示对话框提供了互动的图像按钮和螺钉种类的列表,通过该对话框选择一种螺钉,单击“继续”按钮,弹出图13-2所示确定螺钉参数的对话框。,(4)确定螺钉的几何参数通过“螺钉大径d”的列表选择螺钉的大径d。通过“螺钉长度L”的列表选择螺钉的的长度L。如果需要绘制非标准尺寸的螺钉,打开“自定义尺寸”切换开关。“螺钉大径d”和“螺钉长度L”列表从可用改变为禁用的状态,“自定义大径d”和“自定义长度L”编辑框从禁用改变为可用的状态。通过“自定义大径d”和“自定义长度L”编辑框输入自定义的螺钉尺寸。螺钉的定位点和旋转角既可以在相应的编辑框输入数值,也可以单击“光标拾取”按钮,用鼠标在屏幕上确定。,(5)确定绘制螺钉的其他参数因为螺钉的中心线可能与部件图上已有的中心线重合,所以提供了“绘制中心线”切换开关。当该开关处于打开状态时绘制中心线。对话框右下角的三个颜色块是确定三种线型颜色的图像按钮,单击之后弹出AutoCAD标准颜色对话框,选择一种颜色之后,相应的图像按钮的颜色随之改变。图像按钮的含义,在其左侧用text(文本)控件辅助说明。(6)绘制螺钉因为4种螺钉只是头部不同,因此编写了4个分别绘制每种螺钉头部的函数和一个绘制螺柱的函数。前者调用后者,单击“OK”按钮,即可完成整个螺钉的绘制。,13.1.2定义对话框文件【例13-1】定义绘制多种螺钉命令的对话框定义文件。/主对话框的名字是“main_dlg”,共有两个行(row)main_dlg:dialoglabel=确定螺钉种类:;:row/第一行开始,该行有一个加框列和一个列表:boxed_column/加框列开始,该列有两行,每行有两个图像按钮label=“选择螺钉种类:”;:row/列内第一行开始,该行有两个图像按钮:image_button/图像按钮1color=-2;width=15;,aspect_ratio=0.66;key=screw_0;:image_button/图像按钮2color=-2;width=15;aspect_ratio=0.66;key=screw_1;/列内第一行结束:row/加框列内第二行开始,该行有两个图像按钮:image_button/图像按钮3color=-2;width=15;aspect_ratio=0.66;key=screw_2;,:image_button/图像按钮4color=-2;width=15;aspect_ratio=0.66;key=screw_3;/加框列内第二行和加框列结束:list_boxlabel=螺钉种类;/列表开始list=GB/T65-2000nGB/T68-2000nGB/T5780-2000nGB/T70.1-2000;/初值key=s_type;width=15;fixed_width=true;/列表结束/第一行结束,:row/第二行开始,该行有两个按钮和两个间隔spacer_1;/第一个间隔:buttonlabel=继续;key=accept;is_default=true;fixed_width=true;/继续按钮:buttonlabel=“退出”;key=cancel;fixed_width=true;/退出按钮spacer_1;/第二个间隔/第二行结束,以上两个按钮的关键字只能是accept和cancel。/“main_dlg”主对话框定义结束,/子对话框的名字是“children_dlg”,共有两个行(row)children_dlg:dialoglabel=确定螺钉参数;:row/第一行开始,该行有一个图像和两个列表:imagecolor=-2;width=22;aspect_ratio=0.6;key=id_img;/图像:list_boxlabel=“螺钉大径,fixed_height=true;/大径列表结束:list_boxlabel=螺钉长度/加框列,有两个编辑框和一个按钮,:edit_boxlabel=“定位点,:buttonlabel=光标拾取l(*2d);螺钉长度大于二倍直径(progn(setqp9(polarp3(+alfpi)(*2d)(setqp1(polarp4(+alfpi)(*2d)(setqp8(polarp5(+alfpi)(*2d)(setqp10(polarp6(+alfpi)(*2d)(commandlinep9p10);绘制螺纹终止线)(commandcolortc)(commandlinep1p4);绘制螺纹小径(commandlinep5p8),(if(=cen_md1);中心线切换开关为打开状态(progn;绘制中心线(setqdl(cond(=s_t0)(*1.1d)(=s_t1)d)(=s_t2)(*1.2d)(=s_t3)(*1.5d)(commandcolorcc)(commandlinetypescenter)(setqpr(polarp0(+alfpi)dl)(setqpl(polarp0alf(+l(*0.5d)(commandlineplpr)(commandlinetypesbylayer),13.2建立范成法加工齿轮的仿真演示程序范成法加工齿轮是机械原理课程的重要内容。用传统的教具演示范成法加工齿轮的过程存在着以下不足:(1)齿轮的模数、压力角通常是固定的,齿数的可选范围是有限的。(2)只有几个齿的齿廓比较清晰。(3)生成齿轮的动态效果不够,演示所需的时间较长。在CAD环境下建立的范成法加工齿轮的仿真演示程序可以弥补传统教具的不足。可以在较短的时间动态地加工好一个完整的齿轮。齿轮的模数、齿数、压力角、变位系数都可以是任选的。特别是在多媒体的教学环境下,可以达到非常好的教学效果。13.2.1程序的工作原理与运行过程程序仿照用滚刀范成法加工齿轮的工作原理,其运行过程如下:(1)根据齿轮的模数、齿数、压力角、变位系数和齿轮的厚度生成齿轮毛坯和齿条,见图13-3a。齿条的初始位置应保证其节线与齿轮的节圆相切。,abc图13-3范成法加工齿轮演示程序的工作原理,(2)复制一个齿条。复制的齿条与原齿条重合。(3)调用布尔差(subtract)命令,从齿轮毛坯减去复制的齿条,得到新的齿轮毛坯。(4)调用旋转命令,将新的齿轮毛坯绕其中心旋转角度;调用平移命令,将齿条沿节线方向移动r,r是齿轮的节圆半径,见图13-3b。重复步骤(2)至(4)。当齿轮毛坯绕其中心累计旋转360时就得到了完整的齿轮,见图13-3c。显然,每次转动齿轮毛坯的角度越小,齿廓就越光滑,但所需的运算时间和存储空间也会增加。,如果齿条只能单向移动,它的齿数不能少于齿轮的齿数,这样不仅齿条很长,也增加了CAD系统的负担。如果加工完一个或几个齿之后,将齿条返回到它的初始位置,这样的齿条虽然齿数不多,但同样可以切削出更多齿数的齿轮。面域(region)可以看作是厚度为零的形体。用面域代替3维的齿条和齿轮毛坯,其轴向视图是相同的,还可以减少运算时间和存储空间。13.2.1需要解决的几个问题通过程序创建图形对象,对指定的图形对象进行编辑是本程序必须要解决的几个问题。(1)获取图形对象的图元名和交互作图一样,编辑图形必须指定被编辑的图形对象。每个图形对象都有一个唯一的图元名,从图形库获取图形对象的图元名是选择图形对象最可靠的途径。entlast函数的功能是从图形库获取最新生成的图元名。因此,只要在创建新的图形对象之后调用entlast函数即可获取该对象的图元名。,(2)生成齿条和齿轮毛坯参照图13-4所示的齿条和齿轮毛坯的视图,根据齿轮的模数、齿数、压力角和变位系数确定绘制齿条和齿轮毛坯所需的各点的坐标p0、p1、p2、。调用pline命令绘制封闭的齿条轮廓线。调用region命令将齿条轮廓线转换为面域。调用circle命令绘制圆。调用region命令将圆转换为齿轮毛坯的面域。,图13-4齿条和齿轮的初始位置,(3)用齿条切削齿轮毛坯调用subtruct命令从齿轮毛坯减去齿条。虽然得到了被切削一次的齿轮毛坯,但是作为刀具的齿条随之消失。因此,必须在每次切削之前调用copy命令复制一个齿条,使得齿条象加工齿轮的滚刀一样经久耐用。(4)平移齿条和旋转齿轮毛坯调用move命令将复制的齿条沿X方向平移dx,调用rotate命令将齿轮毛坯绕齿轮中心旋转d,并满足dx=rd,r是齿轮的节圆半径。当dx累计移动到一个(或几个)齿距之后,再从零开始移动。13.2.3程序文件和使用说明1.文件说明本程序共有以下三种类型的4个文件。13-2.dcl:对话框定义文件。该文件定义了图13-5所示的范成法加工齿轮的对话框和图13-5所示的齿轮参数的对话框。该文件存放在d:exampledcl路径下。,13-2.lsp:范成法加工齿轮仿真演示程序的AutoLISP源文件,存放在d:examplelisp路径下。13-2-1.sld和13-2-2.sld:它们分别是显示在对话框一和显示在对话框二的幻灯片文件,存放在d:examplesld路径下。4.程序使用说明加载13-2.lsp文件,在Command提示下输入mgear命令,弹出图13-5所示范成法加工齿轮对话框。输入齿轮的参数,单击OK按钮,即可看到范成法加工齿轮的动态的整个过程。,图13-5范成法加工齿轮对话框,齿轮加工完毕,自动弹出图13-6所示齿轮参数的对话框,显示齿轮的一些几何参数。单击结束按钮,结束演示;单击写到文件按钮,将显示的齿轮几何参数写到指定的文件。,图13-6齿轮参数的对话框,13.2.4定义范成法加工齿轮的对话框文件【例13-2】定义范成法加工齿轮的对话框,见图13-5和图13-6。/定义对话框一,见图13-5。mgear:dialog/对话框的名字是mgear,共两个行label=范成法加工齿轮;:row/第一行,有一个图像和一个列:imagewidth=35;/图像height=12;key=image;color=-2;:column/列,有5个行:row/列内第1行,有两个下拉列表,:popup_listlabel=模数,:sliderkey=s_z;min_value=8;max_value=100;small_increment=1;:row/列内第3行,有一个编辑框和一个滑动条:edit_boxlabel=变位系数,:sliderkey=s_x;min_value=-100;max_value=100;small_increment=1;value=0;:boxed_radio_row/列内第4行,有一个加框互鎻按钮行label=齿廓精度;:radio_buttonlabel=较低;key=prec0;:radio_buttonlabel=一般;key=prec1;:radio_buttonlabel=较高;key=prec2;value=1;,/列结束/第一行结束ok_cancel;/定义对话框二,见图13-6gear_list:dialog/对话框的名字为gear_list,有两个行label=齿轮参数;:row/第1行,有一个图像和一个列:imagewidth=35;/图像height=12;key=image2;color=-2;,:column/列,有7个文本:textvalue=模数m:;key=t1;:textlabel=齿数z:;key=t2;:textlabel=压力角a:;key=t3;:textlabel=变位系数x:;key=t4;:textlabel=分度圆直径d:;key=t5;:textlabel=齿顶圆直径da:;key=t6;:textlabel=齿根圆直径di:;key=t7;:row/第2行,有2个按钮和2个衬垫,衬垫的作用是使“结束”和“写到文件”按钮的位置趋向中间。spacer_1;,spacer_1;:buttonlabel=结束;key=accept;is_default=true;fixed_width=true;:buttonlabel=写到文件;key=xwj;fixed_width=true;spacer_1;,13.2.5编写范成法加工齿轮的仿真演示源程序1.函数说明(1)dlg1:初始化对话一。(2)getd:获取控件当前的数据。(3)fz:齿数编辑框的活动。(4)fsz:齿数滑动条的活动。(5)f_x:变位系数编辑框的活动。(6)fs_x:变位系数滑动条的活动。(7)makegear:加工齿轮。(8)showdata:显示齿轮的参数。(9)fwfile:将齿轮参数写到指定文件。(10)mgear:主函数,mgear是定义的AutoCAD命令名。,2.主要变量说明msh:模数,msh_:模数序号,ylj:压力角,ylj_:压力角序号,chsh:齿数,chgao:齿顶高,chdgaoxsh:齿顶高系数,chdjx:顶隙系数,bwxsh:变位系数,chw:周节,chlzhx:齿轮中心,fdybj:分度圆半径,dybj:齿顶圆半径,kbj:齿轮孔径,jybj:节圆半径,chtgen:齿轮中心到齿条根部的距离,lm1:图纸界限的左下角,lm2:图纸界限的右上角,qxcsh:每个齿的切削次数,dx:齿条移动距离,dphi:齿轮毛坯旋转角。3.范成法加工齿轮的仿真演示程序【例13-2】范成法加工齿轮的仿真演示程序(defundlg1();初始化对话一(set_tile_m5);模数列表第6项(set_tile_z20);齿数20(set_tile_alf2);压力角第3项(set_tiles_z20);齿数滑动条(set_tilecut2);齿廓列表第3项,(action_tile_m(setqmsh_$value)(action_tiles_z(fsz)(action_tile_z(fz)(action_tiles_x(fs_x)(action_tile_x(f_x)(action_tile_alf(setqylj_$value)(action_tileprec0(setqqxcsh5)(action_tileprec1(setqqxcsh10)(action_tileprec2(setqqxcsh15)(action_tileaccept(getd)(done_dialog1)(action_tilecancel(done_dialog0)(action_tilehelp(dlg3),;定义获取控件当前数据的函数(defungetd()(setqmsh_(get_tile_m)(setqmsh(atof(nth(atoimsh_)m_lst);模数(setqylj_(get_tile_alf)(setqylj(atof(nth(atoiylj_)alf_lst);压力角(setqbwxsh(atof(get_tile_x);变位系数(setqchsh(atoi(get_tile_z);齿数),;定义齿数编辑框的活动的函数(defunfz(/gz)(setqgz(atoi$value)(if(or(gz100)(progn(set_tile$key(get_tiles_z)(setqchsh(atoi$value)(progn(set_tiles_z(itoagz)(setqchshgz),;定义齿数滑动条的活动的函数(defunfsz()(set_tile_z$value)(setqchsh(atoi$value);定义变位系数滑动条的活动的函数(defunfs_x(/xx)(setqxx(atof$value)(setqbwxsh(*0.01xx)(setqxx(rtosbwxsh22)(set_tile_xxx),;定义变位系数编辑框的活动的函数(defunf_x(/xx)(setqxx(atof$value)(if(or(xx1)(progn(setqxx(get_tiles_x)(setqxx(atofxx)(setqbwxsh(*0.01xx)(set_tile$key(rtosbwxsh22)(progn(setqbwxshxx)(setqxx(*100 xx)(set_tiles_x(itoaxx),;定义齿轮加工的函数(defunmakegear()(setqchlzhx(00);齿轮中心(setqylj(*pi(/ylj180.0);度转换为弧度(setqchgao(*msh(+chdgaoxshbwxsh);齿高=1(setqfdybj(*0.5(*mshchsh);分度圆半径(setqdybj(+fdybj(*msh(+chdgaoxshbwxsh);齿顶圆半径(setqkbj(*0.25dybj);轮孔半径(setqlm1(list(-(carchlzhx)(*2dybj)(+(lastchlzhx)dybj);图纸界限的左下角(setqlm2(list(+(*5msh)(carchlzhx)dybj)(-(lastchlzhx)(+10.0(*chdjxmsh)dybj);图纸界限的右上角(commandzoomlm1lm2),(setqjybj(+fdybj(*bwxshmsh);节圆半径=分度圆半径+变位量(setqtemy1(*msh(+chdjxchdgaoxsh);齿顶高1+齿顶间隙0.25(setqchtgen(+jybjtemy1);齿轮中心到齿条根部的距离(setqchtdi(+chtgen3.0);齿轮中心到齿条底根部的距离(setqchtdi(-(cadrchlzhx)chtdi);齿条下底的y(setqchtzuo(-(carchlzhx)(*2jybj);齿条左边x(setqp01(listchtzuochtdi)(setqchw(*pimsh);周节(setqchtgeny(+chtdi3.0);齿条根y(setqp0(listchtzuochtgeny)(setqchh(*2.0temy1);齿条全齿高(setqchb(/(*chh(sinylj)(cosylj)(setqcha(*0.25(-chw(*2chb),(setqchnu(*0.5chsh);齿条的齿数(setqchnum0.0)(commandcolorwhite)(setqchtempp0)(commandplinep01p0)(while(start_dialog)1)(fwfile),;定义将齿轮参数写到指定文件的函数(defunfwfile()(setqfname(getfiled输入存放齿轮参数的文件txt1)(setqfp(openfnamew)(write-line(strcat模数m:(rtosmsh22)fp)(write-line(strcat齿数z:(itoachsh)fp)(write-line(strcat压力角a:(rtosylj22)fp)(write-line(strcat变位系数x:(rtosbwxsh22)fp)(write-line(strcat分度圆直径d:(rtos(*2fdybj)22)fp)(write-line(strcat齿顶圆直径da:(r

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论