《机床数控技术》课程设计说明书_第1页
《机床数控技术》课程设计说明书_第2页
《机床数控技术》课程设计说明书_第3页
《机床数控技术》课程设计说明书_第4页
《机床数控技术》课程设计说明书_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

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

文档简介

1、机床数控技术课程设计说明书 班级:0507105 学号:050710521 姓名: 指导教师: 时间:2011年1月 地点:明故宫校区计算中心目 录 一、简要说明 3 二、设计目的 3 三、设计要求 3 四、设计任务 3 五、设计过程 4 5.1 逐点比较法圆弧插补 4 5.1.1 逐点比较法圆弧插补原理及运算过程 4 5.1.2 流程图设计 6 5.1.3 变量说明及简单的程序实现 8 5.2 dda法直线插补 9 5.2.1 dda法直线插补原理及运算过程 9 5.2.2 流程图设计 11 5.2.3 变量说明及简单的程序实现 12 六、设计总结 14 附录a 程序运行结果 15附录b 源

2、程序代码 18参考文献 33一、简要说明 插补 (interpolation) 在数控机床中,刀具不能严格地按照要求加工的曲线运动,只能用折线轨迹逼近所要加工的曲线。 插补(interpolation)定义:机床数控系统依照一定方法确定刀具运动轨迹的过程。也可以说,已知曲线上的某些数据,按照某种算法计算已知点之间的中间点的方法,也称为“数据点的密化”。数控装置根据输入的零件程序的信息,将程序段所描述的曲线的起点、终点之间的空间进行数据密化,从而形成要求的轮廓轨迹,这种“数据密化”机能就称为“插补”。 插补计算就是数控装置根据输入的基本数据,通过计算,把工件轮廓的形状描述出来,边计算边根据计算结

3、果向各坐标发出进给脉冲,对应每个脉冲,机床在响应的坐标方向上移动一个脉冲当量的距离,从而将工件加工出所需要轮廓的形状。 插补的原理和算法很多,根据数控系统输出到伺服驱动装置的信号的不同,插补方法可归纳为基准脉冲插补和数据采样插补两种类型。二、设计目的(1) 了解连续轨迹控制数控系统的组成原理。(2) 了解逐点比较法和dda法插补直线和圆弧的基本原理。(3) 掌握逐点比较法和dda法插补的软件实现基础。三、设计要求(1) 具有数据输入界面,如起点、终点、圆心、半径及插补步长等;(2) 具有插补过程的动态显示功能,如单步插补、连续插补;(3) 适当的编程语言,详细的程序设计流程图,变量说明、源程序

4、;(4) 插补的步长可调。四、设计任务 pc41 逐点比较法插补第4-1象限逆圆弧 dl3 dda法插补第三象限直线五、设计过程5.1 逐点比较法圆弧插补5.1.1 逐点比较法圆弧插补原理及运算过程 逐点比较法的基本原理是被控对象在按要求的轨迹运动时,每走一步都要与规定的轨迹进行比较,由此结果决定下一步移动的方向。每进给一步都要完成四个工作节拍:偏差判断、坐标进给,偏差计算、终点判别。 设要加工图3-1所示的第一象限逆时针走向的圆弧ab,半径为r,以圆点为圆心,起点坐标为a(,),在xy坐标平面第一象限中,点的加工偏差有以下3种情况。若加工点正好落在圆弧上,则下式成立,即 若加工点落在圆弧外侧

5、,则,即 若加工点落在圆弧内侧,则,即将上面各式分别改写为下列形式,即 (在圆弧上) (在圆弧外侧) (在圆弧内侧)取加工偏差判别函数为 若点在圆弧外侧或圆弧上,则满足的条件时,向轴发出一负向运动的进给脉冲;若点在圆弧内测,即满足条件的条件时,则向轴发出一正向运动的进给脉冲。为了简化偏差判别式的运算,仍用递推法来推算下一步新的加工偏差。设加工点在圆弧外侧或圆弧上,则加工偏差为 故轴必须向负方向进给一步,移动到新的加工点,其加工偏差为 (5-1)设加工点在圆弧的内测,则。那么y轴须向正向进给一步,移到新的加工点,其加工偏差为 (5-2)同理,插补第一象限顺时针圆弧时,偏差判别函数为 (5-3)当

