收藏 分销(赏)

利用软件VB(Visual Basic)来简单实现自动编程设计说明书.pdf

上传人:曲**** 文档编号:228646 上传时间:2023-03-16 格式:PDF 页数:41 大小:1.59MB
下载 相关 举报
利用软件VB(Visual Basic)来简单实现自动编程设计说明书.pdf_第1页
第1页 / 共41页
利用软件VB(Visual Basic)来简单实现自动编程设计说明书.pdf_第2页
第2页 / 共41页
点击查看更多>>
资源描述
1概述1.1 课程设计的目的数控技术课程设计是机电专业教学活动的一个重要的实践性环节,是对学生 所学数控技术课程和其它有关课程知识和技能的一次综合性练习,旨在使之 巩固、充实、系统化,并得到进一步扩展。课程设计是培养学生理论联系实际、解决生产实际问题的机会。通过对数控铳床典型部件的结构设计和零件编程的具 体问题的解决,使学生对数控技术的原理、设计方法以及用编程方法处理实际问 题的一般步骤和具体技巧得到训练,提高运用所学专业知识分析问题和解决问题 的能力。1.2 设计要求用计算机高级编程语言(如VB,VC+等)来实现:由任意的CAD软件(如 AutoCAD,Pro/E、U G、Solid works等)所生成的二维绘图DXF文件(限定DXF 文件中的几何元素只有直线和圆弧)到CNC代码的自动生成(亦即仿真数控自动 编程系统)。具体的要求如下:(1)从DFX文件中提取几何信息(只提取直线与圆弧的信息);(2)在屏幕上显示所提取得到的二维几何图形。(3)将提取得几何元素的进行排序(由程序来实现);(4)针对指定的走刀方向、起刀点,自动生成数控平面铳削(或数控线切割)的CNC代码。1.3 课程设计的步骤课程设计的步骤大致包括:1)调查研究,收集资料,查阅文献;2)论证及确定设计方案,进行机械结构设计和软件设计,编写程序和编制设 计说明书。3)最后参加数控课程设计的答辩。2提出问题和意义2.1提出问题数控加工是当今机械生产的主要设备,数控机床已经成为组成现代机械制造 生产系统,实现计算机CAD/CAM与生产管理等全部生产过程自动化是现在数控研 究的主要领域,以前数控编程主要是由工程图利用手工完成的。而手工编程工作 量很大,容易出错,为了加快编程进度,提高加工精度,因此开发计算机自动编 程系统,能够自动完成数控加工程序的自动加工,自动编程主要利用计算机完全 程序编制工作,用零件源程序作为编程计算机的输入,用编程程序和后置处理程 序来处理零件源程序,目前世界各国都对自动加工编程非常重视,纷纷加大对其 的投入,先后开发出了许多各具特色自动编程系统。这里提出通过DXF文件进行数控代码的自动编写,并把得到的代码保存到指 定文件中,然后传给数控系统,实现设计加工一体化。DXF文件是一种与图形等价的通用ASCII码格式文件,包含着设计过程的 所有图形非图形信息。这些信息被组织到成块,并通过成对的组码和与组码关联 的组值按照特定的格式进行记录。而在数控系统中是通过读取NC代码控制刀锯 进行零件的加工。NC代码是用特定格式的字符串来贸数加工的刀具路径。因此 两者之间存在着很大的差异。本系统基于解决这些差异进行CAD软件与数控系统的一体化连接,并且尽 量提供友好的人机操作界面和更大范围的提供人机交互操作。系统由以下五大模 块:文件的读取块,屏幕的操作模块,几何信息的预处理模块,NC代码生成模 块,文件保存模块。本次设计主要是介绍利用软件VB(Visual Basic)来简单实现自动编程,并 且能在界面上完成提取坐标、描述图形等相关的一系列工作。2.2意义在当今社会上,数字化、自动化、智能化应用程度是一个国家发展水平的重 要特征之一,而应用CAD/CAM(计算机辅助设计/计算机辅助制造)的能力和水平又 是一个国家自动化程度的标志之一,所以在当今社会对这些高技术追求和竞争都 是非常激烈的,各国、各研究机构和跨国公司都不惜代价的对相关课题进行研究,机床作为一种在机械制造行业非常重要的生产设备,因此对机床也相应的提出了 高效率、高精度和高自动化的要求。本设计我们可以简单的模拟一个由CAD/CAM 图形(仅限于直线和圆弧)经过软件程序描述出原先的图形形状,并且可以直接 生成数控代码,熟练了对软件的利用和加深了对数控自动编程的理解。3关键问题3.1 DXF格式文件信息的提取利用CAD/CAM做出的平面工程图可以保存为DXF格式,在DXF格式里面主要保存 了零件工程图中的曲线段的相关信息,比如直线的开始坐标和终点坐标、圆弧的 圆心坐标、半径、开始角度和终点角度等等。本设计所用的软件是VB,因此可以 利用相关程序把工程图中的这些有关信息直接提取,并且保存在VB软件里面,以 方便后处理。3.2排序用VB软件从CAD/CAM的工程图的DXF格式中提取的有关曲线信息都是混乱排 列的,而在后处理中描述出原先图形和生成CNC代码都是需要按照一定规律排列 的信息,因此要把这些杂乱的信息排好序列,以使得在后处理中实现更多的相关 功能。而要把那么多不相关的混乱的信息排列成过规律的循序都是需要用VB软件 的相关程序来完全的。3.3轨迹和CNC代码生成把排序好的曲线有关点信息利用VB软件的程序直接描述出轨迹,并且能在软 件应用界面上可以输入有关加工信息,比如走刀方向、主轴转速、进给速度等信 息,直接生成CNC代码,其中要保证描述的图形形状和CNC代码的正确性。4、DXF文件的结构特点4.1、DXF文件结构DXF文件有两种格式:ASC码文本格式和二进制格式。前者可以用记事本打开,简单易读,后者存储效率高2。DXF文件最小组成是组(GROU P),一个DXF文件 由多个组组成。每个组在DXF文件中占两行。第一行是组码(GROU P CODE),俣 一个整数;第二行是组值(GROU P VALU E),它的数据类型取决于组码的数值。例 如X坐标的组码为10,Y坐标的组码为20,Z坐标的组码为30。一个DXF文件分为多 个节(SE CTION),每个节均由多个组(GROU P)组成。每个节均由一个组值为字 符串“SE CTION”的0组开始,后跟组值为表示段名的字符串的2组,其后为组成 该节的各个组,最后以组值为字符串“E NDSE C”的0组表示该节结束。所有节都 结束后,在DXF文件的最后是组值为字符串E OF(E ND OF FILE)的0组作为文件的 结束标志。一个完整的DXF文件由以下七个节(SE CTION)组成:A标题(HE ADE R)节:包括与图形相关联的变量的设置,例如图形节最大、最小 X坐标和最大、最小Y坐标($LIM M小,$LIM M AX),点显示模式($PDM ODE),点尺寸(SPDSIZE)等。其中的每一个变量都通过组码9给出变量名,并由其后的组码 提供变量值。B类(CLASSE S)节:类节保存由应用程序定义的类,而该类的实例则出现在块 节(BLOCKS).实体节(E NTITIE S)和对象节(OBJE CTS)中。C表(TABLE)节:包含命名项的定义,存放一系列表。包括线型(LTYPE)表、层(LAYE R)表、文本字样(STYLE)表、视(VIE W)表、用户坐标系统(U SC)表、视窗配制(VPORT)表、尺寸标注式样(DIM STYLE)表、应用标识(APPID)表。D块(BLOCK)节:存放块定义的实体。对图形中每个块引用,在块节中都必需 有一个条目与之对应。E实体(E NTITIE S)节:存放图形实体,其中包括块插入实体。DXF图形文件中 的所有图元(包括点、线、面、插入块,注记文字等实体)都将在E NTITIE S节定 义。F实体(OBJE CTS)节:存储非图形对象。G预览图像(THU M BNAILIM AGE)节:只有当预览图像被保存在DXF文件中时该节 才存在。4.2.DXF文件的读取(1)描述直线段的信息为:AcDbLine1011直线段起点的X值直线段终点的X值2012直线段起点的Y值直线段终点的Y值3013直线段起点的Z值直线段终点的Z值(2)描述圆的信息为AcDbCircle1030圆心的X值圆心的Z值2040圆心的Y值圆的半径R值(3)描述圆弧的信息为AcDbCircle1040圆心的X值圆的半径R值2050圆心的Y值圆弧的起始角3060圆心的Z值圆弧的终止角5算法实现5.1算法原理5.1.1 DXF格式文件信息的提取对于已经把工程图保存为DXF格式的文件,在VB软件中可以用Action属性来显 示“打开”对话框,具体程序为:CommonDialogl.Filter=dxf文件(*.dxf)|*.dxf|文本文件(*.txt)|*.txt|全 部文件(*.*)I*.*CommonDialogl.DialogTitle=打开文件”CommonDialogl.ShowOpen在“打开”对话框中就可以直接输入DXF文件,然后在用变量把所有的DXF文件的 相关信息都保存进去。具体流程图如图3.1所示3.1 DXF信息提取流程图5.1.2排序这是本设计的重点和难点,在前面的程序中已经把DXF文件的相关信息都保 存到了有关的变量中,但是是按照工程图的坐标画图循序来保存的,而画图的时 候相关坐标点是随机的,因此要把这些杂乱无章的坐标点按照一定的规律排序,这样才能自动生成CNC代码。在这设计过程中对坐标排序的方法是判断交换法,如图3.2排序原理图所示:图3.2 排序原理图由图中可知,设本图形共由K+1段线段(仅限于直线和圆弧)组成,先确定 其中一段线段,假设此段为第N段,其始段坐标为(Xn,Yn)终点坐标为(Xn-YnO然后把剩下的K段线段分别与此段线段的终点比较,设第N+i段的始点坐标 为(Xn+i,Yn+i)终点坐标为(Xn+i,Yn+i),若两段的距离d=J(X(+i)Xn +(,5+i)Yn了 0.0001 或者(!二 J(X 5+i)Xn)2+(+i)Y建(o.oooi 则认为这两点是相连的,要相连则要循序的排列,故只要把第N+i段跟第N+1段互 换就可以实现了线段的循序排列,这些判断和互换都在VB软件中应用相关的程序 就可以实现,把这些排序好的线段坐标点按照循序排列保存在变量中就可以了。排序好的图形有关信息就已经把坐标点按照一定循序排好了,由这些有循序 的坐标点可以直接生成CNC代码,先判断线段是曲线还是直线,如果是曲线在判 断走刀方向看在加工中是顺圆还是逆圆,由此确定CNC加工代码用G0LG02或G03,在界面中可以直接输入与加工有关的信息,例如主轴转速S,进给速度F等,直接 把这些有规律的点按照循序输出为CNC即可。有关的流程图可以表示为图3.2排序流程图所示图3.2排序流程图所示5.1.3轨迹和CNC代码生成轨迹生成主要利用VB软件的画图功能,先判断所要生成的那段轨迹是直线还 是圆弧,然后分别画出图形,最后把它们一起连接起来就可以了,所用的程序为:If lore(i)=True ThenPicturel.Line(Linekx(i)*Vai(Text4.Text),Lineky(i)*Vai(Text4.Text)-(Linezx(i)*Vai(Text4.Text),Linezy(i)*Vai(Text4.Text),RGB(255,0,0)E lsePicturel.Circle(yhuox(i)*Vai(Text4.Text),yhuoy(i)*Vai(Text4.Text),yhur(i)*Vai(Text4.Text),RGB(255,0,255),yhus(i),yhue(i)E nd If用流程图表示为图3.3所示图3.3轨迹生成流程图5.2算法总流程图全部算法都是相互连接的,各个部分都是相互影响,所有的算法都应该由VB 软件程序来完成,其算法总流程图如图3.3所示。6.1系统界面系统界面如图4T所示图3.3算法总流程图6软件开发 Foral图4T系统界面6.2功能设置导入立件1.单出手乂,可弹出输入对话框,在对话框中选择要模拟自动生成的DXF 文件,确定后可直接在Textl.text中看到导入的DXF文件的原始数据信息。打开文件08查找范围Q):|&DXF图形 4-卮曲 圈我最近的文档 桌面 f dxdxdxdx L Z3.4 件件件件 零零零零 3画画画我公档我的电脑网上邻居文件名:文件类型复):打开Q)|dx戊件(*.dxf)r以只读方式打开国)取消三I图4.2导入文件功能显示坐标2.单击、-1,先在Textl.text中删除原先的DXF文件的原始信息,然后同样在Textl.text中显示提取后的DXF文件的坐标值,同时还能自动统计直线段和 圆弧段数,如图4.3所示。Line(161.2,Line(131.6,Line(363.5,Circle(161.2Circle(425.5Circle(228.9Circle(363.5Circle(228.9Circle(312.5Circle(312.5104.1)(194.4)(273.7)(,104.1),182.6),341.2),273.7),341.2),419.8),419.8)384.5,225.2,425.5,(131.6(384.5(225.2(372.6(290.2(372.6(290.2104.1)263.9)182.6),194.4),104.1),263.9),340.1),419.8),340.1),419.8)R=R=R=R=R=R=R=505U5U5U5USU/n图4.3显示坐标功能3.单击坐标排列,在Textl.text中就能显示出经过排列后的坐标信息。最后输出的信息如图4.4所示。4.O 1234567891.段6 255565292 L4.5.3.2.2.0.&5.3 6826719221 134333222104.1)104.1)182.6)273.7)340.1)419.8)419.8)341.2)263.9),194.4)2 555652926 4.5.3.2.2.0.8.5.L6 8267192231 343332221图4.4坐标排列功能画图单击104.1)182.6)273.7)340.1)419.8)419.8)341.2)263.9)194.4),104.1)在pricterl中就能模拟出转换成DXF文件前的工程图,在“图形比例”中可以输入不同的值,从而改变图形的大小,点击前、后、左、右移动可移动图形的水平和垂直距离。显示图形如图4.5所示。5、参数选择:选择主轴转速,对刀点进给速度,加工方式等,参数选择界面如图4.6所示:参数设置主轴转速蜉 r/min进给速度怦-r/min生成代蚂方式6绝对坐标编程r相当坐标编程圆弧的编程方式用程C用工、港程选择力补(G41 曰4.6、参数选择6.单击I生成CNC代码可以直接生成图形的CNC代码,其加工参数中有两个可以选择输入,分别是主轴转速和进给速度,其中主轴转速的默认值是1000r/min,进给速度的默认值是100mm/min,生成CNC代码功能如图4.6所示。%0000NOO1 N002N0U3NOO4 N005N006 N007N008 N009NO1O NOH N012%2 o 1 3 3 3 3 2 2 2 O 的GgGOGOrolGOGOGOGOGOrolGOGOX100 Y1OO Z1O GOO G41 DOI X161.2 Y104.1X384.5 Y104.1FIDO LFX425.5 Y182.6R50.0X363.5 Y273.7LFX372.6 Y340.1R50.0X312.5 Y419.8R50.0X290.2 Y419.8R20.0X228.9 Y341.2R50.0X225.2 Y263.9R50.0X131.6 Y194.4LFX161.2 Y104.1R50.0G40 X1OO Y1OO Z1O M 02 LFLFLFLFLFLFLFLFSlUULi M03 LF图4.7生成CNC代码功能保存代码7.单击_,可弹出一个保存对话框,在其中选择保存路径后可保存又软件所生成的CNC代码。如下图所示图4.8保存对话框重新开始8.单击-1,会把所排列得到的坐标数据,所画的图形和生成的CNC代码都清除掉,可以重新在输入其他的DXF文件图形。9.单击些一I或者圆,会弹出是否保存提示,如下图所示:图4.9提示对话框6.3运行程序运行后可得到的图形如下4-2所示:国回区 Foral代码显示史:基本帙作 生成CHC代码I保存代码重款开始退由n 参数设置主的速眄而一 r/in进给速度而r/in对刀.电_x iboT ibo生成代码方式痴给对坐标吹c相当生标*周弧的旗程方式佝用咆程r用I、通程逸捍刀补必i二J04LFUUUULF:TlLF2 o ooooo OMO 20。oo.o.o.o.Q lloRSIR5IR5R2IR5IR5IR510 闻F u u z10X1DzDol04k34019194104Yloo 00DCT1T127仔T4T4T3T2i97)|)8)“2S.53.2.2 5251452I0.2Q3842363731 382797 91323232(38 ()(*111111Xaecccccccl2345 nnrrrrrrrLLIL1ClclclaclcIcl第第第第m显示坐标导入文件图4-2系统运行后界面6.4 结果分析本设计程序基本上能解决本课题有关的问题,界面运行起来感觉良好,功能 比较齐全,其基本功能都比较稳定,排列坐标、显示图形、生成CNC代码等都可以直接顺利 完成,不过仍然有些问题没能很好的解决:(1)木设计的DXF文件的输入中只是局限于直线和圆弧,对于非圆曲线还不能 利用本设计程序。(2)在生成CNC代码的时候,可以用的相关参数非常有限,还有很多参数都被 忽略了。(3)还有其他一些小细节的功能没能设计好,界面简单。总之,本设计程序能完成相关的功能要求,但很多功能只是还有很大的局限性,离真正商业应用尚有一段距离。7设计总结通过本次数控的课程设计,使我更加加深了对数控技术的有关知识的了解,特别是对软件VB的应用,在设计过程中遇到了很多的问题,但通过查找书本和请 教别人,基本上都解决了。很多小细节问题还很容易就忽略,但往往是那些小问 题搞得设计进行得异常困难,对VB软件的应用还有很多不熟练,在编程过程中一 直都要对照着教科书的有关内容才行,通过这次课程设计,不仅让我对数控的加 工有了深一步的认识,还使我对VB有新的了解,提高自己的编程水平。课程设计是一种实践,一种考验。它既让我有机会实践一下,让自己有机会 可以把所学到的理论知识应用到实践中,又考验自己对理论知识的掌握程度。数控技术是一门综合性学科,它的综合性比较强,它建立在以往的学科上,课程设计更是一项考验综合能力的实践,课程设计能考验自己的综合能力。随着制造技术的日益发展,零件也越来越复杂,对加工机床的要求也越来越 高,数控机床能满足现代零件的加工要求,其地位也日益重要,通过课程设计,将所学到的知识综合起来应用于实践,对了解数控机床的加工原理也很重要。致谢本设计系统运行起来良好,有关重点难点问题基本上都能解决,在编程的过 程中,除了参考教科书之外,周围同学还给了我很大的帮助,常常大家一起讨论,得到比较满意的结果,在此特意向对给予我关心和帮助的同学表示衷心感谢。同 时也非常感谢高健老师对我的指导和帮助。参考文献:1、数控技术,廖效果 主编 湖北科学技术出版社2、机床计算机数控技术第二版北京理工大学出版社3、数学年谱常州科谱之窗:常州市科学技术协会4、(Visual Basic6.0中文版入门与提高清华大学出版社5、Oisual Basic程序设计教程,江志文 主编 中山大学出版社6、(Visual Basic6.0中文版实用教程,刘萌 主编中国铁道出版社7、(Visual Basic6.0控件应用编程实里例教程 北京希望电子出版社Option E xplicitConst k=1000附录全局变量,强制显式声明变量语句设置曲线段的保存总段数(常数)Const pi=3.14159265358979设置pi的值(常数)Dim Linekx(k)As DoubleDim Lineky(k)As DoubleDim Linezx(k)As DoubleDim Linezy(k)As Double直线段开始坐标直线段终点坐标Dim yhuox(k)As DoubleDim yhuoy(k)As DoubleDim yhur(k)As DoubleDim yhus(k)As DoubleDim yhue(k)As Double圆弧圆心坐标圆弧半径坐标圆弧起止角度Dim lore(k)As Boolean 直线与圆弧判断Dim arcdir(k)As Boolean 顺圆与逆圆判断Dim i As IntegerDim j As Integer Dim temp As String Dim atr As StringDim zb As String Dim cn As String Dim a As Integer Dim b As Integer Dim c As Integer Dim d As Integer排序时的中间变量定义坐标变量 CNC生成时的变量计算直线与圆弧段数绘图时确定坐标原点Dim m As Variant保存曲线段的变量Function fileopen()As Boolean 对 DXF 文件的输入Dim filei As Long 定义中间变量Dim file2 As LongDim file As LongDim strend As LongDim art As LongCommonDialogl.Filter=dxf 文件(*.dxf)|*.dxf|文本文件(*.txt)|*.txt|全 部文件(*.*)I*.*打开dxf文件,并只显示dxf文件CommonDialogl.DialogTitle=打开文件”CommonDialogl.ShowOpen 显示打开对话框If CommonDialogl.FileName ThenOpen CommonDialogl.FileName For Input As#1 atr=Do While Not E OF(l)Line Input#1,temp 打开并读取DXF文件atr=atr+temp+vbCrLfLoopClose#1E nd If temp=filel=InStr(1,atr,AcDbLine&vbCrLf)判断所提取的信息是直线还是圆弧file2=InStr(1,atr,AcDbCircle&vbCrLf)现的位置,值为长整形If filel file2 And file2 0 Then于圆弧的返回值,则首先返回的是圆弧起点的信息file=file2E lseIf filel 0 Then信息file=filelE lse则返回圆弧起点的信息file=file2E nd IfE nd Ifstrend=InStr(file,atr,E NDSE C&vbCrLf)件temp=M id(atr,file,strend-file)返回字符串中最先出如果直线的返回值大否则为直线起点的如果filel为0,判断结束条atr根据file和strend-file设定从中返回字符(返回字符串中指定数量的字符)m=Split(temp,vbCrLf)的值遇到回车便赋值到m数组中E nd FunctionFunction howmany()As IntegerFor i=0 To U Bound(m)If m(i)=AcDbLine”Thentemp 中计算直线和圆弧段数a=a+1直线总段数E lself m(i)=AcDbCircle Thenb=b+1 圆弧总段数E nd IfNext iE nd FunctionFunction zuobiaoO 坐标计算For i=1 To a+bIf lore(i)=True Then 直线段时,line表示格式zb=zb+Line +(+Str(Format(Linekx(i),000.0)+,+Str(Format(Lineky(i),000.0)+)zb 为坐标变量,即计算直 线或者圆弧的坐标zb=zb+(+Str(Format(Linezx(i),000.0)+,+Str(Format(Linezy(i),”000.0)+)+vbCrLf 计算直线或者圆弧的 横坐标和纵坐标E lse 圆弧时zb=zb+Circle +(+Str(Format(Linekx(i),000.0)+,+Str(Format(Lineky(i),”000.0)+)zb=zb+(+Str(Format(Linezx(i),000.0)+,+Str(Format(Linezy(i),000.0)+)+R=+Str(Format(yhur(i),000.0O)+vbCrLfE nd IfNext iE nd FunctionFunction rad(t As Double)rad=t*pi/180角度转为弧度E nd FunctionFunction sp()直线与圆弧的信息处理i=1For j=0 To U Bound(m)j从。至!J m数组中可用的最大下标If m(j)=AcDbCircle Then圆弧的信息处理yhuox(i)=Vai(m(j+2)圆弧圆心横坐标的值(跟dxf所含的信息有关)yhuoy(i)=Vai(m(j+4)圆弧圆心纵坐标的值yhur(i)=Vai(m(j+8)圆弧半径的坐标值yhus(i)=rad(Vai(m(j+12)圆弧起始角的坐标值yhue(i)=rad(Vai(m(j+14)圆弧终点角的坐标值Linezx(i)=yhur(i)*Cos(yhus(i)+yhuox(i)Linezy(i)=yhur(i)*Sin(yhus(i)+yhuoy(i)直线起点与终点的坐标(圆弧)Linekx(i)=yhur(i)*Cos(yhue(i)+yhuox(i)Lineky(i)=yhur(i)*Sin(yhue(i)+yhuoy(i)lore(i)=FalseIf yhus(i)yhue(i)Thenarcdir(i)=FalseE lsearcdir(i)=TrueE nd Ifi=i+1E lself m(j)=AcDbLine Then直线的信息处理Linekx(i)=Vai(m(j+2)Lineky(i)=Vai(m(j+4)Linezx(i)=Vai(m(j+8)(与dxf中的信息有关)Linezy(i)=Vai(m(j+10)lore(i)=TrueE nd IfNext jE nd FunctionFunction draw()绘图Picturel.Line(2500,0)-(-2500,0)定义坐标系i=i+1Picturel.Line(0,2500)-(0,-2500)iffll出直线,圆弧For i=1 To a+b(a+b为直线和圆弧的总段数)If lore(i)=True ThenPicturel.Line(Linekx(i)*Vai(Text4.Text),Lineky(i)*Vai(Text4.Text),Linezy(i)*Vai(Text4.Text),RGB(255,0,0)RGB为指定颜色的函数255 0 0为红色E lsePicturel.Circle(yhuox(i)*Vai(Text4.Text),yhuoy(i)*Vai(Text4.Text)-(Linezx(i)*Vai(Text4.Text),yhur(i)*Vai(Text4.Text),RGB(255,0,255),yhus(i),yhue(i)RGB为指定颜色的函数255 0 255为红色洋红色E nd IfNext iE nd FunctionFunction order()Dim tarcdir As Boolean排序设定交换的中间变量Dim tempsx As DoubleDim tempsy As DoubleDim tempex As DoubleDim tempey As DoubleDim tempr As DoubleDim tempox As DoubleDim tempoy As DoubleDim tl As DoubleDim t2 AsDim tyhusDim tyhueDim tlorcDoubleAs DoubleAs DoubleAs DoubleFor i=1To a+bFor j=i+lToa+b a+b为直线与圆弧的总段数If(Linekx(j)-Linezx(i)-2+(Lineky(j)-Linezy(i)-2 0.0001 Then 判断排序曲线段tarcdir=arcdir(i+1)arcdir(i+1)=arcdir(j)arcdir(j)=tarcdirtlorc=lorc(i+1)lore(i+1)=lore(j)lore(j)=tlorc顺圆或逆圆换回直线或圆弧调回标值交换tempsx=Linekx(i+1)tempsy=Lineky(i+1)tempex=Linezx(i+1)tempey=Linezy(i+1)tempr=yhur(i+1)tempox=yhuox(i+1)tempoy=yhuoy(i+1)tyhus=yhus(i+1)tyhue=yhue(i+1)Linekx(i+1)=Linekx(j)Lineky(i+1)=Lineky(j)Linezx(i+1)=Linezx(j)Linezy(i+1)=Linezy(j)yhur(i+1)=yhur(j)yhuox(i+1)=yhuox(j)yhuoy(i+1)=yhuoy(j)yhus(i+1)=yhus(j)yhue(i+1)=yhue(j)Linekx(j)=tempsxLineky(j)=tempsy Linezx(j)=tempex坐标换,调入中间变量半径换圆心坐标换起止角度换信息互换 各坐Linezy(j)=tempey yhur(j)=tempr yhuox(j)=tempoxyhuoy(j)=tempoy yhus(j)=tyhus yhue(j)=tyhueE xit ForE lself(Linezx(j)-Linezx(i)-2+(Linezy(j)-Linezy(i)2 0.0001 Thenarcdir(j)=Not arcdir(j)tl=Linezx(j)直线信息互换t2=Linezy(j)Linezx(j)=Linekx(j)Linezy(j)=Lineky(j)Linekx(j)=tlLineky(j)=t2tempsx=Linekx(i+1)tempsy=Lineky(i+1)tempex=Linezx(i+1)tempey=Linezy(i+1)坐标值信息互换tempr=yhur(i+1)tempox=yhuox(i+1)tempoy=yhuoy(i+1)tyhus=yhus(i+1)tyhue=yhue(i+1)Linekx(i+1)=Linekx(j)Lineky(i+1)=Lineky(j)Linezx(i+1)=Linezx(j)Linezy(i+1)=Linezy(j)yhur(i+1)=yhur(j)yhuox(i+1)=yhuox(j)yhuoy(i+1)=yhuoy(j)yhus(i+1)=yhus(j)yhue(i+1)=yhue(j)Linekx(j)=tempsxLineky(j)=tempsy Linezx(j)=tempexLinezy(j)=tempey yhur(j)=tempr yhuox(j)=tempox yhuoy(j)=tempoy yhus(j)=tyhus yhue(j)=tyhuetarcdir=arcdir(i+1)arcdir(i+1)=arcdir(j)arcdir(j)=tarcdir tlorc=lorc(i+1)lore(i+1)=lore(j)lore(j)=tlorcE xit ForE nd IfNext jNext iE nd FunctionSub cnc()生成CNC代码If Option3.Value Then 用 R 的方式编程cn=00091+vbCrLfcn=cn+G92 +“X+Format(Vai(Text8.Text),0)+Y+Format(Vai(Text9.Text),0)+”Z10+vbCrLf vbCrLf 表示换行,Format函数表示按指定的格式格式化表达式,Vai函数返回包含于字符串 的数字cn=cn+“N001 G90 GOO +Combol.Text+DOI+X+Format(Linekx(1),#00.0)+Y+Format(Lineky(1),#00.0)+S+Format(Vai(Text6.Text),0)+M 03+LF+vbCrLfIf lore(1)=True Thencn=cn+N+Format(2),000)+G01+Format(Linezx(1),#00.0)+Y+Format(Linezy(1),#00.0)+F+Format(Vai(Text7.Text),0)+LF+vbCrLfE lse:lore(i)=FalseIf arcdir(i)=True Thencn=cn+N+Format(2),000)+G02 X+Format(Linezx(1),#00.0)+Y+Format(Linezy(1),“#00.0)+R+Format(yhur(1),“00.0)+F+Format(Vai(Text7.Text),0)+LF”+vbCrLfE lsecn=cn+N+Format(2),000)+G03 X+Format(Linezx(1),#00.0)+Y+Format(Linezy(1),“#00.0)+R+Format(yhur(1),“00.0)+F+Format(Vai(Text7.Text),0)+LF”+vbCrLfE nd IfE ndIfFori=2 To a+bIf lore(i)=True Then +cn=cn+N+Format(i+1),000)+G01 XFormat(Linezx(i),#00.0)+Y+Format(Linezy(i),“#00.0)+LF+vbCrLfE lse:lore(i)=FalseIf arcdir(i)=True Thencn=cn+N+Format(i+1),000)+G02X+Format(Linezx(i),“#00.0)+Y+Format(Linezy(i),#00.0)+R+Format(yhur(i),00.0)+LF+vbCrLfE lsecn=cn+N+Format(i+1),000)+G03X+Format(Linezx(i),“#00.0)+“Y+Format(Linezy(i),“#00.0)+R+Format(yhur(i),00.0)+LF+vbCrLfE ndIfE nd IfNext icn=cn+N+Format(a+b+2),000)+GOO G40 +Format(Vai(Text8.Text),0)+/,+Format(Vai(Text9.Text),0)+Z10 M 02 LF vbCrLfE lself 0ption4.Value Then cn=00091+vbCrLf用I、J的方式编程cn=cn+G92 +X+Format(Vai(Text8.Text),0)+Y+Format(Vai(Text9.Text),0)+Z10+vbCrLfcn=cn+NOOl G90 GOO +Combol.Text+DOI+X+Format(Linekx(1),#00.0)+Y+Format(Lineky(l),#00.0)+S+Format(Vai(Text6.Text),0)+M 03+“LF+vbCrLfIf lore(1)=True Thencn=cn+N+Format(2),000)+G01 X,z+Format(Linezx(l),#00.0)+Y+Format(Linezy(l),#00.0)+F+Format(Vai(Text7.Text),0)+LF+vbCrLfE lse:lore(i)=FalseIf arcdir(i)=True Thencn=cn+Format(2),000)+G02 X+Format(Linezx(1),#00.0)+Y+Format(Linezy(1),#00.
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 通信科技 > 开发语言

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服