




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数控仿真技术课程设计说明书摘 要从工程的角度来看,仿真就是通过对系统模型的实验去研究一个已有的或设计中的系统,分析复杂的动态对象,仿真是一种有效的方法,可以减少风险,缩短设计和制造的周期并节约投资。计算机仿真就是借助计算机,利用系统模型对实际系统进行实验研究的过程。它随着计算机技术的发展而迅速地发展,在仿真中它有越来越重要的地位。计算机仿真技术的发展趋势主要表现在两个方面:应用领域的扩大和仿真计算机的智能化。计算机仿真技术不仅在传统的工程技术领域(航空、航天、化工等方面)继续发展,而且扩大到社会经济、生物等许多非工程领域,此外,并行处理、人工智能、知识库和专家系统等技术的发展正影响着仿真计算机
2、的发展。数控加工仿真利用计算机来模拟实际的加工过程,是验证数控加工程序的可靠性和预测切削过程的有力工具,以减少工件的试切,提高生产效率。仿真软件界面友好,基本实现了设计任务的要求,通过本软件可以知道在仿真加工刀具的坐标、各轴的工作情况以及辅助电机(冷却液的控制情况)本仿真程序应用的是脉冲插补算法。在仿真过程中应用了两种插补方法:直线插补,圆弧插补(包括顺时方向插补和逆时方向插补)。本仿真程序可以实现如下指令的判别和执行:G01,G02, G03, G04,G05,M05,M08 ,M09,M03,M30.在应用时,编程者只要按照本应用程序的要求输入程序,即可以实现所要求的加工过程的仿真过程。本
3、程序能够判断所输入的程序的正确性,可以对程序进行编辑。本软件可以从平面和轴测两个视图同时观察仿真过程。Abstract The type of numerical control in my resign is point-to-point .There are two interpolation schemes that have been used to generating a smooth continuous path. They include:1. Linear interpolation2. Circular interpolation Linear interpolation
4、 is used to generate a straight-line path. The programmer is required to specify the beginning point and end point of the straight line (X. Y. Z.). Circular interpolation schemes is used to generate a circular (I. J). The interpolator computes the feed rates for each of the two (or three)axes in ord
5、er to achieve the specified feed rate.My resign can carry out these commands such as G01,G02, G03, G04,G05,M05,M08 ,M09,M03,M30;The simulation process can be seen in two means: orthographic and Isometric at the same time.目 录第一章 设计任务书4第二章 数控仿真技术发展状况5第三章 功能简介7第四章 NC代码的读取9第五章 插补过程10第六章 设计小结13第七章 参考书目13
6、第八章 数控代码14第一章 设计任务书1设计题目:对于给定的一段NC代码,用VB或其他高级语言编写程序解释、插补,在PC机上仿真数控装置,进行图形描绘、坐标值显示、步进电机控制模拟显示及信号输出、冷却液和主轴开关量控制模拟显示及信号输出。 具体要求如下:(1) NC代码中包含的代码类型有:G90 G54 G00 G01 G02 G03 M03 M05 M08 M09 M302、数控系统的计算机仿真对于给定的一段NC代码,用VB或其他高级语言编写程序解释、插补,在PC机上仿真数控装置,进行图形描绘、坐标值显示、步进电机控制模拟显示及信号输出、冷却液和主轴开关量控制模拟显示及信号输出。具体要求如下
7、:(1) NC代码中包含的代码类型有: G90 G54 G00 G01 G02 G03 M03 M05 M08 M09 M30图1 工件平面 例:下面给出一个具体的图形示意图,NC代码及其加工轨迹图: %O0000N106G0G90G03M08N108Z50.N110Z10.N112G1Z-1.N114Y15.0N118GJ7.5N122G1Y20.0N126X10.N128G0Z50.N130M5M09N136M30% (2)、要求根据NC代码屏幕模拟加工过程,图形显示位置,坐标值显示,辅助功能状态显示(冷却液和主轴开关量控制模拟显示)。(3)、PC机模拟加工过程中,要求有实时的驱动三轴步进
8、电机的控制信号、控制冷却液和主轴转动的开关量输出控制信号。假设信号从计算机并行打印口的数据信号线输出,端口地址为0x378。并行口数据线分配如下(低电平有效):图2 加工仿真示图第二章 数控仿真技术发展状况(1) 计算机仿真的概念及应用为了解决数控加工中的程序编制问题,50年代,MIT设计了一种专门用于机械零件数控加工程序编制的语言,称为APT(Automatically Programmed Tool)。其后,APT几经发展,形成了诸如APTII、APTIII(立体切削用)、APT(算法改进,增加多坐标曲面加工编程功能)、APTAC(Advanced contouring)(增加切
9、削数据库管理系统)和APT/SS(Sculp tured Surface)(增加雕塑曲面加工编程功能)等先进版。 采用APT语言编制数控程序具有程序简炼,走刀控制灵活等优点,使数控加工编程从面向机床指令的“汇编语言”级,上升到面向几何元素.APT仍有许多不便之处:采用语言定义零件几何形状,难以描述复杂的几何形状,缺乏几何直观性;缺少对零件形状、刀具运动轨迹的直观图形显示和刀具轨迹的验证手段;难以和CAD数据库和CAPP系统有效连接;不容易作到高度的自动化,集成化。 针对APT语言的缺点,1978年,法国达索飞机公司开始开发集三维设计、分析、NC加工一体化的系统,称为为CATIA。随后很快出现了
10、象EUCLID,UGII,INTERGRAPH,Pro/Engineering,MasterCAM及NPU/GNCP等系统,这些系统都有效的解决了几何造型、零件几何形状的显示,交互设计、修改及刀具轨迹生成,走刀过程的仿真显示、验证等问题,推动了CAD和CAM向一体化方向发展。到了80年代,在CAD/CAM一体化概念的基础上,逐步形成了计算机集成制造系统(CIMS)及并行工程(CE)的概念。目前,为了适应CIMS及CE发展的需要,数控编程系统正向集成化和智能化方向发展。 在集成化方面,以开发符合STEP(Standard for the Exchangeof Product Model Data
11、)标准的参数化特征造型系统为主,目前已进行了大量卓有成效的工作,是国内外开发的热点;在智能化方面,工作刚刚开始,还有待我们去努力。(2)数控仿真技术的研究现状数控机床加工零件是靠数控指令程序控制完成的。为确保数控程序的正确性,防止加工过程中干涉和碰撞的发生,在实际生产中,常采用试切的方法进行检验。但这种方法费工费料,代价昂贵,使生产成本上升,增加了产品加工时间和生产周期。后来又采用轨迹显示法,即以划针或笔代替刀具,以着色板或纸代替工件来仿真刀具运动轨迹的二维图形(也可以显示二维半的加工轨迹),有相当大的局限性。对于工件的三维和多维加工,也有用易切削的材料代替工件(如,石蜡、木料、改性树脂和塑料
12、等)来检验加工的切削轨迹。但是,试切要占用数控机床和加工现场。为此,人们一直在研究能逐步代替试切的计算机仿真方法,并在试切环境的模型化、仿真计算和图形显示等方面取得了重要的进展,目前正向提高模型的精确度、仿真计算实时化和改善图形显示的真实感等方向发展。(3)虚拟制造目前的发展状况 虚拟制造从提出到现在已历经了20多年,技术上得到了很大的发展,应用方面也得到了广泛的扩展。在国外,有很多学校、研究所、科研单位、大型企业等都在不断的研究和应用虚拟制造技术。近年来,虚拟现实技术已较多地应用到汽车开发工作中,已初步形成一种集专业理论、工程设计、科学试验等为一身的较为完整的应用体系。例如,1995年美国标
13、准与技术研究所的报告“国家先进制造实验台的概念设计计划”,强调了分散的、多节点的分散虚拟制造(DVM),即虚拟企业的概念;而美国国家研究委员会的报告“制造中的信息技术”,则探讨了产品集成、过程设计、车间控制、虚拟工厂等的信息技术问题。福特汽车公司也已经计划应用虚拟环境技术来设计和开发汽车,该公司的先进车辆技术组把虚拟制造技术应用于装配仿真和虚拟成形,以提高空气动力学、人机工程学和表面建模的效果。第三章 功能简介工具栏NC模拟框工作状态 并行口输出状态坐标值实时状态NC代码输入框 图(1)1.1、主界面简介如图(1)所示,程序主界面由如下几个部分组成:工具栏、NC代码输入框、坐标值实时状态框、工
14、作状态框、NC模拟框。其中,工具栏菜单依次为:文件、编辑、视图、运行,工作状态框显示了冷却液的开关状态、主轴的转速及转向、步进电机X电机、Y电机的转向。NC代码在NC代码输入框输入,根据NC代码在NC模拟框进行模拟加工。1.2、参数设置定界面: 图(2)如图(2)所示,在此界面,根据需要可以选择脉冲当量(单位为毫米mm)以及图形的放大倍数,以便显示,插补形式由于时间关系。通过写入工件坐标的原点。便可随时改变坐标的原点。1.3、NC代码格式在NC代码输入框输入代码,开头必须要有程序开始符“%”、结尾同样以结束符“%”结束,程序不能输入行符,因为本程序还不能辨别。指令符(G、M)可以是大写也可以是
15、小写,指令间允许有空格。输入圆心时只能用IJ指令,R指令不能识别这是该程序的不足之处,还有待提高。1.4、程序基本操作首先,在NC代码输入框输入NC代码或打开已有的代码,接着按工具栏上的运行“调试”,程序经过调试后,如果程序有错,会自动报错,报错时光标将会定位在有错的代码附近,可以方便用户修改,直到无误为至,此时程序会告诉用户调试成功,紧接着按“模拟”,在NC模拟框便会出现用户希望的图形。绘图的过程中用户可以按“暂停”键暂停绘图、再按时便继续绘制,按“结束”整个程序将停止。与此同时,坐标值实时显示框实时显示动点的坐标,工作状态框也反映工作状况。在快捷工具栏功能按钮一样可以实现如上功能。整个加工
16、过程比较直观,一目了然。本程序优秀之处在于当程序未调试之前“模拟”键成淡色,不能使用,以防出错,而当模拟时“调试”键成淡色,程序不会乱套。第四章 NC代码的读取N程序报错YN i=i+1YN结束读入整个程序赋初值i=1判断是否有%读入第i行G、M、S指令和X、Y、I、J的坐标值判断指令和坐标值正确与否开始Y图3读完?第五章 插补过程3.1插补算法说明本软件应用脉冲增量插补方法,这类插补方法的特点是:(1) 每次插补的结果仅产生一个单位的行程增量(一个脉冲当量),以一个脉冲的方式输出给步进电机。其基本思想是:用折线来逼近曲线(包括直线)。(2) 插补速度与进给速度密切相关。(3) 脉冲增量插补的
17、实现方法较简单。脉冲增量插补的方法有逐点比较法、数字积分法,本软件用逐点比较法。逐点比较法的原理是:在仿真过程中,能逐点地计算和判别运动轨迹与给定轨迹的偏差,并根据偏差控制进给轴向给定轮廓靠近,缩小偏差,使加工轮廓逼近给定轮廓。逐点比较法是以折线来逼近直线和圆弧曲线的,它与规定的直线或圆弧之间的最大误差不超过一个脉冲当量,因此,只要将脉冲当量取得足够小,就可达到加工精度的要求。3.2直线插补原理:直线插补流程图起始F0,X0,Y0X0,Y0结束X(Y)= X(Y)-1+Y进给F=F+YeF=F-Xe+X进给F0X(Y)=0=NYNNYY:偏差计算公式假设加工如图 所示直线OA,取直线起点为坐标
18、原点,直线终点坐标A(Xe,Ye)为已知,即直线OA为给定轨迹。M(Xm,Ym)点为加工点(动点)。若M点在直线OA上,则根据相似三角形的关系可得:F(xm)0x=+F(xm)0y=+MMA(Xe,Ye)图4逐点比较法插补(直线)Xm/Ym=Xe/Ye即 Ym XeYeXm=0由此,可定义直线插补的偏差判别式如下:Fm=XeYm-YeXm若 Fm=0 表示动点在OA直线上若 Fm>0 表示动点在OA直线上方若 Fm<0 表示动点在OA直线下方当 时M点在直线上或在直线上方,应沿+X方向进给一步,走步后新的坐标值为Xm+1=Xm +1Ym+1=Ym新的偏差为:F m+1=FmYe若F
19、m<0 则应沿+Y方向进给一步,走步后新的坐标值为Xm+1=XmYm+1=Ym +1新的偏差为:F m+1=Fm+XeOXYABBBBF(xm)0y=+F(xm)0x=+F(xm)0y=F(xm)0x=+F(xm)0y=+F(xm)0x=+F(xm)0y=F(xm)0x=+图 5四象限直线偏差符号和进给方向终点判断的方法设置变量CountN减法计数器,在加工之前存入终点坐标值Xe 、Ye,X或Y坐标每进给一步时,就在计数器中、减去1,直到为零,停止插补,到达终点。其它象限的直线插补计算其它象限其实与第一象限或关于原心对称或关于X轴对称,所以,只要作符合上的变化,程序实现非常方便。圆弧插补
20、流程图起始F0,X0,Y0X0,Y0结束X(Y)= X(Y)-1+Y进给F=F+2Ym+1F=F-2Xm+1 +X进给F0X(Y)=0=NYNNYY:321偏差计算公式以第一象限逆圆为例介绍插补公式如图7所示,要加工圆弧AB,设圆弧的圆心在原点,并已知圆弧的起点A(Xo,Yo),终点B(Xe,Ye),圆弧半径为R。加工动点M(Xm,Ym),RmRXYB(Xe,Ye)A(Xo,Yo)图7第一象限逆圆弧M(Xm,Ym)它到圆心的距离为Rm。则有三种情况:当动点M在圆上有:当动点M在圆内有:当动点M在圆外有:因此,可定义圆弧偏差判别公式如下:若,应沿-X轴方向进给一步,到M+1点,YF(xm)0y=
21、 +F(xm)0x= F(xm)0y= F(xm)0x= F(xm)0x= +F(xm)0y= F(xm)0y= +F(xm)0x= +XO逆圆图8 逆圆插补示意图其坐标值为: 则新加工点的偏差为:若,沿+Y轴方向进一步,到M+1点,其坐标值为则新加工点的偏差为:3.2.2终点判断的方法在绘图的过程中,不断地比较动点与终点的距离,当其距离小于脉冲当量时,在误差允许的范围达到终点。3.2.3其它象限的圆弧插补计算如图8所示,其它象限的圆弧或关于X轴对称、或关于X轴对称、或关于原心对称,完全可以按第一象限逆圆偏差公式进行计算,所不同的是将进给方向改变。第六章 设计小结数控课程设计是机电专业的一个重
22、要的实践性环节,是对所学数控技术课程和其它有关课程知识和技能的一次综合性练习,旨在使我们的知识得以巩固、充实、系统化,并进一步扩展。课程设计是培养我们理论联系实际、解决生产实际问题的良好机会。通过对数控铣床典型部件的设计和零件编程的具体问题的解决,不仅使我们对CAD/CAM仿真软件有了更深刻的了解,还是我们编程能力有了很大的提高。通过这次的设计,使我们更加明白知识的联贯性、融合性、全面性以及交错性的重要所在,这也是设计目的所在。我们应该持有自我增值、自我发展的人生观。要领悟“学海无边苦作舟”的真谛。力争上游。第七章 参考书目1 廖效果等主编.数控技术M湖北科学技术版社-2000.52数控原理机
23、械工业出版社1997.33 龚沛曾等.Visual Basic 程序设计教程M.高等教育出版社-19984Visual Basic6.0清华大学出版社1998.1第八章 数控代码Dim X As Double, Y As Double, z As Double 'X,Y,Z起点坐标Dim x1 As Double, y1 As Double, z1 As Double 'X,Y,Z终点坐标Dim gorder As String, morder As String, ornumber As Integer 'GM指令Dim movorder As String, con
24、order1 As String, conorder2 As String '移动,控制指令Dim cbstype As Integer '移动指令类型Dim xpoint As Double, ypoint As Double '轴测图坐标Dim xpp As Double, ypp As Double, zpp As Double '平面图坐标Dim centi As Double, centj As Double '圆心相对起点坐标Public getx As Double, gety As Double, getz As Double '
25、get参数设置Public bei As Integer '图形放大倍数Dim str As String '读入NC代码Dim prgline As Integer '运行行数Dim readnum As IntegerDim mm As Double '积分插补累加数Dim fm As Double '比较插补FMDim dl As Double '脉冲当量Dim Stepdl As IntegerDim xm As Double, ym As Double, zm As Double '动点X,Y,ZDim mx As Double
26、, my As Double, mz As Integer '积分插补数Dim pausecon As Integer '暂停控制Dim xx() As Double, yy() As Double, zz() As Double '保存XYZ值Dim xx0() As Double, yy0() As Double, zz0() As DoubleDim xf0() As Double, yf0() As Double, zf0() As DoubleDim xf1() As Double, yf1() As Double, zf1() As DoubleDim mo
27、vrou As IntegerDim mousex As Double, mousey As Single'Private Declare Sub DIO_OutputByte Lib "d:/dio.dll" (ByVal Address As Integer, ByVal DataOut As Integer)'Private Declare Function DIO_InputByte Lib "dio.dll" (ByVal Address As Integer) As Integer'并行口输入输出函数'画坐标S
28、ub drawxyz()linez.Cls '画轴测图坐标linez.Scale (-700 / bei, 700 / bei)-(600 / bei, -600 / bei)linez.Line (0, 0)-(0, 650 / bei), QBColor(10)linez.Line (0, 650 / bei)-(-10 / bei, 620 / bei), QBColor(10)linez.Line (0, 650 / bei)-(10 / bei, 620 / bei), QBColor(10)linez.Line (0, 0)-(-650 / bei, 0), QBColor
29、(10)linez.Line (-650 / bei, 0)-(-620 / bei, 10 / bei), QBColor(10)linez.Line (-650 / bei, 0)-(-620 / bei, -10 / bei), QBColor(10)linez.Line (0, 0)-(650 / bei * 0.7071, -650 / bei * 0.7071), QBColor(10)linez.Line (650 / bei * 0.7071, -650 / bei * 0.7071)-(620 / bei * 0.7071, -640 / bei * 0.7071), QBC
30、olor(10)linez.Line (650 / bei * 0.7071, -650 / bei * 0.7071)-(640 / bei * 0.7071, -620 / bei * 0.7071), QBColor(10)xlab.Caption = "X": ylab.Caption = "Y": zlab.Caption = "Z": olab.Caption = "0"xlab.Refresh: ylab.Refresh: zlab.Refresh: olab.Refreshlinez.PSet (0
31、, 600)linep.Cls '画平面图坐标linep.Scale (-200 / bei, 1000 / bei)-(1000 / bei, -200 / bei)linep.Line (0, 950 / bei)-(0, -150 / bei), QBColor(10)linep.Line (10 / bei, 920 / bei)-(0, 950 / bei), QBColor(10)linep.Line (-10 / bei, 920 / bei)-(0, 950 / bei), QBColor(10)linep.Line (-150 / bei, 0)-(950 / bei
32、, 0), QBColor(10)linep.Line (950 / bei, 0)-(920 / bei, 10 / bei), QBColor(10)linep.Line (950 / bei, 0)-(920 / bei, -10 / bei), QBColor(10)linep.PSet (0, 0)End Sub'逆圆插补Private Sub ycirsub(rr As Double, qbc As Integer)Dim xtemp, ytemp, ztemp As DoubleDim xppt, yppt, zppt As DoubleDim xpointtemp, y
33、pointtemp As Doublextemp = xm: ytemp = ym: ztemp = zmIf X = x1 And Y = y1 Then Exit SubIf fm >= 0 Then If xm >= 0 Then If ym >= 0 Then xm = xm - dl outdata(0).Text = 0 Else ym = ym + dl outdata(2).Text = 0 End If Else If ym >= 0 Then ym = ym - dl outdata(2).Text = 0 Else xm = xm + dl out
34、data(0).Text = 0 End If End IfElse If xm >= 0 Then If ym >= 0 Then ym = ym + dl outdata(2).Text = 0 Else xm = xm + dl outdata(0).Text = 0 End If Else If ym >= 0 Then xm = xm - dl outdata(0).Text = 0 Else ym = ym - dl outdata(2).Text = 0 End If End IfEnd IfIf xtemp = xm And ytemp = ym And zt
35、emp = zm Then Exit Subxpp = xm - (centi - X) * 10: ypp = ym - (centj - Y) * 10: zpp = zm xppt = xtemp - (centi - X) * 10: yppt = ytemp - (centj - Y) * 10: zppt = ztemp'平面图坐标If zpp <= 0 ThenReDim Preserve xx(UBound(xx) + 1), yy(UBound(yy) + 1), zz(UBound(zz) + 1) As Doublexx(UBound(xx) = xpp:
36、yy(UBound(yy) = ypp: zz(UBound(zz) = zppReDim Preserve xx0(UBound(xx0) + 1), yy0(UBound(yy0) + 1), zz0(UBound(zz0) + 1) As Doublexx0(UBound(xx0) = xpp: yy0(UBound(yy0) = ypp: zz0(UBound(zz0) = 0End Ifxpoint = -xpp + ypp * 0.7071 '轴测变换ypoint = -ypp * 0.7071 + zppxpointtemp = -xppt + yppt * 0.7071
37、ypointtemp = -yppt * 0.7071 + zpptxcText.Text = xpp / 10: ycText.Text = ypp / 10: zcText.Text = zpp / 10 '工件坐标linep.Line -(xpp, ypp), QBColor(qbc) '画平面图 linez.Line (xpointtemp, ypointtemp)-(xpoint, ypoint), QBColor(qbc) If zpp < 0 Then linez.Line (xpointtemp, ypointtemp - zppt)-(xpoint, y
38、point - zpp), QBColor(qbc - 1) End Iffm = xm 2 + ym 2 - rr 2End Sub'顺圆插补Private Sub scirsub(rr As Double, qbc As Integer)Dim xtemp, ytemp, ztemp As DoubleDim xppt, yppt, zppt As DoubleDim xpointtemp, ypointtemp As Doublextemp = xm: ytemp = ym: ztemp = zmIf X = x1 And Y = y1 Then Exit SubIf fm &g
39、t;= 0 Then If xm >= 0 Then If ym >= 0 Then ym = ym - dl outdata(2).Text = 0 '0表示正方向 outdata(3).Text = 1 '1表示负方向 Else xm = xm - dl outdata(0).Text = 0 outdata(1).Text = 1 End If Else If ym >= 0 Then xm = xm + dl outdata(0).Text = 0 outdata(1).Text = 0 Else ym = ym + dl outdata(2).Tex
40、t = 0 outdata(3).Text = 0 End If End IfElse If xm >= 0 Then If ym >= 0 Then xm = xm + dl outdata(0).Text = 0 outdata(1).Text = 0 Else ym = ym - dl outdata(2).Text = 0 outdata(3).Text = 1 End If Else If ym >= 0 Then ym = ym + dl outdata(2).Text = 0 outdata(3).Text = 0 Else xm = xm - dl outda
41、ta(0).Text = 0 outdata(1).Text = 1 End If End IfEnd IfIf xtemp = xm And ytemp = ym And ztemp = zm Then Exit Sub xppt = xtemp - (centi - X) * 10: yppt = ytemp - (centj - Y) * 10: zppt = ztempxpp = xm - (centi - X) * 10: ypp = ym - (centj - Y) * 10: zpp = zmIf zpp <= 0 ThenReDim Preserve xx(UBound(
42、xx) + 1), yy(UBound(yy) + 1), zz(UBound(zz) + 1) As Doublexx(UBound(xx) = xpp: yy(UBound(yy) = ypp: zz(UBound(zz) = zppReDim Preserve xx0(UBound(xx0) + 1), yy0(UBound(yy0) + 1), zz0(UBound(zz0) + 1) As Doublexx0(UBound(xx0) = xpp: yy0(UBound(yy0) = ypp: zz0(UBound(zz0) = 0End Ifxpoint = -xpp + ypp *
43、 0.7071 '轴测变换ypoint = -ypp * 0.7071 + zppxpointtemp = -xppt + yppt * 0.7071ypointtemp = -yppt * 0.7071 + zpptxcText.Text = xpp / 10: ycText.Text = ypp / 10: zcText.Text = zpp / 10 '工件坐标linep.Line -(xpp, ypp), QBColor(qbc) '画平面图 linez.Line (xpointtemp, ypointtemp)-(xpoint, ypoint), QBColo
44、r(qbc) If zpp < 0 Then linez.Line (xpointtemp, ypointtemp - zppt)-(xpoint, ypoint - zpp), QBColor(qbc - 1) End Iffm = xm 2 + ym 2 - rr 2End Sub'直线积分插补Private Sub linesub(cx, cy, cz As Integer, fangx, fangy, fangz As Integer, qbc As Integer)'CX,CY,CZ为x,y,z偏移量,fangx,fangy,fangz 1表示正方向,-1为负方
45、向If cx = 0 And cy = 0 And cz = 0 Then Exit SubDim xtemp, ytemp, ztemp As DoubleDim xppt, yppt, zppt As DoubleDim xpointtemp, ypointtemp As Doublextemp = xm: ytemp = ym: ztemp = zm mx = mx + cx / 10: my = my + cy / 10: mz = mz + cz / 10 If mx >= mm Then xm = xm + fangx * dl mx = mx - mm outdata(0)
46、.Text = 0 End If If my >= mm Then ym = ym + fangy * dl my = my - mm outdata(2).Text = 0 End If If mz >= mm Then zm = zm + fangz * dl mz = mz - mm outdata(4).Text = 0 End If If xtemp = xm And ytemp = ym And ztemp = zm Then Exit Sub xpp = xm + X * 10: ypp = ym + Y * 10: zpp = zm + z * 10 If zpp
47、<= 0 ThenReDim Preserve xx(UBound(xx) + 1), yy(UBound(yy) + 1), zz(UBound(zz) + 1) As Doublexx(UBound(xx) = xpp: yy(UBound(yy) = ypp: zz(UBound(zz) = zppReDim Preserve xx0(UBound(xx0) + 1), yy0(UBound(yy0) + 1), zz0(UBound(zz0) + 1) As Doublexx0(UBound(xx0) = xpp: yy0(UBound(yy0) = ypp: zz0(UBoun
48、d(zz0) = 0End If xppt = xtemp + X * 10: yppt = ytemp + Y * 10: zppt = ztemp + z * 10 xpoint = -xpp + ypp * 0.7071 '轴测变换 ypoint = -ypp * 0.7071 + zpp xpointtemp = -xppt + yppt * 0.7071 ypointtemp = -yppt * 0.7071 + zppt xcText.Text = xpp / 10: ycText.Text = ypp / 10: zcText.Text = zpp / 10 '工
49、件坐标 linep.Line -(xpp, ypp), QBColor(qbc) linez.Line (xpointtemp, ypointtemp)-(xpoint, ypoint), QBColor(qbc) If zpp < 0 Then linez.Line (xpointtemp, ypointtemp - zppt)-(xpoint, ypoint - zpp), QBColor(qbc - 1) End IfEnd SubPrivate Sub Form_Load() Me.Left = GetSetting(App.Title, "Settings"
50、, "MainLeft", 1000) Me.Top = GetSetting(App.Title, "Settings", "MainTop", 1000) Me.Width = GetSetting(App.Title, "Settings", "MainWidth", 6500) Me.Height = GetSetting(App.Title, "Settings", "MainHeight", 6500) '读入设置 fileframe.
51、Caption = "代码" getx = getform.getxt.Text '读入get参数设置 dl = dlt.Text * 10 Call drawxyz ReDim xx(0) As Double, yy(0) As Double, zz(0) As DoubleReDim xx0(0) As Double, yy0(0) As Double, zz0(0) As DoubleEnd SubPrivate Sub Form_Unload(Cancel As Integer) If Me.WindowState <> vbMinimized
52、Then SaveSetting App.Title, "Settings", "MainLeft", Me.Left SaveSetting App.Title, "Settings", "MainTop", Me.Top SaveSetting App.Title, "Settings", "MainWidth", Me.Width SaveSetting App.Title, "Settings", "MainHeight", M
53、e.Height '保存设置 End If EndEnd Sub'清除Private Sub mnueditclear_Click()filetxt.Text = "" '清除文件框arimage.Top = 300End Sub'清除Private Sub clear_Click()filetxt.Text = "" '清除文件框arimage.Top = 300End Sub'暂停Private Sub mnurunpause_Click()clear.Enabled = TrueTimer2.Inte
54、rval = 0Timer1.Interval = 0pausecon = 1End Sub'暂停Private Sub pause_Click()clear.Enabled = TrueTimer2.Interval = 0Timer1.Interval = 0pausecon = 1End Sub'运行Private Sub mnurunrun_Click()If pausecon = 1 Then '当暂停时为继续Timer1.Interval = 1Timer2.Interval = 1pausecon = 0ElseIf filetxt.Text = "" ThenMsgBox "请加载NC程序", vbOKOnly, "加载失败"Exit SubElseclear.Enabled = FalseReDim xx(0), yy(0), zz(0) As DoubleReDim xx0(0), yy0(0), zz0(0) As DoubleReDim xf0(0) As Double, yf0(0) As Double, zf0(0) As DoubleReDim xf1(0) As Double, yf1(0) As Double, zf1(0) As Doublestr =
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年湖南长沙市一中青竹湖湘一教育集团公开招聘教师50人模拟试卷及答案详解(夺冠系列)
- 2025年湖北医药学院专项公开招聘第二批工作人员11人模拟试卷及一套参考答案详解
- 2025江苏盐城市东台市教育局直属学校招聘教师、教练员58人考前自测高频考点模拟试题及完整答案详解
- 2025年福建省泉州市晋江市反邪教协会招聘1人模拟试卷附答案详解(黄金题型)
- 2025福建厦门红宝石投资管理有限公司社会招聘工程管理岗1人模拟试卷附答案详解(完整版)
- 2025湖南科技学院公开招聘44人考前自测高频考点模拟试题及1套参考答案详解
- 2025广西贺州市商务局公开招聘1人考前自测高频考点模拟试题及答案详解1套
- 广东省【中职专业高考】2025年中职高考对口升学(理论考试)真题卷【医药卫生大类】模拟练习
- 小学复学安全培训方案课件
- Hydroquinone-d6-Quinol-d-sub-6-sub-生命科学试剂-MCE
- Dynaform中文手册文档
- 中医护理常规呕吐
- 粤语文化课件图片
- 2025至2030中国甲状腺素淀粉样变(ATTR)行业发展趋势分析与未来投资战略咨询研究报告
- 失血性休克麻醉病例分享
- 公司管理层奖惩管理制度
- 小学竹编教学课件
- 2025至2030年中国汽车轮胎压力监测系统(TPMS)行业市场运行态势及发展前景研究报告
- 2025年核电池项目分析及研究报告
- CJ/T 480-2015高密度聚乙烯外护管聚氨酯发泡预制直埋保温复合塑料管
- CJ/T 197-2010燃气用具连接用不锈钢波纹软管
评论
0/150
提交评论