6、(5-4) 而插补其他象限的圆弧时,可采用坐标变换法统一于第一象限的逆圆弧插补公式,都按第一象限逆圆弧进行插补计算,而进给脉冲的方向则由实际象限决定。插补四个象限的顺、逆圆弧时偏差符号和进给方向可用下面简图表示。插补四个象限的顺、逆圆弧时偏差符号和进给方向如下图。 f0顺圆逆圆f0 y顺圆逆圆逆圆逆圆顺圆顺圆f0f0f0f0f0f0f0f0f0f0f0f0f0f0 x 图5-2 逐点比较法插补不同象限顺、逆圆弧的偏差符号和进给方向图5-3 圆弧过象限 另外,逐点比较法插补圆弧时,相邻圆弧插补方法不同,计算方法也不同。要完成过象限的功能,首先应判别何时过象限。过象限有一显著特点,就是过象限时刻正

7、好是圆弧与坐标轴相交的时刻,因此在两个坐标值中必有一个为零,判断是否过象限只要检查是否有坐标值为零即可。通过该点后,变换插补运算再进行计算。5.1.2 流程图设计综上所述,逐点比较法圆弧插补的全过程,每走一步都要进行以下四个节拍:第一节拍偏差判别:判断刀具当前位置相对于给定的轮廓的偏差情况,以此决定刀具移动的方向;第二节拍坐标进给:根据偏差判断结果,控制刀具相对于工件轮廓进给一步,即向给定的轮廓靠拢,减小偏差;第三节拍偏差计算:由于刀具进给已经改变了位置,因此应计算出刀具当前位置的新偏差,为下次判别做准备;第四节拍终点判别:判别刀具是否已到达被加工轮廓的终点。若已经到达终点,则停止插补;若还未

8、到达终点则继续插补。如此不断重复上述四个节拍就可以加工出所要加工的轮廓。 由此便可设计出第4-1象限逆圆弧逐点比较法插补流程图。 运算中f寄存偏差值为;x和y分别寄存x和y动点的坐标值,开始分别存放和;e为寄存终点判别值:。起始ynny 初始化 x0x,y0y 0f,ne nyf0 ?+y向走一步x向走一步f0 ?+y向走一步+x向走一步f+2y+1f y+1yf2x+1f x1xf+2x+1f x+1xf+2y+1f y+1ye1en e=0 ?y0 ?y结束5.1.3 变量说明及简单的程序实现 根据上面的分析及设计流程图的基本思想,现采用vc+语言对其进行具体的程序实现。最终设计的界面如下

9、图: 该程序运行时首先要输入插补圆弧插补方向,然后再选择适当的象限,输入起点和终点x、y坐标,圆心对终点的增量坐标以及插补步长,再点击“实际轮廓”按钮显示原始的加工轮廓,点击“插补轨迹”按钮,显示插补拟合的轨迹,若需要继续进行下一次模拟,则可以点击“重新开始”按钮,继续输入下一组数据进行模拟,点击“退出程序”则退出界面。有关控件设置及相关变量说明如下表所示。 程序界面控件设置以及相关变量说明: 控件id 对应变量 相关说明 idc_radio1 插补方向为顺时针 idc_radio2 插补方向为逆时针 idc_combo1 选择插补起始点象限 idc_combo2 选择插补结束点象限 idc_

10、edit1 x0 起点横坐标 idc_edit2 y0 起点纵坐标 idc_edit3 xe 终点横坐标 idc_edit4 ye 终点纵坐标 idc_edit5 dx 圆心对终点横坐标增量 idc_edit6 b “插补步长” idc_button1 “实际轮廓” idc_button2 “重新开始” idc_button3 “连续插补” idc_button4 “单步插补” idcancel 退出程序 idc_static_draw 显示图形的窗口 注:软件运行情况及源程序见附录5.2 dda法直线插补5.2.1 dda法直线插补原理及运算过程在x-y平面上对直线oa进行插补,如图5-4所

11、示,直线的起点在原点o(0,0),终点为a(xe, ye),设进给速度v是均匀的,直线oa的长度为l,则有 其中vx、vy表示动点在x和y方向的移动速度,k为比例系数。由式可得 在时间内,x和y方向上的移动距离微小增量、应为 将式代入得 因此,懂点从原点走向终点的过程,可以看作是各坐标每经过一个单位时间间隔分别以增量、同时累加的结果。设经过m次累加后,x和y方向分别都到达终点,则 取,则有 式变为 由式可知,即 因为累加次数m必须是整数,所有比例系数k一定为小数。选取k时主要考虑、应不大于1,以保证坐标轴上每次分配的进给脉冲不超过一个单位步距,即由式得 另外,、的最大容许值受寄存器位数n的限制

