线切割故障及解决方法扫描常用的基准点的方法有几种

维修线切割机床的几种常用方法-苏州中航长风数控科技有限公司
维修线切割机床的几种常用方法
点击次数:7350 发布时间:
维修线切割机床的几种常用方法1、&化整为零&把原理图中按功能不同,划分为主电路、控制电路。主电路主要包括运丝电机、水泵电机电路。控制电路主要包括触发电路、调整电路、驱动电路、单板机控制电路等。当出现故障时,根据故障现象分析,该故障应属哪一部分,这样逐渐缩小故障范围,能较快地排除故障。&2、&反向分析&当基本上确定某一小范围出现故障时,可采用反向分析法。即假定某处电路不通,或某处电路短路时,会出现何种情况,从理论上模拟故障发生时应表现的状态,从而判断故障的原因。3、&备件替换&由于种种原因,维修人员往往很难得到一份完整的线切割机床电子电路图。当出现较大的故障时,只能分析故障产生的大致原因,维修人员可利用备用的印刷电路板、易损电子元件等进行更换,使设备尽快地投入运转。&4、&电路仿真&当电子电路发生较大故障时,通常的做法是利用示波器检查重要环节的输出信号,如电压与波形,从而判断出该元件是否已损坏。但往往通过简单的测量后,无法判断该输出信号是否正确,那么利用电子电路仿真软件是最好的选择。通过电路仿真,可帮助我们更快地确定电子电路元件是否已损坏。& 根据电火花线切割机的工作原理,分析故障产生的原因,并尽可能找出解决问题的方案。这类方法多种多样。欢迎光临本公司网站:& 本文经-苏州中航长风线切割机床整理发布在公司网站。&
线切割,快走丝线切割,中走丝线切割,电火花线切割,去毛刺,电化学去毛刺,穿孔机,电火花穿孔机,环保线切割,数控穿孔机,数控线切割机,电火花成型机,电脉冲,电解去毛刺,取丝锥,电火花去断丝锥,取断丝锥机,苏州中航长风线切割,砂线切割机,金刚石砂轮成型修整机,轧辊磨床
苏州中航长风数控科技有限公司 版权所有
总访问量:<span style="color:#FF 地址:苏州市相城区黄桥永方路168号 邮编:215132
电话:8 传真:0 手机: 联系人:张振荣 邮箱:
网址: 技术支持:
ICP备案号:
推荐收藏该企业网站您所在位置: &
&nbsp&&nbsp&nbsp&&nbsp
AC章数控电火花线切割机床的程式编制.doc 31页
本文档一共被下载:
次 ,您可全文免费在线阅读后下载本文档。
&#xe600;下载提示
1.本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。
2.该文档所得收入(下载+内容+预览三)归上传者、原创者。
3.登录后可充值,立即自动返金币,充值渠道很便利
需要金币:280 &&
AC章数控电火花线切割机床的程式编制
你可能关注的文档:
··········
··········
第6章数控电火花线切割机床的程序编制  数控电火花线切割机床利用电蚀加工原理,采用金属导线作为工具电极切割工件,以满足加工要求。机床通过数字控制系统的控制,可按加工要求,自动切割任意角度的直线和圆弧。这类机床主要适用于切割淬火钢、硬质合金等金属材料,特别适用于一般金属切削机床难以加工的细缝槽或形状复杂的零件,在模具行业的应用尤为广泛。6.1数控电火花线切割加工工艺数控电火花线切割加工,一般是作为工件尤其是模具加工中的最后工序。要达到加工零件的精度及表面粗糙度要求,应合理控制线切割加工时的各种工艺参数(电参数、切割速度、工件装夹等),同时应安排好零件的工艺路线及线切割加工前的准备加工。有关模具加工的线切割加工工艺准备和工艺过程,如图6.1所示。图6.1线切割加工的工艺准备和工艺过程6.1.1模坯准备1、工件材料及毛坯   模具工作零件一般采用锻造毛坯,其线切割加工常在淬火与回火后进行。由于受材料淬透性的影响,当大面积去除金属和切断加工时,会使材料内部残余应力的相对平衡状态遭到破坏而产生变形,影响加工精度,甚至在切割过程中造成材料突然开裂。为减少这种影响,除在设计时应选用锻造性能好、淬透性好、热处理变形小的合金工具钢(如Cr12、Cr12MoV、CrWMn)作模具材料外,对模具毛坯锻造及热处理工艺也应正确进行。 2、模坯准备工序   模坯的准备工序是指凸模或凹模在线切割加工之前的全部加工工序。 (1)凹模的准备工序 1)下料用锯床切断所需材料。 2)锻造改善内部组织,并锻成所需的形状。 3)退火消除锻造内应力,改善加工性能。 4)刨(铣)刨六面,并留磨削余量0.4~0.6mm。 5)磨磨出上下平面及相邻两侧面,对角尺。 6)划线划出刃口轮廓线和孔(螺孔、销孔、穿丝孔等)的位置。 7)加工型孔部分当凹模较大时,为减少线切割加工量,需将型孔漏料部分铣(车)出,只切割刃口高度;对淬透性差的材料,可将型孔的部分材料去除,留3~5mm切割余量. 8)孔加工加工螺孔、销孔、穿丝孔等。 9)淬火达设计要求。 10)磨磨削上下平面及相邻两侧面,对角尺。 11)退磁处理 (2)凸模的准备工序   凸模的准备工序,可根据凸模的结构特点,参照凹模的准备工序,将其中不需要的工序去掉即可。但,应注意以下几点: 1)为便于加工和装夹,一般都将毛坯锻造成平行六面体。对尺寸、形状相同,断面尺寸较小的凸模,可将几个凸模制成一个毛坯。 2)凸模的切割轮廓线与毛坯侧面之间应留足够的切割余量(一般不小于5mm)。毛坯上还要留出装夹部位。 3)在有些情况下,为防止切割时模坯产生变形,要在模坯上加工出穿丝孔。切割的引入程序从穿丝孔开始。6.1.2工件的装夹与调整1、工件的装夹   装夹工件时,必须保证工件的切割部位位于机床工作台纵向、横向进给的允许范围之内,避免超出极限。同时应考虑切割时电极丝运动空间。夹具应尽可能选择通用(或标准)件,所选夹具应便于装夹,便于协调工件和机床的尺寸关系。在加工大型模具时,要特别注意工件的定位方式,尤其在加工快结束时,工件的变形、重力的作用会使电极丝被夹紧,影响加工。 (1)悬臂式装夹   如图6.2所示是悬臂方式装夹工件,这种方式装夹方便、通用性强。但由于工件一端悬伸,易出现切割表面与工件上、下平面间的垂直度误差。仅用于加工要求不高或悬臂较短的情况。 (2)两端支撑方式装夹   如图6.3所示是两端支撑方式装夹工件,这种方式装夹方便、稳定,定位精度高,但不适于装夹较大的零件。 (3)桥式支撑方式装夹   这种方式是在通用夹具上放置垫铁后再装夹工件,如图6.4所示。这种方式装夹方便,对大、中、小型工件都能采用。图6.2悬臂式装夹图6.3两端支撑方式装夹图6.4桥式去撑方式装夹(4)板式支撑方式装夹   如图6.5所示是板式支撑方式装夹工件。根据常用的工件形状和尺寸,采用有通孔的支撑板装夹工件。这种方式装夹精度高,但通用性差。 2、工件的调整   采用以上方式装夹工件,还必须配合找正法进行调整,方能使工件的定位基准面分别与机床的工作台面和工作台的进给方向x、y保持平行,以保证所切割的表面与基准面之间的相对位置精度。常用的找正方法有: (1)用百分表找正   如图6.6所示,用磁力表架将百分表固定在丝架或其它位置上,百分表的测量头与工件基面接触,往复移动工作台,按百分表指示值调整工件的位置,直至百分表指针的偏摆范围达到所要求的数值。找正应在相互垂直的三个方向上进行。 (2)划线法找正   工件的切割图形与定位基准之间的相互位置精度要求不高时,可采用划线法找正,如图6.7所示。利用固定在丝架上的划针对准工件上划出的基准线,往复移动工作台,目测划针、基准间的偏离情况,将工件调整到正确位置。图6.5板式支撑方式装夹图6.6用百分表找正图6.7划线法找正6
正在加载中,请稍后...线切割机实现切割文字的自动编程技术
线切割机实现切割文字的自动编程技术
发布: | 作者:-- | 来源: -- | 查看:402次 | 用户关注:
1 引言    随着现代计算机和控制技术的发展,人们为线切割机装备了基于PC机且功能愈来愈强大的编程和控制系统,使线切割机的应用技术不断有新的发展。编程控制系统的发展是线切割加工技术发展的一个重要方面。对编程系统来讲,先是通过专用语言对待加工零件进行描述,然后转化为切割指令实现自动编程,后又把CAD技术引入编程中,从而实现了图形式输入方式,大大提高了编程效率和质量;在控制技术上,则从早期的开环控制
1 引言    随着现代计算机和控制技术的发展,人们为线切割机装备了基于PC机且功能愈来愈强大的编程和控制系统,使线切割机的应用技术不断有新的发展。编程控制系统的发展是线切割加工技术发展的一个重要方面。对编程系统来讲,先是通过专用语言对待加工零件进行描述,然后转化为切割指令实现自动编程,后又把CAD技术引入编程中,从而实现了图形式输入方式,大大提高了编程效率和质量;在控制技术上,则从早期的开环控制过渡到了检测多个加工状态参数的自适应控制系统乃至模糊控制系统。    但直到现在,线切割机的应用范围还主要限制在机械零部件及模具的加工上,在线切割机上实现切割汉字可以说是一个空白。针对我国的国情,实现对汉字的切割既有现实的市场需求,又有广阔的应用前景。    在线切割机上进行加工,首先要通过编程系统将待加工零件转化为切割指令。为此要实现切割汉字的功能,也必须将要切割的汉字字形轮廓转化为切割指令。本文将从几个方面具体讲述在Windows操作系统的PC平台上,从TrueType字库中提取汉字字形轮廓,并将其转化为切割指令的自动编程技术。 2 字形轮廓的提取    要实现切割汉字首先要获得汉字字形轮廓,这涉及到如何从字库中提取汉字字形轮廓的问题。汉字的字体根据其实现形式的不同可分为点阵字体、矢量字体及TrueType字体等几种。其中使用最广泛的为TrueType字体,与其他字体相比,TrueType字体具有明显的优点: (1)它使用直线和曲线对字符进行描述,具有放大和缩小不变形的特点; (2)具有处理速度快及与设备无关的特点; (3)它是Windows系统所使用的最广泛的字体,因而Windows提供了大量的API函数来支持和处理这种字体,利用这些函数可方便地对TrueType字符进行各种处理,如旋转、变形等。    在TrueType字体中,字形轮廓是由一些直线和曲线的集合及一些对字体的描述信息所组成,这些直线和曲线定义了TrueType字体及符号的外形轮廓,而那些字体的描述信息则用来控制和调整直线的长度和曲线的形状,主要用来调整字形轮廓尺寸,使用这些描述信息可对TrueType字体或符号在保持其原始形状的情况下进行放大、缩小等处理。    Windows提供了许多函数来处理TrueType字体,其中与提取字形轮廓有关的最主要的函数为GetGlyphOutline,它可用来提取被选择到指令设备环境(如内存、显示设备等)的字符的轮廓或位图。在Windows API中,GetGlyphOutline函数声明如下: DWORD GetGlyphOutiline( HDC hdc,∥设备环境的句柄 UINT uChar,∥所要查询的字符 UINT uFormat,∥所要返回的数据类型 LPGLYPHMETRICS lpgm,∥指向字符规格结构的地址 DWORD cbBuffer,∥数据缓冲区的大小 LPVOLD lpvBuffer,∥数据缓冲区的地址 CONST MAT2*lpmat2,∥变换矩阵结构的地址); 其中的主要参数说明如下: uChar:指定所要查询的字符,对汉字来说是指汉字的编码,如:GB-2312和Unicode等编码。 uFormat:指定函数所要提取的数据的格式,可取下面一些值:GGO_ITMAP、GGO_NATIVE、GGO_METRICS、GGO_GRAY2_BITMAP、GGO_GRAY4_BITMAP、GGO_GRAY8_BITMAP。    对于提取字符的字形轮廓来说,由于只需得到字形轮廓的二值图象,不用得到灰度图象,因此uFormat参数可取两个值:GGO_BITMAP、GGO_NATIVE。如取GGO_BITMAP,函数将返回字符的字形轮廓位图;取GGO_NATIVE,函数将返回用来描述字符外形轮廓的曲线的点的数据,使用的单位是字体设计的单位,如uFormat参数取值为GGO_NATIVE,则任何lpmat2参数指定的变换矩阵将被忽略。由于可能需对提取出的字形轮廓作一定的变换处理(如:放大、缩小、旋转及改变纵、横比等),将参数uFormat的值设置为GGO_NATIVE。    调用GetGlyphOutline,函数将返回一系列的折线和样条曲线,返回的折线和曲线的信息存储在一个 TTPOLYGONHEADER结构及紧随其后的多个TTPOLYCURVE结构中,这些信息主要为描述折线和曲线所需的点的坐标,要描述字形轮廓须使用这些信息。上述两个结构中所有的点都以POINTFX结构形式返回,这些点描述的是绝对位置而不是相对位置。要描绘一个TrueType字符的字形轮廓,须同时使用折线和曲线。TTPOLYGONHEADER结构中的pfxStart成员返回字形的封闭轮廓的起始点,也是封闭轮廓的终止点。 下面对其中几个重要的数据结构作简要的说明。    其中,TTPOLYGONHEADER结构指定一个TrueType字符的字形轮廓的起始点及该轮廓的类型(直线或曲线)。其定义为: typedef struct_TTPOLYGONHEADER{//ttph DWORD DWORD dwType; POINTFX PfxS }TTPOLYGONHEADER,FAR.LPTTPOLYGONHEADER;    其中成员cb指定描述字形轮廓的TTPOLYGONHEADER结构和TTPOLYCURVE结构所需的字节数;dwType字符的轮廓类型;pfxStart指定轮廓的起始点。 TTPOLYCURVE结构中包含了TrueType字符中有关字形轮廓曲线的信息。其定义为: typedef struct tagTTPOLYCURVE { // ttpc WORD WT WORD C POINTFX apfx [1]; } TTPOLYCURVE,FAR*LPTTPOLYCURVE;    其中成员wType指定TTPOLYCURVE结构所描述的曲线类型,可有两个取值;TT_PRIM_LINE和TT_PRIM_OSPLINE,分别代表曲线是折线和B样条曲线;cpfx指定数组中POINTFX结构的数目;apfx指定一个确定折线或者B样条曲线的POINTFX结构类型的数组。 POINTFX结构中包含用来描述TrueType字符字形轮廓的点的坐标,其定义为: typedef struct tagPOINTFX { // ptfx FIXED X; FIXED Y; } POINTFX, 其中X和Y分别代表点的横、纵坐标。    在调用GetGlyphOutline函数得到描述字形轮廓的数据后,要将其描绘出来还需调用绘制直线和曲线的函数。一个TrueType字符由折线和二次样条曲线描绘而成,调用GetGlyphOutline函数返回了描绘这些折线和曲线所需的点的有关信息,这些信息存储在TTPOLYGONHEADER和TTPOLYCURVE结构中,根据其中的成员wType所指定的不同值,来调用Windows API所提供的相关绘制折线和样条曲线的函数,即可绘制出字符的字形轮廓。在绘制时还可根据需要对字形轮廓进行各种处理,如放大、缩小、旋转及改变字符的纵横比等。图1显示了采用以上方法提取的“电”字的字形轮廓。
图1 “电”字的字形轮廓
    还有一个需解决的问题是如何获得汉字编码的问题。通常汉字是以字符串的形式输入计算机的,要调用GetGlyphOutline函数得到某一汉字的字形轮廓,还须得到该汉字的编码(一般指GB-2312编码,在Windows NT和Windows 2000下可使用Unicode编码),用来指定GetGlyphOutline函数中的uChar参数,这就需进行由字符串到汉字编码的转换。下面给出了用Delphi实现的由汉字字符串到汉字的GB-2312编码的转换函数,该函数的输入参数为字符串的形式的单个汉字,返回值为输入参数汉字的GB-2312编码。 function CodeConvert(s:string): begin result:=ord(WORD(s[1]shl 8)+WORD(s[2]));
3 字形轮廓二值图象的转化及其编辑处理    由于受线切割机所能切割图形形状的限制,即在不重新穿丝的情况下,只能切割一笔画成的图形;加上汉字数量众多,字形千变万化,且大多数汉字都不能一笔写成,因此将汉字的字形轮廓提取出来后并不能直接用于切割,还需对其进行一定的编辑处理,使其符合线切割加工的需要,即把它变成能一笔写成的切割轨迹。且实际应用中,多数情况下可能不是切割单个汉字而需一次切割多个汉字,这也要进行编辑处理。而要进行编辑处理,首先要将图形转化为图象。还是以“电”字为例,在未经编辑处理时,在线切割机上只能切割出如图2所示的不完整字形,在经过适当的编辑处理后,线切割机就可加工出如图3所示的完整汉字的字形了。
图2 未经编辑处理时线切割机所能加工的“电”字字形轮廓
图3 编辑处理后线切割机所能加工的“电”字字形轮廓
   因为我们只需标识字形的边界轮廓,因此将其转化为二值图象即可。将字形轮廓转化为二值图象,也就是将其转化为一个用矩阵表示的象素点图象,矩阵中的每一位都是二进制数,当该位为1时表示字符的笔划经过此位,该位为0时表示字符的笔划不经过此位。因为只要分辨出某点为0还是1,因此每个点只要用一位二进制数表示即可,这样1个字节就可以表示8个象素点,但为方便叙述本文采用以1个字节表示1个点来进行说明。    要将字形轮廓转化为二值图象,首先根据需要(如字体、尺寸大小、纵横比、是否旋转、变形等)在屏幕上绘制出所要切割字符的字形轮廓;然后对图形进行扫描,将有笔划通过的点(对应于与字符颜色相同象素的位)的值置为1,而其它的点则置为0,扫描完毕后便将字形轮廓转化为二值图象了。     生成二值图象后还需对图象进行适当的修改,以满足线切割加工的需要。对图象进行编辑处理,可用一个小方块代替一个放大了的象素,通过建立网格编辑区,每一网格小方块都是一个放大了的象素,这样可对每个象素进行编辑处理,控制鼠标在相应的网格眼内填入字符或背景颜色,同时填入字符颜色所对应的位置为1,填入背景颜色所对应的位置为0。 4 切割指令的生成    将汉字的字形轮廓转化为二值图象且编辑处理后,为生成切割指令须用直线或圆弧对其进行描述,由于汉字字形较适合用直线来对其进行描述,因此采用直线段来实现对汉字字形的描述。    由于线切割机所能切割的图形具有一定的特殊性(即需能以一笔画完),因此只需采用某种算法对图进行一次遍历便可得到加工轨迹。    要对图象进行遍历,首先需确定搜索策略。由于能被切割的图形具有特殊性,采用改进了的深度优先搜索方法来对图象进行遍历。主要思想为:先确定图象的起始点,然后沿逆时针方向在该点周围寻找下一点,找到后沿着这两点确定的方向继续搜索,直至将该方向上的点搜索完毕,然后回溯,以回溯得到的点为基础重复以上搜索,直至所有点都被搜索过,在搜索过程中将经过的点的值从1置为0,同时记录所经过的直线。 下面介绍一下所要用到的主要数据结构。 记录直线所用结构为TLineRecord,它用来记录每段直线的起点和终点坐标,其定义如下: TLineRecord=record StartPoint, EndPoint: TP //直线起始点,终止点
PLineRecord=^TLineRecord; 其中StartPoint, EndPoint分别为直线的起点和终点。    图象采用二维数组进行表示,首先按照行、列从小到大的顺序找到图象的起始点,然后再采用逆时针方向来搜索下一点。搜索方向的定义为: SearchDirection:array[0..7,0..1] of interger=((1,0),(1,-1),(0,-1),(-1,-1),(-1,0),(-1,1),(0,1),(1,1)); 遍历算法如下: (1)扫描图象寻找起始点,将其坐标记为(k,1);用FirstPointX、FirstPointY记录第一点横、纵坐标的值; (2)初始化记录直线的指针,建立记录直线的链表;将起始点的k,1值作为直线起点和终点的横、纵坐标,将该直线加入到直线纪录的链表中去; (3)以第一点为基准点沿逆时针方向寻找下一点,如果搜索到值为1的点则记搜索方向为i,该点的横、纵坐标记为(k,1),将记录直线的终点横、纵坐标设置为k,1; (4)置是否搜索完毕标志SearchCompleted为F (5)如果SearchCompleted不为True则重复作6-13步; (6)置SearchCompleted为True; (7)置是否同一条线标志SameLine为True; (8)如果SameLine为True则重复作9-12步; (9)置SameLine为False; (10)沿i方向进行搜索,即k:=k+SearchDirection [i][0];1:=1+SearchDirection [i][1]; (11)如果点(k,1)为1,则置SameLine为True;将直线的终点坐标设置为(k,1);将点(k,1)的值设置为0; (12)如果点(k,1)为0,则置SameLine为False; (13)以点(k,1)为基准点沿逆时针方向寻找下一点,如果搜索到值为1的点,则记搜索方向为i;在直线记录列表中增加一条新的直线,k,1值作为直线起点的横、纵坐标;将搜索到的点的横、纵坐标记为(k,1),将直线终点的横、纵坐标设置为(k,1);置Searhcompleted为False,置SameLine为True;将点(k,1)的值设置为0; (14)进行图形封闭化处理,在直线记录列表中增加一条直线,将k,1值作为直线起点的横、纵坐标,FirstPointX、FirstPointY作为直线终点的横、纵坐标值。    这样当遍历完成后,遍历的轨迹就保存在直线记录列表中了,也就是说已实现将汉字的字形轮廓用直线段进行描述了。需指出的是,由于汉字字形本身或者编辑处理的原因,在进行图象遍历的过程中,可能存在一些不和谐的点,使遍历不能完成(如存在断点、尖点及多余点的情况),需在遍历之前运用图象处理的技术将这些点补足或者剔除掉,以使遍历能顺利完成,有关这方面的算法不再赘述。    至此要实现切割汉字就只剩下如何生成切割指令的问题了。由于已将汉字的字形轮廓用直线进行描述,且这些直线还首尾相接组成一个封闭轮廓,要生成线切割机的切割指令,只需按切割指令的要求将这些直线进行转换即可。 5 结束语    本文介绍了从汉字字库中提取字形轮廓,在进行编辑处理后将其转化为切割指令,从而在线切割机上实现切割汉字的自动编程技术。它可使线切割机简单方便地实现汉字的切割,还可对要切割的汉字进行各种处理。实践证明,采用这种方法能很好地满足需要,并且取得较好的效果。
本页面信息由华强电子网用户提供,如果涉嫌侵权,请与我们客服联系,我们核实后将及时处理。
应用与方案分类
iPhone8 CAD设计图流出:全面屏+垂直双摄像头。数控电火花切割机床 线切割加工的电极丝的选择和调整
您现在的位置:
线切割加工的电极丝的选择和调整
1、电极丝的选择
  电极丝应具有良好的导电性和抗电蚀性,抗拉强度高、材质均匀。常用电极丝有钼丝、钨丝、黄铜丝和包芯丝等。钨丝抗拉强度高,直径在(0.03~0.1mm)范围内,一般用于各种窄缝的精加工,但价格昂贵。黄铜丝适合于慢速加工,加工表面粗糙度和平直度较好,蚀屑附着少,但抗拉强度差,损耗大,直径在0.1~0.3mm范围内,一般用于慢速单向走丝加工。钼丝抗拉强度高,适于快速走丝加工,所以我国快速走丝机床大都选用钼丝作电极丝,直径在0.08~0.2mm范围内。
  电极丝直径的选择应根据切缝宽窄、工件厚度和拐角尺寸大小来选择。若加工带尖角、窄缝的小型模具宜选用较细的电极丝;若加工大厚度工件或大电流切割时应选较粗的电极丝。电极丝的主要类型、规格如下:
钼丝直径:0.08~0.2mm
钨丝直径:
0.03~0.1mm
黄铜丝直径:0.1~0.3mm
包芯丝直径:0.1~0.3mm
2、穿丝孔和电极丝切入位置的选择
  穿丝孔是电极丝相对工件运动的起点,同时也是程序执行的起点,一般选在工件上的基准点处。为缩短开始切割时的切入长度,穿丝孔也可选在距离型孔边缘2~5mm处,如图6.8a所示。加工凸模时,为减小变形,电极丝切割时的运动轨迹与边缘的距离应大于5mm,如图6.8b所示。线切割机上实现切割汉字的自动编程技术
您现在的位置:
线切割机上实现切割汉字的自动编程技术
要:介绍了在线切割机上实现切割汉字的自动编程技术,将从字库中提取的字形轮廓经适当编辑处理后生成切割指令,可使线切割机增加切割汉字的功能。
关键词:字形轮廓
TrueType 二值图象
随着现代计算机和控制技术的发展,人们为线切割机装备了基于PC机且功能愈来愈强大的编程和控制系统,使线切割机的应用技术不断有新的发展。编程控制系统的发展是线切割加工技术发展的一个重要方面。对编程系统来讲,先是通过专用语言对待加工零件进行描述,然后转化为切割指令实现自动编程,后又把CAD技术引入编程中,从而实现了图形式输入方式,大大提高了编程效率和质量;在控制技术上,则从早期的开环控制过渡到了检测多个加工状态参数的自适应控制系统乃至模糊控制系统。
但直到现在,线切割机的应用范围还主要限制在机械零部件及模具的加工上,在线切割机上实现切割汉字可以说是一个空白。针对我国的国情,实现对汉字的切割既有现实的市场需求,又有广阔的应用前景。
在线切割机上进行加工,首先要通过编程系统将待加工零件转化为切割指令。为此要实现切割汉字的功能,也必须将要切割的汉字字形轮廓转化为切割指令。本文将从几个方面具体讲述在Windows操作系统的PC平台上,从TrueType字库中提取汉字字形轮廓,并将其转化为切割指令的自动编程技术。
字形轮廓的提取
要实现切割汉字首先要获得汉字字形轮廓,这涉及到如何从字库中提取汉字字形轮廓的问题。汉字的字体根据其实现形式的不同可分为点阵字体、矢量字体及TrueType字体等几种。其中使用最广泛的为TrueType字体,与其他字体相比,TrueType字体具有明显的优点:
(1)它使用直线和曲线对字符进行描述,具有放大和缩小不变形的特点;
(2)具有处理速度快及与设备无关的特点;
(3)它是Windows系统所使用的最广泛的字体,因而Windows提供了大量的API函数来支持和处理这种字体,利用这些函数可方便地对TrueType字符进行各种处理,如旋转、变形等。
在TrueType字体中,字形轮廓是由一些直线和曲线的集合及一些对字体的描述信息所组成,这些直线和曲线定义了TrueType字体及符号的外形轮廓,而那些字体的描述信息则用来控制和调整直线的长度和曲线的形状,主要用来调整字形轮廓尺寸,使用这些描述信息可对TrueType字体或符号在保持其原始形状的情况下进行放大、缩小等处理。
Windows提供了许多函数来处理TrueType字体,其中与提取字形轮廓有关的最主要的函数为GetGlyphOutline,它可用来提取被选择到指令设备环境(如内存、显示设备等)的字符的轮廓或位图。在Windows
API中,GetGlyphOutline函数声明如下:
DWORD GetGlyphOutiline(
HDC hdc,∥设备环境的句柄
UINT uChar,∥所要查询的字符
UINT uFormat,∥所要返回的数据类型
LPGLYPHMETRICS lpgm,∥指向字符规格结构的地址
DWORD cbBuffer,∥数据缓冲区的大小
LPVOLD lpvBuffer,∥数据缓冲区的地址
CONST MAT2*lpmat2,∥变换矩阵结构的地址);
其中的主要参数说明如下:
uChar:指定所要查询的字符,对汉字来说是指汉字的编码,如:GB-2312和Unicode等编码。
uFormat:指定函数所要提取的数据的格式,可取下面一些值:GGO_ITMAP、GGO_NATIVE、GGO_METRICS、GGO_GRAY2_BITMAP、GGO_GRAY4_BITMAP、GGO_GRAY8_BITMAP。
对于提取字符的字形轮廓来说,由于只需得到字形轮廓的二值图象,不用得到灰度图象,因此uFormat参数可取两个值:GGO_BITMAP、GGO_NATIVE。如取GGO_BITMAP,函数将返回字符的字形轮廓位图;取GGO_NATIVE,函数将返回用来描述字符外形轮廓的曲线的点的数据,使用的单位是字体设计的单位,如uFormat参数取值为GGO_NATIVE,则任何lpmat2参数指定的变换矩阵将被忽略。由于可能需对提取出的字形轮廓作一定的变换处理(如:放大、缩小、旋转及改变纵、横比等),将参数uFormat的值设置为GGO_NATIVE。
调用GetGlyphOutline,函数将返回一系列的折线和样条曲线,返回的折线和曲线的信息存储在一个
TTPOLYGONHEADER结构及紧随其后的多个TTPOLYCURVE结构中,这些信息主要为描述折线和曲线所需的点的坐标,要描述字形轮廓须使用这些信息。上述两个结构中所有的点都以POINTFX结构形式返回,这些点描述的是绝对位置而不是相对位置。要描绘一个TrueType字符的字形轮廓,须同时使用折线和曲线。TTPOLYGONHEADER结构中的pfxStart成员返回字形的封闭轮廓的起始点,也是封闭轮廓的终止点。
下面对其中几个重要的数据结构作简要的说明。
其中,TTPOLYGONHEADER结构指定一个TrueType字符的字形轮廓的起始点及该轮廓的类型(直线或曲线)。其定义为:
struct_TTPOLYGONHEADER{//ttph
DWORD dwType;
POINTFX PfxS
}TTPOLYGONHEADER,FAR.LPTTPOLYGONHEADER;
其中成员cb指定描述字形轮廓的TTPOLYGONHEADER结构和TTPOLYCURVE结构所需的字节数;dwType字符的轮廓类型;pfxStart指定轮廓的起始点。
TTPOLYCURVE结构中包含了TrueType字符中有关字形轮廓曲线的信息。其定义为:
typedef struct tagTTPOLYCURVE
POINTFX apfx [1];
} TTPOLYCURVE,FAR*LPTTPOLYCURVE;
其中成员wType指定TTPOLYCURVE结构所描述的曲线类型,可有两个取值;TT_PRIM_LINE和TT_PRIM_OSPLINE,分别代表曲线是折线和B样条曲线;cpfx指定数组中POINTFX结构的数目;apfx指定一个确定折线或者B样条曲线的POINTFX结构类型的数组。
POINTFX结构中包含用来描述TrueType字符字形轮廓的点的坐标,其定义为:
typedef struct tagPOINTFX {
} POINTFX,
其中X和Y分别代表点的横、纵坐标。
在调用GetGlyphOutline函数得到描述字形轮廓的数据后,要将其描绘出来还需调用绘制直线和曲线的函数。一个TrueType字符由折线和二次样条曲线描绘而成,调用GetGlyphOutline函数返回了描绘这些折线和曲线所需的点的有关信息,这些信息存储在TTPOLYGONHEADER和TTPOLYCURVE结构中,根据其中的成员wType所指定的不同值,来调用Windows
API所提供的相关绘制折线和样条曲线的函数,即可绘制出字符的字形轮廓。在绘制时还可根据需要对字形轮廓进行各种处理,如放大、缩小、旋转及改变字符的纵横比等。图1显示了采用以上方法提取的“电”字的字形轮廓。
“电”字的字形轮廓
还有一个需解决的问题是如何获得汉字编码的问题。通常汉字是以字符串的形式输入计算机的,要调用GetGlyphOutline函数得到某一汉字的字形轮廓,还须得到该汉字的编码(一般指GB-2312编码,在Windows
NT和Windows
2000下可使用Unicode编码),用来指定GetGlyphOutline函数中的uChar参数,这就需进行由字符串到汉字编码的转换。下面给出了用Delphi实现的由汉字字符串到汉字的GB-2312编码的转换函数,该函数的输入参数为字符串的形式的单个汉字,返回值为输入参数汉字的GB-2312编码。
CodeConvert(s:string):
result:=ord(WORD(s[1]shl
8)+WORD(s[2]));
字形轮廓二值图象的转化及其编辑处理
由于受线切割机所能切割图形形状的限制,即在不重新穿丝的情况下,只能切割一笔画成的图形;加上汉字数量众多,字形千变万化,且大多数汉字都不能一笔写成,因此将汉字的字形轮廓提取出来后并不能直接用于切割,还需对其进行一定的编辑处理,使其符合线切割加工的需要,即把它变成能一笔写成的切割轨迹。且实际应用中,多数情况下可能不是切割单个汉字而需一次切割多个汉字,这也要进行编辑处理。而要进行编辑处理,首先要将图形转化为图象。还是以“电”字为例,在未经编辑处理时,在线切割机上只能切割出如图2所示的不完整字形,在经过适当的编辑处理后,线切割机就可加工出如图3所示的完整汉字的字形了。
未经编辑处理时线切割机所能加工的“电”字字形轮廓
编辑处理后线切割机所能加工的“电”字字形轮廓
因为我们只需标识字形的边界轮廓,因此将其转化为二值图象即可。将字形轮廓转化为二值图象,也就是将其转化为一个用矩阵表示的象素点图象,矩阵中的每一位都是二进制数,当该位为1时表示字符的笔划经过此位,该位为0时表示字符的笔划不经过此位。因为只要分辨出某点为0还是1,因此每个点只要用一位二进制数表示即可,这样1个字节就可以表示8个象素点,但为方便叙述本文采用以1个字节表示1个点来进行说明。
要将字形轮廓转化为二值图象,首先根据需要(如字体、尺寸大小、纵横比、是否旋转、变形等)在屏幕上绘制出所要切割字符的字形轮廓;然后对图形进行扫描,将有笔划通过的点(对应于与字符颜色相同象素的位)的值置为1,而其它的点则置为0,扫描完毕后便将字形轮廓转化为二值图象了。
生成二值图象后还需对图象进行适当的修改,以满足线切割加工的需要。对图象进行编辑处理,可用一个小方块代替一个放大了的象素,通过建立网格编辑区,每一网格小方块都是一个放大了的象素,这样可对每个象素进行编辑处理,控制鼠标在相应的网格眼内填入字符或背景颜色,同时填入字符颜色所对应的位置为1,填入背景颜色所对应的位置为0。
切割指令的生成
将汉字的字形轮廓转化为二值图象且编辑处理后,为生成切割指令须用直线或圆弧对其进行描述,由于汉字字形较适合用直线来对其进行描述,因此采用直线段来实现对汉字字形的描述。
由于线切割机所能切割的图形具有一定的特殊性(即需能以一笔画完),因此只需采用某种算法对图进行一次遍历便可得到加工轨迹。
要对图象进行遍历,首先需确定搜索策略。由于能被切割的图形具有特殊性,采用改进了的深度优先搜索方法来对图象进行遍历。主要思想为:先确定图象的起始点,然后沿逆时针方向在该点周围寻找下一点,找到后沿着这两点确定的方向继续搜索,直至将该方向上的点搜索完毕,然后回溯,以回溯得到的点为基础重复以上搜索,直至所有点都被搜索过,在搜索过程中将经过的点的值从1置为0,同时记录所经过的直线。
下面介绍一下所要用到的主要数据结构。
记录直线所用结构为TLineRecord,它用来记录每段直线的起点和终点坐标,其定义如下:
TLineRecord=record
StartPoint, EndPoint: TP //直线起始点,终止点
PLineRecord=^TLineRecord;
其中StartPoint,
EndPoint分别为直线的起点和终点。
图象采用二维数组进行表示,首先按照行、列从小到大的顺序找到图象的起始点,然后再采用逆时针方向来搜索下一点。搜索方向的定义为:
SearchDirection:array[0..7,0..1]
of interger=((1,0),(1,-1),(0,-1),(-1,-1),(-1,0),(-1,1),(0,1),(1,1));
遍历算法如下:
(1)扫描图象寻找起始点,将其坐标记为(k,1);用FirstPointX、FirstPointY记录第一点横、纵坐标的值;
(2)初始化记录直线的指针,建立记录直线的链表;将起始点的k,1值作为直线起点和终点的横、纵坐标,将该直线加入到直线纪录的链表中去;
(3)以第一点为基准点沿逆时针方向寻找下一点,如果搜索到值为1的点则记搜索方向为i,该点的横、纵坐标记为(k,1),将记录直线的终点横、纵坐标设置为k,1;
(4)置是否搜索完毕标志SearchCompleted为F
(5)如果SearchCompleted不为True则重复作6-13步;
(6)置SearchCompleted为True;
(7)置是否同一条线标志SameLine为True;
(8)如果SameLine为True则重复作9-12步;
(9)置SameLine为False;
(10)沿i方向进行搜索,即k:=k+SearchDirection
[i][0];1:=1+SearchDirection
[i][1];
(11)如果点(k,1)为1,则置SameLine为True;将直线的终点坐标设置为(k,1);将点(k,1)的值设置为0;
(12)如果点(k,1)为0,则置SameLine为False;
(13)以点(k,1)为基准点沿逆时针方向寻找下一点,如果搜索到值为1的点,则记搜索方向为i;在直线记录列表中增加一条新的直线,k,1值作为直线起点的横、纵坐标;将搜索到的点的横、纵坐标记为(k,1),将直线终点的横、纵坐标设置为(k,1);置Searhcompleted为False,置SameLine为True;将点(k,1)的值设置为0;
(14)进行图形封闭化处理,在直线记录列表中增加一条直线,将k,1值作为直线起点的横、纵坐标,FirstPointX、FirstPointY作为直线终点的横、纵坐标值。
这样当遍历完成后,遍历的轨迹就保存在直线记录列表中了,也就是说已实现将汉字的字形轮廓用直线段进行描述了。需指出的是,由于汉字字形本身或者编辑处理的原因,在进行图象遍历的过程中,可能存在一些不和谐的点,使遍历不能完成(如存在断点、尖点及多余点的情况),需在遍历之前运用图象处理的技术将这些点补足或者剔除掉,以使遍历能顺利完成,有关这方面的算法不再赘述。
至此要实现切割汉字就只剩下如何生成切割指令的问题了。由于已将汉字的字形轮廓用直线进行描述,且这些直线还首尾相接组成一个封闭轮廓,要生成线切割机的切割指令,只需按切割指令的要求将这些直线进行转换即可。
本文介绍了从汉字字库中提取字形轮廓,在进行编辑处理后将其转化为切割指令,从而在线切割机上实现切割汉字的自动编程技术。它可使线切割机简单方便地实现汉字的切割,还可对要切割的汉字进行各种处理。实践证明,采用这种方法能很好地满足需要,并且取得较好的效果。

我要回帖

更多关于 线切割割锥度方法 的文章

 

随机推荐