ug编程教案(精选7篇)
1.ug编程教案 篇一
UG模具编程培训
一、课程前景:
数控编程在机械行业的运用非常广泛,其包含机械零部件产品,模具行业等众多机械企业单位。很多企业需求能够独立编程的技能型人才,就业前景非常广泛,尤其是机械、模具等行业。
二、培训目标:
针对机械加工行业和市场需求,培养具备机械行业的数控编程人才,使学员学到UG编程的高深层次的技能,从零件产品要求,材质,刀具材质,切削参数设定到加工编程,分析的整套加工过程,使学员学完后可以直接担任编程工作。
三、培训内容:
1.常用二维曲线功能、曲线编辑、实体创建、实体编辑、曲面创建等基 本绘图功能的了解与运用。
2.二维加工,平面铣的种类和加工参数的讲解与设置。
3.型腔铣的种类和加工参数的讲解与设置。
4.固定轴曲面轮廓铣种类和加工参数的讲解与设置,三维刻字的应用。
5.钻孔加工基础(钻孔,镗孔,攻丝等)。
6.模板的制作以及如何建立自己的刀具库和加工模板。
7.模具中的镶件、斜顶、非标零件、模框的加工方法。
8.简单及中等难度模芯的加工方法与策略。
9.对于复杂的型芯及型腔的加工方法与参数设置及注意事项。
10.模具拆电极。包括拆电极的思路,在借助电极外挂与没有电极外挂的情况下分电极的方法以及技巧,电极外挂的使用。以实例进行讲解(如电器类和手机壳类模具等)
11.如何制作放电加工图。
12.综合实例的讲解,对不同类型的整套模具从加工思路、加工方法,拆电极的合理性到出工程图逐一详细讲解。
13.经验总结,对学员的疑问进行答疑。
四、上课形式
周日班,每周日9:00—16:00。
五、培训费用:
2980元/人。
六、考试鉴定
经考试合格者,获得高薪技术人才管理办公室颁发的《数控编程工程师》证书,全国通用,网上查询,就业有效。
七、师资介绍:
曹老师,2000年毕业于天津第二轻工业学校模具设计与制造专业,后与2002年在天津师范大学进修三年计算机信息管理专业,从事UG模具编程工作10余年,精通UG模具编程设计软件、MasterCAM编程软件等,现任某科技公司模具CNC主管,拥有大量的模具编程经验和编程案例。
联系人:周老师
电话:***65129283
QQ:1160956537
地址:苏州市人民路965号(图书馆正对面,捷梯教育)
2.ug编程教案 篇二
关键词:UG,数控车床,自动编程
随着二十一世纪的发展, 数控加工技术已得到广泛应用, 如数控铣削、镗削、车削、线切割、电火花加工等。数控设备为精密复杂零件的加工提供了基本条件, 但要达到预期的加工效果, 编制高质量的数控程序是必不可少的, 对于一些复杂的零件, 手工编程效率低, 往往需要借助于CAM软件编制加工程序, 本文讨论了基于UG自动编程的数控车削加工方法, UG的数控车模块包含钻孔、铰孔, 车外圆、内孔来缩短编程人员的编程时间, 降低生产成本, 提高工作效率。
1 UG NX软件简介
UG (Unigraphics NX) 是Siemens PLM Software公司出品的一个产品工程解决方案, 它为用户的产品设计及加工过程提供了数字化造型和验证手段。UG NX加工基础模块提供联接UG所有加工模块的基础框架, 它为UG NX所有加工模块提供一个相同的、界面友好的图形化窗口环境, 用户可以在图形方式下观测刀具沿轨迹运动的情况并可对其进行图形化修改:如对刀具轨迹进行延伸、缩短或修改等。该模块交互界面可按用户需求进行灵活的用户化修改和剪裁, 并可定义标准化刀具库、加工工艺参数样板库使初加工、半精加工、精加工等操作常用参数标准化, 以减少使用培训时间并优化加工工艺。UG软件所有模块都可在实体模型上直接生成加工程序, 并保持与实体模型全相关。
2 带轮的车削工艺分析
图1所示是带轮的零件图, 工件材料为45钢调质, 毛抷尺寸为Ø65mm×35mm的棒料。该零件包含车外圆带轮曹、内孔等操作, 该零件的带轮槽充分体现了UG数控车在编程方面的优越性。其加工工艺简述如下。
工序1:采用手动车削车外圆夹持位Φ63mm×20mm。
工序2:夹φ63mm×20mm车端面及内孔φ40undefined、φ17undefined。
工步1:粗车端面;工步2:精车端面;工步3:粗车内孔φ40undefined、φ17undefined至φ39.5、φ16.5;工步4:精车内孔至φ40undefined、φ17undefined至φ39.5、φ16.5;工步4:精车内孔至φ40undefined、φ17undefined。
工序3:采用手动车削粗精车端面并保证32±0.05;
工序4:车工装心轴;
工序5:把工件串在心轴上, 用螺帽压紧, 粗精车带轮槽至尺寸。
3 创建工序5 (车带轮槽) 的刀轨
3.1 建立零件三维模型
首先在建模草图模块的方式下绘制工件的二维图形, 后在特征建模模块使用回转指令建立三维模型。
3.2 加工环境初始化
在UG模块中, 选择加工模块, 打开加工环境, 在“CAM会话配置”中选择[lathe], 在“要创建的CAM设置”中选[turning], 单击确定进入加工环境。
3.3 创建工件坐标系
在操作导航器空白处点击右键, 选择几何视图。
3.4
双击MCS_SPINDLE坐标, 指定MCS (编程坐标系)
3.5 创建刀具组
创建刀具组主要用来选择刀具, 加工该带轮槽选择35°外圆车刀:①选择[类型]为[turning] (车削) ;②选择[刀具子类型]为[OD_55_L_1] (55°外圆刀) ;③选择[父本组]为[GENERIC_MACHINE];④ISO刀片形状选择[V菱形35], 刀尖半径0.4, 方向角度72.5;⑤跟踪P值[P8]。
3.6 创建几何体及毛坯
选择操作导航器坐标系子目录, 双击WORKPIECE指定部件, 双击下层子目录TURNING_WORKPIECE指定毛坯边界, 选择管材, 选择安装位置, 输入尺寸。
3.7 创建操作粗加工外圆和槽
菜单命令[插入]/[操作], 弹出[创建操作]对话框, 在该操作中, 主要完成如下内容:设置切削方式;选择切削策略;设置切削深度;设置切削参数;设置非切削移动;设置进给和速度;机床控制;最后生成粗加工轨迹, 还可以进行三维动画演示以验证刀路轨 (如图2) 。
3.8 创建操作精加工外轮廓
精加工外形轮廓与粗加工的大部分方法方式是一样的, 只是一些切削用量和余量等需要修改。
3.9 后处理生成程序
CAM的最终目的是生成一个数控机床可以识别的代码程序, UG/POST是UG软件自身提供的一个后置处理程序, 可将产生的刀具路径转换成指定的机床控制系统所能识别的加工指令, 凸轮零件生成的程序清单。
4 结束语
3.ug编程教案 篇三
关键词:数控加工 切削参数库 选择方式
一、数控编程中参数的确定
数控加工是指通过分析待加工零件的几何结构,使用软件提供工艺参数的设置界面,选择合适的工艺过程和工艺参数生成刀路轨迹,再生成数控指令,指挥数控机床按程序进行加工。由于加工过程是自动的,因此加工中的所有参数都要预先设置好。数控加工中对工艺问题处理的好坏,将直接影响数控加工的质量和效率,严重时还会对数控机床造成损坏。为此,要求数控程序编程员首先应该对数控加工工艺有深入的了解。
数控銑削中加工参数的定义原则是:根据机床的刚性、刀具材料、工件材料、工件的结构特点、加工工艺等因素合理选用。切削用量包括主轴转速、进给速度、切削深度和切削宽度等,在确定切削用量时要根据机床使用的规定和要求以及刀具的耐用度去选择和计算,当然也可以结合实践经验,采用类比法来确定。其中,切削深度主要受机床、工件和刀具的刚度限制,在刚度允许的情况下,尽可能使切削深度等于零件的加工余量。在选择切削用量时要保证刀具能安全、顺利地加工完一个零件。
下面以UGS公司的CAD/CAM软件NX6为例,论述一般情况下应如何定义这些加工参数。
1.刀具选择
粗加工刀具选择以在最短时间内切除尽可能多的材料为目标,故选择直径20mm的端面铣刀。
2.刀具切削宽度(步距)和切深(每层走刀量)定义
系统默认设置步距为刀具直径的50%,切深为6mm。根据机床刚性、刀具、被切削零件材料进行选择。高速銑削机床一般适合于小切深,高进给率的加工状态,因此这里定义切削深度为1mm,切削材料为T10钢,使用刀具为硬质合金刀具,选择切削步距为刀具直径的80%,即16mm。
3.刀具切削参数选择,
(1)直接根据编程员的经验,输入主轴转速和加工的进给率。这种方法比较直观,对编程员的实践经验有较高的要求,并需借助刀具样本的参数推荐表、机床刚性、以往加工的实际效果进行综合考虑、计算。
(2)使用CAM软件自带的切削数据库,系统会根据选定的刀具、切削状态,自动提取切削速度、每齿进给率,计算出主轴转速和切削进给率的值。此方法比较适合于缺乏实践经验的编程者,但根据软件内置的数据库生成的参数,仅符合一般情况下的切削状态,且具有较大的安全系数。因此,不适用于某些特定的切削方式、条件,否则,加工效率难以保证。对此,可进行模板设置,即预先按照零件的加工工艺、使用刀具、切削参数设选项置,并将其作为模板文件保存。在遇到新的零件需要进行数控编程时,可将零件模型读入,选择需加工的部分,即可根据模板对其进行更新计算,省去参数设置的过程。但此时,易出现参数雷同的现象,无法做到对于实际情况的微调,过于死板。
综合以上情况,在当前普遍使用CAM软件进行数控编程的情况下,主要有以下两个难题:一是软件功能强大,切削方式多样,如何快速根据用户特定需要进行选择、设定;二是刀具种类繁多,针对不同的刀具、切削材料有不同的切削量和走刀参数,如何针对这些经验参数进行归纳、管理,方便重复利用。
二、切削参数库的使用
针对以上情况,UG NX6软件提供了功能强大的用户自定义切削参数库,可以方便用户根据自己的实际情况进行参数设定,自动插补,方便调用。其工作原理为根据被切削材料、使用刀具的材料、几何尺寸、切削工艺,在库中检索,自动选择合适的参数。
用户可在加工参数对话框中,进行刀具材料、切削方法、被切削材料的预设值,选择的刀具材料为涂层镶片式硬质合金,切削方式为高速铣粗加工。然后输入刀具参数,直径为20mm,刀具长度100mm,刀具切削深度为1mm,切削宽度为16mm,并按照切削参数推荐值输入切削线速度为200m/min,每齿进给率为0.15,系统会自动计算出主轴转速和切削进给率,随后就可以在编制数控程序时调用这些参数。调用时,首先在选择加工零件体时定义材料,如T10钢,选择相应的加工方法,如高速铣粗加工,可在创建操作时,通过点取Set Machining Data得到相应的主轴转速,自动获取切削进给率。同时,切深和切削宽度也会自动改为合适的值。如果用户新创建一把直径为10mm的刀具,系统也会在库中根据插值计算原理,给出合适的主轴转速和进给率。
由此可见,通过在加工参数中设定固定的切削参数计算依据,系统可根据切削参数的计算规则进行调用或插值运算,大大减少编程者的工作量,生成的参数安全、高效,使得数控程序的编制可以针对用户实际需要做到标准化、智能化,从而提高编程效率,减少差错的产生。
参考文献:
[1]李户曾等.高速切削加工技术在模具和模型制造中的应用[J].模具技术,2002(2).
[2]叶右东.数控铣削加工中的工艺分析及处理[J].机械,2004(10).
4.Windows编程教案 篇四
第一课
最简单的Windows程序(2学时)
Windows编程是一个很大的主题,涉及的方面也非常的多。Windows始于90年代,至今Windows编程的发展已经非常成熟了,而单独直接使用API的开发也是越来越少了。因此,市面上很少有泛泛的简单入门级的Windows程序设计了。一个是系统级的Windows编程介绍,如Windows核心编程。一个是方向级的Windows编程介绍如Windows图形编程,Windows网络编程等等。我们这次课的主要参考用书是Windows核心编程,同时也参考了一些其他内容。鉴于教材的价格较贵,同时也需要考虑我们自身的学习内容不一定很多以及学时的原因,就没有定教材。看我的教案吧。
(1)Win32 API API : Application Program Interface。应用程序接口。API就是在进行Windows编程时使用的函数库。本课就是
Windows编程=API+C语言(或者C++语言)(2)开发环境
我校机器上安装了VC++ 6.0。相信这是大家一直以来学习C,C++使用的开发环境。但VC60离我们实在太远了,它是一款90年代的产品,已经近20年的历史了。我们机器里还有VS2005 或 VS2008,那里面的C环境要比VC60强太多了,强烈建议大家使用更高级的平台。本次授课的开发环境有两个。一个是轻量级的DEV C++,一个是重量级的VS2010.简单程序我们都将用DEV C++来实现。
DEV C++是一个非常小的C环境,但性能要优于VC60,调试环境不如VC60。这个环境在我们的共享资源里有,大家可以下载安装。安装过程非常简单,一直下一步即可。
这是其主界面。
(3)最简单的Windows程序
提到最简单的程序,几乎所有的人都会想起经典的HelloWorld。
这不是Windows程序,如果在以前这叫DOS程序,现在叫Windows控制台应用程序。它不算Windows程序,但它很简单的就把Helloword显示到屏幕上了。而Windows程序要想把HelloWorld显示在屏幕上就确实不容易了。
3.1 访问Helloworld网站,因为把Helloworld显示在屏幕上并不容易,我们可以一点一点来,先让Helloworld以文字形式出现在其他地方,这里我们通过访问网站E,HINSTANCE,LPSTR,int nShow)DefWindowProc(HWND,UINT,WPARAM,LPARAM)GetMessage(LPMSG lpMsg,HWND hWnd,UINT wMsgFilterMin,UINT wMsgFilterMax).如果得到WM_QUIT返回0 TranslateMessage(&MSG)DispathMessage(&MSG)BeginPaint(&PAINTSTRUCT)TextOut(HDC,INT,INT,LPSTR,INT)EndPaint(HWND,&PAINTSTRUCT)作业:
自己建立应用,在窗口100,100位置显示HelloWorld 第三课 坐标位置及大小(4学时)
在我们写控制台应用的时候,不能自由的控制输出显示的位置。因此,没有学习过这方面的内容,现在我们创建了窗口,并且在窗口上显示了Hello World。这个过程涉及到很多涉及位置和大小的因素,如窗口的大小,显示的位置,文字显示的位置。说到位置,就涉及定位,说到定位就要说坐标系。在屏幕上显示内容涉及到坐标空间的知识。在Windows应用中坐标空间分如下几部分内容
1、物理坐标空间
物理坐标空间,指的是物理设备上对应的坐标系。如显示器
坐标原点在左上角。如下是一个1024*768的屏幕物理坐标(0,0)(1024,0)
(0,768)
2、设备坐标空间
基于设备上下文指定的坐标空间。如窗口内显示的文本,使用的坐标就是基于窗口内上下文的坐标。
可以看到设备空间是物理空间体系的一个子空间。设备空间可以依赖于一个窗口。换句话可以把设备空间理解为在物理空间上显示的一个对象,其子空间。下面我们通过一个小例子理解物理空间和设备空间
在窗口的标题条,以设备坐标,和物理坐标的形式显示鼠标在窗口内的位置
WndProc处理消息循环
WM_MOUSEMOVE,鼠标移动时消息标识,是个整数。其参数lParam,的第16位代表设备坐标中的X,高16位代表设备坐标的Y。POINT 是结构体。只有x,y两个成员 ClientToScreen,将设备坐标转换为屏幕坐标(物理坐标)sprintf:格式化字符串
SetWindowText:设Window标题
3、页面坐标空间(逻辑坐标空间的一种)
作用,可以任意指定坐标原点,坐标轴方向,比例尺等信息。可以用来与设备无关的大小如厘米,毫米等。
页面坐标叫窗口,其表示有原点(X,Y),宽度,高度组成(WIDTH,HEIGHT)设备坐标叫视口,其表示有原点(x,y),宽度,高度组成(width,height)
页面坐标和设备坐标的变换关系,大写为设备坐标,小写为页面坐标
PX=X+(px-x)*WIDTH/width PY=Y+(py-y)*HEIGHT/height
px=x+(PX-X)*width/WIDTH py=y+(PY-Y)*heigh/HEIGHT
GDI函数使用页面坐标,显示出来时是设备坐标
通过对窗口,是否对应的四个参数的设置,可以实现特殊的变换。页面坐标是逻辑坐标的一种。在这个例子中我们一直使用 MoveToEx(ps.hdc,0,0,NULL);
LineTo(ps.hdc,30,30);划线,MoveToEx是把画笔移动到指定位置(页面坐标),LineTo是从画笔所在位置到目标位置画一条线。
在这个例子中,每次划线前通过设置视口,窗口结果使划线的结果不同。这种形式的坐标转换无法实现旋转
4、世界坐标空间(逻辑坐标空间的另一种)功能:比页面坐标空间方便,可以实现旋转 结构体 XFORM{ FLOAT eM11, FLOAT eM12, FLOAT eM21, FLOAT eM21, FLOAT eDx, FLOAT eDy, } 世界坐标到设备坐标的变换。小写到大写。PX=eM11*px+eM21*py+eDx;PY=eM12*px+eM22*py+eDy;默认为{1,0,0,1,0,0} 和设备坐标相同 {1001dxdy} {mx00my00}缩放 {-100-100}映像
旋转{cos(a),sin(a),-sin(a),cos(a),0,0}顺时针旋转a度 {cos(a),-sin(a),sin(a),cos(a),0,0}逆时针旋转a度
我们下面的例子通过Rectangle(ps.hdc,0,0,50,50);绘制50*50的矩形,用循环配合世界坐标变换绘制特殊的图形
循环20次,每次旋转坐标轴的方向,绘制正方形。总结:
物理坐标指的是屏幕坐标,不能改变坐标轴 设备坐标指的是窗口坐标,不能改变坐标轴
页面坐标和世界坐标均是逻辑坐标,可以改变坐标轴,世界坐标功能更强,可以旋转。理解这些概念的绘图是很重要的。
相关函数
BOOL ClientToScreen(HWND hWnd, LPPOINT lpPoint);设备坐标转屏幕坐标
BOOL ScreenToClient(HWND hWnd,LPPOINT lpPoint);屏幕坐标转设备坐标 int MapWindowPoints(HWND hWndFrom, HWND hWndTo, LPPOINT lpPoints, UINT cPoints);
各个窗口设备坐标之间的转换
BOOL SetWindowOrgEx(HDC hdc, int X,int Y,LPPOINT lpPoint);设置窗口的原点
SetViewportOrgEx(HDC hdc,int X,int Y,LPPOINT lpPoint);设置视口的原点
BOOL SetViewportExtEx(HDC hdc, int nXExtent, int nYExtent,LPSIZE lpSize);设置视口的width,height BOOL SetWindowExtEx(HDC hdc, int nXExtent,int nYExtent, 设置窗口的width,height SetMapMode设置页面坐标的映射模式 SetGraphicsMode设置世界坐标的映射模式 Rectangle绘制矩形,并填充内部 SetWorldTransform设置世界坐标变换 LineTo:换线
MoveToEx:移动画笔
SetWindowText设置窗口标题
LPtoDP(hdc,LPPOINT,int)把逻辑坐标点转换为设备坐标点 作业:
使用movetoex,lineto,LPtoDP及世界坐标变换,绘制正六边形
LPSIZE lpSize);
提示:
画一条水平线后,将坐标原点移动到线的末尾,并将坐标轴旋转60度*n,重复上步 要将坐标移动到线尾需要使用LPtoDP
第四课 色彩及绘制(6学时)
(1)画点
像素:计算机屏幕上的一个点。是计算机屏幕显示的最小单位。点的个数取决于计算机的分辨率。如1024*768,则屏幕由1024*768个点组成。每个点都可以独立的显示一个颜色。计算机能够表示的颜色有256*256*256=16777216种。颜色的表示 COLORREF。定义颜色RGB COLORREF color=RGB(红,绿,蓝)随机绘制颜色点
需要#include
GetTickCount(): API函数,得到系统开机后到现在的滴答数,特点就是每次返回的结果不重复。
两者的配合得到不重复的随机数序列
rand得到函数
SetPixel设置某点的颜色
(2)画线
在以前的例子里我们一直用1个像素宽的黑色实现来画线。现在我们学习创建画笔,用画笔来画线。
步骤
1、创建画笔CreatePen(画笔类型,宽度,颜色)
2、将画笔选入设备上下文SelectObject
3、用画笔绘制
4、将画笔选出设备
5、删除创建的画笔对象
SelectObject是将GDI对象画笔选入设备上下文,并将当前的选出返回。因此我们两次使用SelectObject,最后一个将以前的画笔选入,返回我们创建的,并在下一步删除画笔。
虚线只能支持宽度1.画线函数
Polygon(HDC,LPPOINT,INT).连接指定点,画多边形,封闭。如果画4边形则确认3个点即可。
Polyline(HDC,LPPOINT,INT).连接指定点,画多边,不封闭 MoveToEx:移动画笔
LineTo:用当前的画笔划线
Arc:画圆弧 BOOL Arc(HDC hdc, int nLeftRect, int nTopRect, int nRightRect,int nBottomRect, int nXStartArc,int nYStartArc,int nXEndArc,int nYEndArc);前4个是画圆弧的矩形,后四个指定了弧开始和结束的位置 作业:画一条正弦曲线
使用SexPixel,LineTo,MoveToEx实现
(3)画面
画面就是用画刷来填充 步骤
1、创建画刷CreateSolidBrush(颜色)
2、将画刷选入设备上下文SelectObject
3、用画刷填充
4、将画刷选出设备
5、删除创建的画刷对象
用蓝色画刷填充矩形,矩形的边框是黑色。CreateSolidBrush:创建颜色画刷
Rectangle:绘制矩形,用当前的Pen绘制边框,用当前的Brush来填充矩形内部 FillRect:画刷填充矩形。FillRect(hdc,&RECT,HBRUSH)
使用FillRect不绘制边框,因为参数中有画笔,也不用SelectObject了。Ellipse:椭圆,圆。画边框,填充 Pie:圆饼(4)位图
将文件系统中的位图显示到窗口中。绘制位图步骤
1、根据现有的设备上下文创建兼容的设备上下文
2、加载位图
3、绘制图像
4、删除加载的位图
5、删除兼容的设备上下文
BitBlt是在设备上下文之间拷贝图像的函数,非常常用
在上一个列子的基础上,得到位图的大小并绘制实际大小的位图 作业:
在一个窗口上显示一副位图文件(*.bmp)。(5)字体和文本
创建逻辑字体并显示文本 步骤
1、创建逻辑字体
2、选入字体
3、输出文本
4、选出字体
5、删除字体
另一个与文本绘制有关的功能更强的函数是DrawText 总结:本课介绍了一些基本的绘图操作,其中涉及了较多的函数,这里只是介绍了基本的使用方式和原理。函数 srand rand GetClientRect SetPixel LineTo MoveToEx CreatePen CreateSolidBrush CreateFontIndirect BitBlt SelectObject DeleteObject CreateCompatibleDC LoadImage Rectangle FillRect DeleteDC 等等。
第五课 常用控件的使用(6学时)
在上面的几节课程中我们学习了如何建立Windows 应用,并在图形环境下绘制图形。这些操作都是控制台应用中没有的。本章我们介绍如何在窗口中加入按钮等常规控件,并且处理它们。
一般控件种类,按钮,列表组合,编辑,列表,滚动条,静态文本。控件是一种特殊的窗口。这些特殊窗口的类已经由Windows系统注册了,不需要我们注册。这些类的名字分别为。
BUTTON,COMBOBOX,EDIT,LISTBOX,SCROLLBAR,STATIC(1)创建
任何时候均可,但通常在WM_CREATE事件中处理
WM_CREATE是在窗口创建时触发 WM_DESTORY是在窗口销毁时触发
控件用CreateWindow创建,返回控件窗体的句柄,窗体的类型一定为WS_CHILDWINDOW。附加的类型以或关系叠加。具体要参见MSDN(2)操控
控制这些控件是通过向这些控件的窗体句柄发送特点消息来实现的 如 SendMessage(控件句柄,消息指,参数1,参数2)具体设置参见MSDN 在上面的例子,我们处理下拉列表的时候使用了SendMessage发送消息(3)反馈
我们操作控件会触发控件的事件得到一些反馈,下面介绍如何得到这些反馈。总体上,我们把这些反馈过程叫通知。通知的过程是将反馈发送给父窗体,一般父窗体有两个事件接收控件的反馈
WM_NOTIFY,WM_COMMAND。WM_COMMAND HIWORD(wParam)通知消息号 LOWORD(wParam)控件标识 WM_NOTIFY wParam :控件标识 lParam:NHMDR的指针
比如按钮的单机对应的事件是BN_CLICKED。该事件通过WM_COMMAND通知。
我们把上个例子补充完整,并且为每个控件指定ID,指定的方式是在(HMENU)的后面写个整数,原则上应该不同。
HIWORD,得到一个字的高字节。LOWORD得到一个字的低字节。(4)通用控件
我们上面介绍的是基本的控件,除了这些基本控件外还有一些通用控件。这些控件的使用和处理和基本的控件差不多,但功能更强大。ANIMATE_CLASS : 动画控件,播放AVI动画 DATETIMEPICK_CLASS :日期时间下拉控件 HOTKEY_CLASS :定义热键的控件 MONTHCAL_CLASS : 月份选择控件 PROGRESS_CLASS :进度条控件 REBARCLASSNAME :rebar控件 STATUSCLASSNAME:状态条控件 TOOLBARCLASSNAME :工具条 TOOLTIPS_CLASS :提示控件 TRACKBAR_CLASS :轨迹条 UPDOWN_CLASS :上下箭头
WC_COMBOBOXEX :组合框扩展 WC_HEADER :头控件
WC_IPADDRESS :IP地址控件 WC_LISTVIEW :listview控件
WC_PAGESCROLLER :页滚动控件 WC_TABCONTROL :tabControl控件 WC_TREEVIEW :树视图控件
通用控件在使用前使用InitCommonControlsEx初始化。使用这些通用控件要include
头部
这些控件和IE有关系,根据IE版本不同,控件的外观和功能有区别。
(5)创建菜单
CreateMenu:创建一个菜单
CreatePopupMenu:创建一个子菜单 AppendMenu:向菜单增加项目 SetMenu:将菜单联系到窗口
第六课 进程及线程(2学时)
进程:是一个正在运行的程序的实例。由两个部分组成
1、一个是操作系统用来管理进行的内核对象。内核对象是系统用来存放关于进程信息的地方。
2、地址空间,每个进行都有自己的地址空间
进程本身不执行代码,进程要至少拥有一个线程,由线程来执行代码。每个线程都拥有自己的CPU寄存器和堆栈。当创建一个进程时系统会自动创建一个主线程。
CreateProcess创建进程
内部执行细节:1 创建一个小的结构存放进程信息分配地址空间
创建一个小的结构存放线程信息
执行C/C++启动代码,最终会调用WinMain或main。结束一个进程 TerminateProcess
TerminateProcess 1 使用ToolHelp遍历系统进程
列举系统全部的进程
需要
#include
线程
线程由两个部分组成 内核对象 线程堆栈,用于维护执行代码时所有的函数参数和局部变量 进程是活波的,进程不执行任何东西,它是线程的容器。线程在进程的地址空间中执行代码。如果一个进程拥有多个线程则这些线程共享进程地址空间内的代码和数据。进程的地址空间要比线程占用更多的系统资源,因此要更多的使用线程。每个线程必须有个入口点函数,主线程是main,WinMain。如果要创建一个线程,则这个线程的函数原型是这样的。DWORD WINAPI ThreadProc(PVOID pvParm){
return value;} 因为线程会共享全局变量,因此多线程应该少使用全局变量 1 线程创建
线程的创建不能直接使用CreateThread API函数。而要使用C编译环境自带的创建进程函数。
#include
unsigned uThreadid=0;uintptr_t hThread=
_beginthreadex(NULL, 0,ThreadProc,NULL,CREATE_SUSPENDED,&uThreadid);第3个参数是线程函数地址,第4个参数是传递到线程的LPVOID,第5个参数为0线程马上运行、CREATE_SUSPENDED需要激活才能运行。最后一个保存线程的ID 进程和线程ID是一个标识。不重复。进程和线程对象是系统对象,关闭这些对象对进程和线程的运行没有影响。
第7课 线程的调度和同步(6学时)线程暂停:
创建时使用CREATE_SUSPENDED创建一个暂停的线程
使用SuspendThread暂停线程
长时间不使用窗体 恢复线程:
ResumeThread
ResumeThread和SuspendThread使用次数要对应。
休眠线程 Sleep(毫秒)线程的同步是比较容易出错的地方,要多多实践和理解。参见线程冲突的例子。
每个线程对变量g累加10000次,创建6个线程,这是其中一次的运行结果。可以看到结果不是60000.对线程冲突问题的解释
一条C的g++对应的汇编指令为3条 mov eax,[g] inc eax mov [g],eax
如果我们创建两个线程,这两个线程将共享上面的代码。如果只有一个CPU的话,那同一时刻只能志执行一条汇编指令。但Windows的调度机制可以保证代码按顺序执行,但不能保证不被打断。举例 g=0 mov eax,[g] //1 eax=0 inc eax
//1 eax=1 mov [g],eax //1 g=1 eax=1 mov eax,[g] //2 eax=1 inc eax
//2 eax=2 mov [g],eax //2 g=2 eax=2 1和2两个线程分别执行上面的3行代码,则g被加了两次,得到2。但实际上这是多线程的特例。真实的情况是CPU下条要执行那个线程的代码是随机的。如下
g=0 mov eax,[g] //1 eax=0 inc eax
//1 eax=1 mov eax,[g] //2 eax=0 inc eax
//2 eax=1 mov [g],eax //2 g=1 eax=1 mov [g],eax //1 g=1 eax=1
线程1在增加后没有及时赋值给g,然后线程2执行。最后g为1。这就是线程没有同步导致的问题,也是我们程序中出现的问题。解决方法(1)原子操作函数
使用InterlockedExchangeAdd,加减
InterlockedExchange 赋值
InterlockedCompareExchange 比较赋值
使用这些函数加减变量,保证只有执行完后其他进程才能进入。
结果是60000了,但是按理应该输出六次“线程运行了结束了”。但只显示两次,其实每次的结果多不会一样。这也是并发带来的问题。
解决方法(2)关键代码段
在使用关键段之前使用该函数
输出了6次,但每次对应的g值不一定以10000递增。如果把进入关键段的位置提前到最前面可以得到常规的理解
这时这6个进程某种意义上没有并发执行。
局限:关键代码段只能在一个进程内使用,没有等待时长的限制容易死锁。解决方法(3)内核对象 具备通知状态的内核对象 进程 线程 作业
文件修改通知 事件
可等待定时器 文件 信标
控制台输入 互斥对象 举个例子
取消注释后,一次显示一个。体现了该函数对线程的控制。
(1)事件控制
尽管WaitForSingleObject可以等待很多对象的反应,但其主要还是用来处理事件等对象。事件是一种内核对象,有两个状态,一个用于表示该事件是自动重置事件还是人工重置事件。人工重置事件等待该事件的线程都会得到通知,自动重置事件只有一个线程会得到通知。另一个是事件的通知状态。一是未通知状态线程等待,一个是已通知状态,线程运行。CreateEvent(NULL,自动(false)还是手工(true),通知(true)未通知(false)。HANDLE CreateEvent(LPSECURITY_ATTRIBUTES lpEventAttributes,BOOL bManualReset,BOOL bInitialState,LPTSTR lpName);最后一个是为事件起个名字,同名事件不能建立两次。保证同名事件只能建立一次,可以为空。SetEvent:设为已通知状态 ResetEvent:设为未通知状态
OpenEvent:打开一个已经存在的时间,返回Handle
创建自动通知,立即通知事件
对自动通知事件SetEvent有意义,对手工通知事件无意义。手工通知同时显示6个窗口,自动通知一次显示1个(2)信标内核对象
使用信标可以确定让几个线程同时运行
CreateSemaphore(NULL,初始数,最大数,名称)OpenSemaphore
最多同时有3个线程运行。(3)互斥对象
互斥对象和关键代码段的作用相同,效率比关键代码段低。但运行不同进程间使用互斥对象,同时可以设置最大的等待时长。互斥对象和其他内核对象的区别,互斥对象可以记录调用的线程ID,一旦线程得到该对象同线程的其他地方的等待将不会等待。CreateMutex(NULL,初始等待,名称)OpenMutex(0,NULL,名称)ReleaseMutex(HANDLE),只能是否本线程得到的对象
5.数控编程与实训教案 篇五
课题凸台零件的加工
授课日期2008-04-22授课班级数高071
教学目标通过对凸台加工项目的实施,提高学生对已学的G01、G02、G03、G41、G42等编程指令综合应用的能力。
教学重点项目计划的制定、组织和实施。
能力目标
1、专业能力:识图、精度分析、工艺编制、计算与编程等能力。
2、方法能力:通过小组工作的方式、感受一般数控加工的工作流程,学会表达解决 问题的过程和方法。
3、社会能力:培养学生实际工作能力,以及与同伴合作交流意识和展示表达能力。
教学难点项目计划的制定、项目的实施
课型理论实践一体化教学课教学方法项目教学法 教具数控铣床、计算机、投影仪、图纸、实验材料、测量工具
教学内容及教学过程(含时间分配)
一.项目下达和项目介绍----------------------教师(5分钟)二.项目计划----------------------学生(15分钟)三.项目计划的展
示----------------------学生(10分钟)四.计划调整----------------------学生(5分钟)五.项目的实施----------------------学生(30分钟)
六.项目成果的展示----------------------师生(12分钟)七.项目评价----------------------师生(8分钟)八.教师小
结----------------------教师(5分钟)
课后记
根据授课进程,本班学生经过近7周的学习后,要求具备对已学编程指令知识综合应用能力,通过小组协作方式完成“凸台零件”的加工。本次教学采用“项目教学法”教学,通过该项目的实施,提高学生工艺分析、编程、加工的能力;提高学生解决问题,分析问题的能力、提高学生的团队意识和协作能力。
步骤一:教师根据教学计划向学生下达项目书。
步骤二:学生按照项目书拟定项目计划。
步骤三:学生展示项目计划。
步骤四:修订项目计划。
步骤五:学生按照确定的计划书实施项目。
步骤六:项目成果的展示。
步骤七:项目评价。
步骤八:老师小结。
6.VC图像编程教案 第四章 篇六
VC图像编程教案 第四章
设备描述表的应用及常用windows消息响应 图像编程中,难免会遇到需要绘图的问题,比如角点的标记,绘制坐标轴,文字(图像)显示等等。所以掌握一些设备描述表的应用也是很有必要的。非常详尽的关于设备描述表的讲述请参阅我空间里的`另一篇文章“关于设备描述表”。 CDC中常用的GDI函数: 绘制直线: CDC::MoveTo CDC::LineTo 绘制矩形: CDC::Rectangle 绘制圆: CDC::Ellipse 输出文字: CDC::TextOut 像素值: CDC::GetPixel CDC::SetPixel 更改设备描述表属性: CDC::SelectObject 有关设备描述表的属性类: 画笔 CPen::CPenCPen( ); CPen( int nPenStyle, int nWidth, COLORREF crColor ); throw( CResourceException ); CPen( int nPenStyle, int nWidth, const LOGBRUSH* pLogBrush, int nStyleCount = 0, const DWORD* lpStyle = NULL ); throw( CResourceException ); 画刷 CBrush::CBrush CBrush( ); CBrush( COLORREF crColor ); throw( CResourceException ); CBrush( int nIndex, COLORREF crColor ); throw( CResourceException ); CBrush( CBitmap* pBitmap ); throw( CResourceException ); 透明画刷声明方法: CBrush *brush; brush=CBrush::FromHandle((HBRUSH)GetStockObject(NULL_BRUSH)); 在讲解常用Windows消息响应时尝试使用这些方法。 作业: 实现一个在图像上随鼠标移动的选择框,并将选择框内的内容在点击右键时进行直方图均衡化。 第四章 TITLE=VC图像编程教案 第四章 TITLE=VC图像编程教案
7.ug编程教案 篇七
UG软件在机械设计和制造过程中有很重要的作用, 但有时会出现常规办法无法解决的问题, 下面结合笔者多年的实践经验, 介绍UG CAM加工钢件时关键参数的设定及常见问题的处理。
1 程序编制
1.1 粗加工
1) 粗加工采用D30R5刀具, 采用螺旋进刀, 刀具斜角2.5°, 转速控制在2000~3000 r/min, 切深在0.8 mm。依据加工参数设定其它数值。粗加工示意如图1所示。
1.2 半精加工
1) 如图2 (a) 采用D16R4刀具跟随上一把刀具的后面, 转速控制在3500~4000 r/min, 刀具斜角为3°, 切深在0.6 mm, 侧面留量和上一把刀具一致。在切削方法中选择“包容”, 然后选择D30R5刀具为参考刀具, 这样就避免重复加工, D16R4的刀只加工上一把刀没有加工到的部位。
2) 如图2 (b) 采用D10R5刀具跟随上一把刀具的后面, 转速控制在6600~7100 r/min, 由该刀具为球刀, 刀具斜角可不作要求, 切深在0.45 mm, 侧面留量和上一把刀具一致。在切削方法中选择“包容”, 然后选择D16R4刀具为参考刀具, 这样就避免重复加工, D10R5的刀只加工上一把刀没有加工到的部位。
3) 如图2 (c) 采用D6R3刀具跟随上一把刀具的后面, 转速控制在7500~9000 r/min, 由于该刀具为球刀, 刀具斜角可不作要求, 切深在0.25 mm, 侧面留量和上一把刀具一致。在切削方法中选择“包容”, 然后选择D10R5刀具为参考刀具, 这样就避免重复加工, D6R3的刀只加工上一把刀没有加工到的部位。
1.3 精加工
精加工分为陡面加工和非陡面加工, 在UG里有明确的陡面和非陡面加工, 采用“”命令, 将整个工件分成两部分, 以30°为分界线, 分成陡面和非陡面, 如图3所示。
然后选择相应的陡面加工操作和非陡面加工操作, 刀轨如图4和图5所示。
这样就完成了整个模具的加工, 采用后处理技术将刀轨转化成G代码, 整个程序就已完成。
2 数控编程中常出现的问题
在模具编程中, 往往会出现如下所示情况, 如图5所示, 出现“产生警告”时, 就会存在安全隐患, 部分刀轨在生成时出现残缺或歪曲, 这种残缺和歪曲在实体模拟加工中是模拟不出来的, 所以这时就一定要注意, 如图6所示对“产生警告”的刀轨使用程序模拟软件就会发现刀轨的错误, 在正常加工过程中会突然出现刀轨脱离实体模具的情况, 如果不及时消除就会出现撞刀情况。
根据经验, 现就出现以上警告的原因分析如下:1) 三维模型出现了片体相交或本不相干的两面强行关联到一起, 电脑计算时无法辨认就出现歪曲刀轨;2) 采用“”命令时将不应该拆分的面拆分了, 造成产品结构不合理;3) 刀具使用不当, 在一个小区域平面内用直径较大的刀加工, 虽然模拟加工能完成, 但实际上生成代码时会出现错误信息。
对以上问题的解决方法如下:1) 重新检查模型, 尤其是光滑过渡的地方, 尽量光滑, 不能产生尖棱或片体。2) 改变“准备几何体”的偏置角度, 避开关键曲面, 当对关键曲面分割时就会破坏原始图形的结构。3) 改变刀具直径重新生成程序, 主要将刀具直径适当调小, 目的是消除大刀具加工小圆弧时走圆弧插补过程中的不合理现象。4) 当查不出问题时, 用程序模拟软件对程序进行反读, 仔细查看每一层的刀轨, 确认无误后方可试切。5) 进行特征操作要生成实体时, 所使用的曲线必须闭合, 不然会生成片体。生成片体或实体时, 如果采用引导线, 引导线必须是光滑圆弧过渡。6) 复杂工件建模时, 先绘制工件的轮廓, 然后一块一块添加工件的各个部位的特征, 这样就能较轻松地建成一个复杂的工件。7) 倒圆角是做三维相对麻烦的事情, 如果有些圆角的确倒不上, 考虑在二维草图里直接将圆角画出来, 再进行特征操作。
参考文献
[1]罗春阳, 李建勇, 李海连.UGNX 4.0基础培训标准教程[M].北京:北京航空航天大学出版社, 2010.
[2]董杰.机械设计工艺性手册[M].上海:上海交通大学出版社, 1991.
[3]王学文, 杨兆建, 王义亮.大型电除尘器钢结构宽大梁有限元分析[J].太原理工大学学报, 2004, 35 (2) :160-163.
[4]李春田.中国标准化基础知识[M].北京:中国标准出版社, 2004, 35 (2) :160-163.
[5]曹岩, 范庆明, 刘红军.UG NX4工程应用教程:基础篇[M].北京:机械工业出版社, 2007.
[6]曹岩, 范庆明, 刘红军.UG NX4工程应用教程:开发篇[M].北京:机械工业出版社, 2007.
[7]曹岩, 范庆明, 刘红军.UG NX4工程应用教程:CAM精通篇[M].北京.机械工业出版社, 2007.
[8]许德珠, 司乃钧.技术工艺学[M].北京:高等教育出版社, 2001.
[9]袁清珂.CAD/CAE/CAM技术[M].北京:电子工业出版社, 2010.
[10]安杰, 邹昱章.UG后处理技术[M].北京:清华大学出版社, 2003.