12、,最大值为,所以由式得 ,即一般取则有上式说明dda法直线插补的整个过程要经过次累加才能到达直线的终点。以上仅讨论了dda法插补第一象限直线的原理和计算公式,插补其它象限的直线时,一般将终点坐标取绝对值,这样,它们的插补计算公式与第一象限时一样,而脉冲进给方向总是直线终点坐标绝对值增加的方向。5.2.2 流程图设计采用dda法插补时,累计器清零,被积函数寄存器分别寄存和;插补开始后,每来一个累加脉冲,被积函数寄存器里的坐标值在相应的累加器中累加一次,累加后的溢出作为驱动相应坐标轴的进给脉冲和,而余数仍寄存在累加器中。当累加脉冲数等于以脉冲当量为最小单位的终点坐标,表明刀具运行到终点,停止插补运

13、算。用软件实现dda法直线插补时,在内存中设立几个存储单元,分别存放及其累加值和及其累加值,在每次插补运算循环过程中进行以下求和运算: 。用运算结果溢出的脉冲和来控制机床进给,就可走出所需的直线轨迹。根据以上讨论便可设计出dda法插补第三象限直线的程序流程图。 mm1结束m=0吗? 初始化xexe, yeye累计次数mm, xe,ye清零xexe+xeyeye+yex向走一步xe有溢出吗?ye有溢出吗?ynyy向走一步nny 图5-5 dda法插补第三象限直线的程序流程图5.2.3 变量说明及简单的程序实现采用vc+设计界面如下图。程序运行时首先输入象限,输入起点和终点x、y坐标以及插补步长,

14、再点击“连续”“单步”按钮显示原始的加工轮廓和插补轨迹,点击“重设”按钮,继续输入下一组数据进行模拟,点击“取消”则退出界面。 有关控件设置及相关变量说明如下表所示。 控件id 对应变量 相关说明 idc_radio 选择插补象限 idc_edit1 x0 起点横坐标 idc_edit2 y0 起点纵坐标 idc_edit3 xe 终点横坐标 idc_edit4 ye 终点纵坐标 idc_edit5 b 插补步长 idc_button1 “连续” idc_button3 “单步” idc_button2 “重设” idcancel “取消” idc_static_draw 显示图形的窗口 注:

15、软件运行情况及源程序见附录6、 设计总结本次设计采用了一种用计算机来模拟数控插补的方法,在充分利用vc设计语言简单直观的基础上,使数控插补原理的实现更加形象化。通过这次课程设计,使我对插补原理以及数控机床的工作原理有了更深一层的认识,同时通过借助vc+语言来完成设计,也对vc+的编程思想与编程方法有了进一步的了解。通过这次课程设计,不仅提高了我们综合运用所学知识发现、分析、解决实际问题的能力,同时也很好的锻炼了我们的思维能力与实践能力。虽然只有短短的一个星期,但却可以学到很多的东西。既巩固了以前所学的专业知识,又学到了一些书本上根本就没有的东西。做好一份课程设计,首先要有一个清晰的思路和一个完

16、整的设计步骤。通过查阅各方面的文献与资料,来不断完善设计的内容,使其更加完整。在设计程序时,不能妄想一次就将整个程序设计好,要反复修改,不断优化。做到有条不紊,这样出现错误时会让自己更方便地检查。另外,做一件事时要专心、细致,尤其是要有耐心。设计过程好比人成长的过程,常有一些不如意,也常会遇见一些挫折与困难,但困难并不可怕,可怕的是面对困难时没有去正视它解决它的勇气与热情。只要充满信心,坚持不懈的走下去,那点困难绝不是前方道路上的绊脚石,而是通往成功之峰的阶梯。 回望这一周的历程,看着桌上厚厚的一沓草稿纸和一旁摞得高高的参考书,一种成功的喜悦的心情油然而生。一分耕耘一分收获。虽然在此过程中苦多

17、于甜,但正是这些无处不在的“苦”充实了自己,历练了性格,增长了人生阅历。也许并没有做到最好,但是毕竟努力去做了。课设虽已结束,但这个过程中所体现出的那种严谨的分析、解决问题的思想,以及周到细密的处事步骤与方法,对自己以后的学习和生活都大有裨益!附录a 程序运行结果.逐点比较法插补第4-1象限逆圆弧 运行结果: 第一组数据:起点坐标(3,-6),终点坐标(2,8),横坐标增量dx=0,步长b=1,运行结果如下: 第二组数据,改变步长:起点坐标(7,-5),终点坐标(3,5),横坐标增量dx=0,步长b=2,运行结果如下: .dda法插补第3象限直线 运行结果: 第一组数据:起点坐标(-2,-1)

18、,终点坐标(-9,-7),步长b=1,运行结果如下: 第二组数据,改变步长:起点坐标(-1,-2),终点坐标(-9,-8),步长b=2。 附录b 源程序代码.逐点比较法插补第4-1象限逆圆弧/ pcdlg.cpp : implementation file/#include stdafx.h#include pc.h#include pcdlg.h#include math.h#define m 17 int m_radio;#ifdef _debug#define new debug_new#undef this_filestatic char this_file = _file_;#end

19、if/ caboutdlg dialog used for app aboutclass caboutdlg : public cdialogpublic:caboutdlg();/ dialog data/afx_data(caboutdlg)enum idd = idd_aboutbox ;/afx_data / classwizard generated virtual function overrides/afx_virtual(caboutdlg)protected:virtual void dodataexchange(cdataexchange* pdx); / ddx/ddv

20、support/afx_virtual/ implementationprotected:/afx_msg(caboutdlg)/afx_msgdeclare_message_map();caboutdlg:caboutdlg() : cdialog(caboutdlg:idd)/afx_data_init(caboutdlg)/afx_data_initvoid caboutdlg:dodataexchange(cdataexchange* pdx)cdialog:dodataexchange(pdx);/afx_data_map(caboutdlg)/afx_data_mapbegin_m

21、essage_map(caboutdlg, cdialog)/afx_msg_map(caboutdlg)/ no message handlers/afx_msg_mapend_message_map()/ cpcdlg dialogcpcdlg:cpcdlg(cwnd* pparent /*=null*/): cdialog(cpcdlg:idd, pparent)/afx_data_init(cpcdlg)/ note: the classwizard will add member initialization here/afx_data_init/ note that loadico

22、n does not require a subsequent destroyicon in win32m_hicon = afxgetapp()-loadicon(idr_mainframe);void cpcdlg:dodataexchange(cdataexchange* pdx)cdialog:dodataexchange(pdx);/afx_data_map(cpcdlg)ddx_control(pdx, idc_button3, m_button3);ddx_control(pdx, idc_combo2, m_combo2);ddx_control(pdx, idc_combo1

23、, m_combo1);ddx_control(pdx, idc_button2, m_button2);ddx_control(pdx, idc_button1, m_button1);/afx_data_mapbegin_message_map(cpcdlg, cdialog)/afx_msg_map(cpcdlg)on_wm_syscommand()on_wm_paint()on_wm_querydragicon()on_bn_clicked(idc_radio1, onradio1)on_bn_clicked(idc_radio2, onradio2)on_cbn_selchange(

24、idc_combo1, onselchangecombo1)on_cbn_selchange(idc_combo2, onselchangecombo2)on_bn_clicked(idc_button1, onbutton1)on_bn_clicked(idc_button2, onbutton2)on_bn_clicked(idc_button3, onbutton3)/afx_msg_mapend_message_map()/ cpcdlg message handlersbool cpcdlg:oninitdialog()cdialog:oninitdialog(); / add ab

25、out. menu item to system menu. / idm_aboutbox must be in the system command range.assert(idm_aboutbox & 0xfff0) = idm_aboutbox);assert(idm_aboutbox appendmenu(mf_separator);psysmenu-appendmenu(mf_string, idm_aboutbox, straboutmenu); / set the icon for this dialog. the framework does this automatical

26、ly/ when the applications main window is not a dialogseticon(m_hicon, true);/ set big iconseticon(m_hicon, false);/ set small icon/ todo: add extra initialization herereturn true; / return true unless you set the focus to a controlvoid cpcdlg:onsyscommand(uint nid, lparam lparam)if (nid & 0xfff0) =

27、idm_aboutbox)caboutdlg dlgabout;dlgabout.domodal();elsecdialog:onsyscommand(nid, lparam);/ if you add a minimize button to your dialog, you will need the code below/ to draw the icon. for mfc applications using the document/view model,/ this is automatically done for you by the framework.void cpcdlg

28、:onpaint() if (isiconic()cpaintdc dc(this); / device context for painting sendmessage(wm_iconerasebkgnd, (wparam) dc.getsafehdc(), 0);/ center icon in client rectangleint cxicon = getsystemmetrics(sm_cxicon);int cyicon = getsystemmetrics(sm_cyicon);crect rect;getclientrect(&rect);int x = (rect.width

29、() - cxicon + 1) / 2;int y = (rect.height() - cyicon + 1) / 2; / draw the icondc.drawicon(x, y, m_hicon);elsecdialog:onpaint();cwnd* p=getdlgitem(idc_static_draw); /得到idc_static的句柄 cdc* pdc=p-getdc(); /根据句柄得到dc p-invalidate(); p-updatewindow(); crect rc; /得到dc的客户区域,并创建画刷填充这个区域p-getclientrect(&rc); c

30、brush brush; brush.createsolidbrush(rgb(255,255,255); pdc-fillrect(&rc,&brush); crgn rgn; /设置dc的裁减区域为客户区域,因为static并不具有真正的dc,而是其父窗口的dc,所以用裁减来避免画到客户区域外面去rgn.createrectrgn(rc.left,rc.top,rc.right,rc.bottom); pdc-selectcliprgn(&rgn);int xcenter=(rc.left+rc.right)/2,ycenter=(rc.top+rc.bottom)/2;/画坐标轴pdc-

31、moveto(xcenter,ycenter-200);pdc-lineto(xcenter,ycenter+200);pdc-moveto(xcenter-200,ycenter); pdc-lineto(xcenter+200,ycenter); pdc-textout(xcenter-14,ycenter-17,o);char *s20;s0=-10,s1=-9,s2=-8,s3=-7,s4=-6,s5=-5,s6=-4,s7=-3,s8=-2,s9=-1,s10=o,s11=1,s12=2,s13=3,s14=4,s15=5,s16=6,s17=7,s18=8,s19=9;for(in

32、t t=0;ttextout(xcenter+(t-9)*m,ycenter-6,);pdc-textout(xcenter+(t-9)*m,ycenter+3,st+1);pdc-textout(xcenter-4,ycenter-9-(t-9)*m,-);pdc-textout(xcenter+5,ycenter-9-(t-9)*m,st+1);/ the system calls this to obtain the cursor to display while the user drags/ the minimized window.hcursor cpcdlg:onquerydra

33、gicon()return (hcursor) m_hicon;void cpcdlg:draw1(int j,int k,int l,int m,int h,int n) /对应原始输入按钮 cwnd* p=getdlgitem(idc_static_draw); cdc* pdc=p-getdc(); p-invalidate(); p-updatewindow(); crect rc; p-getclientrect(&rc); cbrush brush; brush.createsolidbrush(rgb(255,255,255); pdc-fillrect(&rc,&brush);

34、 crgn rgn; rgn.createrectrgn(rc.left,rc.top,rc.right,rc.bottom); pdc-selectcliprgn(&rgn); int x1,y1,x2,y2,xx,b;x1=j*m;y1=-k*m;x2=l*m;y2=-m*m;xx=h*m;b=n*m;double xc,yc;int xcenter=(rc.left+rc.right)/2,ycenter=(rc.top+rc.bottom)/2;pdc-moveto(xcenter,ycenter-200);pdc-lineto(xcenter,ycenter+200);pdc-mov

35、eto(xcenter-200,ycenter); pdc-lineto(xcenter+200,ycenter); pdc-textout(xcenter-14,ycenter-17,o);char *s20;s0=-10,s1=-9,s2=-8,s3=-7,s4=-6,s5=-5,s6=-4,s7=-3,s8=-2,s9=-1,s10=o,s11=1,s12=2,s13=3,s14=4,s15=5,s16=6,s17=7,s18=8,s19=9;for(int t=0;ttextout(xcenter+(t-9)*m,ycenter-6,);pdc-textout(xcenter+(t-9

36、)*m,ycenter+3,st+1);pdc-textout(xcenter-4,ycenter-9-(t-9)*m,-);pdc-textout(xcenter+5,ycenter-9-(t-9)*m,st+1);xc=x2+xx; /绘出实际轮廓yc=(y1+y2)/2.0-(x2-x1)*1.0*(xx+(x2-x1)/2.0)/(y2-y1);double l=(xc-x1)*(xc-x1)+(yc-y1)*(yc-y1),r=sqrt(l);double ax=xcenter+xc-r,ay=ycenter+yc-r,bx=xcenter+xc+r,by=ycenter+yc+r;

37、 cpen pen,*poldpen; /1个像素,红色 pen.createpen(ps_solid,1,rgb(255,0,0); poldpen=pdc-selectobject(&pen);crect rc1(ax,ay,bx,by);pdc-arc(ax,ay,bx,by,xcenter+x1,ycenter+y1,xcenter+x2,ycenter+y2);void cpcdlg:draw(int j,int k,int l,int m,int h,int n) /对应插补轨迹按钮 cwnd* p=getdlgitem(idc_static_draw); cdc* pdc=p-g

38、etdc(); p-invalidate(); p-updatewindow(); crect rc; p-getclientrect(&rc); cbrush brush; brush.createsolidbrush(rgb(255,255,255); pdc-fillrect(&rc,&brush); crgn rgn; rgn.createrectrgn(rc.left,rc.top,rc.right,rc.bottom); pdc-selectcliprgn(&rgn); int x1,y1,x2,y2,xx,b;x1=j*m;y1=-k*m;x2=l*m;y2=-m*m;xx=h*

39、m;b=n*m;double xc,yc;int xcenter=(rc.left+rc.right)/2,ycenter=(rc.top+rc.bottom)/2;pdc-moveto(xcenter,ycenter-200);pdc-lineto(xcenter,ycenter+200);pdc-moveto(xcenter-200,ycenter); pdc-lineto(xcenter+200,ycenter); pdc-textout(xcenter-14,ycenter-17,o);char *s20;s0=-10,s1=-9,s2=-8,s3=-7,s4=-6,s5=-5,s6=

40、-4,s7=-3,s8=-2,s9=-1,s10=o,s11=1,s12=2,s13=3,s14=4,s15=5,s16=6,s17=7,s18=8,s19=9;for(int t=0;ttextout(xcenter+(t-9)*m,ycenter-6,);pdc-textout(xcenter+(t-9)*m,ycenter+3,st+1);pdc-textout(xcenter-4,ycenter-9-(t-9)*m,-);pdc-textout(xcenter+5,ycenter-9-(t-9)*m,st+1);xc=x2+xx;yc=(y1+y2)/2.0-(x2-x1)*1.0*(

41、xx+(x2-x1)/2.0)/(y2-y1);double l=(xc-x1)*(xc-x1)+(yc-y1)*(yc-y1),r=sqrt(l);double ax=xcenter+xc-r,ay=ycenter+yc-r,bx=xcenter+xc+r,by=ycenter+yc+r; cpen pen,*poldpen; pen.createpen(ps_solid,1,rgb(255,0,0); poldpen=pdc-selectobject(&pen);crect rc1(ax,ay,bx,by);pdc-arc(ax,ay,bx,by,xcenter+x1,ycenter+y1

42、,xcenter+x2,ycenter+y2); int e=abs(abs(x2-x1)+abs(y2-y1)/m,x11=x1,y11=y1,dx,dy,z;/绘出插补轨迹for(int i=e*m/b;x11!=x2|y11!=y2;i-) cpen pen,*poldpen; /1个像素,蓝色 pen.createpen(ps_solid,1,rgb(0,0,255); poldpen=pdc-selectobject(&pen); double f=(x11-xc)*(x11-xc)+(y11-yc)*(y11-yc)-r*r;dx=dy=0; if(f=0&y110) z=1;if

43、(f0) z=2;if(f=0&y11=0) z=3;if(f0&y11moveto(xcenter+x11,ycenter+y11); pdc-lineto(xcenter+x11,ycenter+y11-b*dy); y11=y11-b*dy; break; case 2: dx+; pdc-moveto(xcenter+x11,ycenter+y11); pdc-lineto(xcenter+x11+b*dx,ycenter+y11); x11=x11+b*dx; break; case 3: dx+; pdc-moveto(xcenter+x11,ycenter+y11); pdc-lineto(x

温馨提示

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

评论

0/150

提交评论