- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
线切割机上实现切割汉字的自动编程技术
1 引言
随着现代计算机和控制技术的发展,人们为线切割机装备了基于PC机且功能愈来愈强大的编程和控制系统,使线切割机的应用技术不断有新的发展。编程控制系统的发展是线切割加工技术发展的一个重要方面。对编程系统来讲,先是通过专用语言对待加工零件进行描述,然后转化为切割指令实现自动编程,后又把CAD技术引入编程中,从而实现了图形式输入方式,大大提高了编程效率和质量;在控制技术上,则从早期的开环控制过渡到了检测多个加工状态参数的自适应控制系统乃至模糊控制系统。
但直到现在,线切割机的应用范围还主要限制在机械零部件及模具的加工上,在线切割机上实现切割汉字可以说是一个空白。针对我国的国情,实现对汉字的切割既有现实的市场需求,又有广阔的应用前景。
在线切割机上进行加工,首先要通过编程系统将待加工零件转化为切割指令。为此要实现切割汉字的功能,也必须将要切割的汉字字形轮廓转化为切割指令。本文将从几个方面具体讲述在Windows操作系统的PC平台上,从TrueType字库中提取汉字字形轮廓,并将其转化为切割指令的自动编程技术。
2 字形轮廓的提取
要实现切割汉字首先要获得汉字字形轮廓,这涉及到如何从字库中提取汉字字形轮廓的问题。汉字的字体根据其实现形式的不同可分为点阵字体、矢量字体及 TrueType字体等几种。其中使用最广泛的为TrueType字体,与其他字体相比,TrueType字体具有明显的优点:
(1)它使用直线和曲线对字符进行描述,具有放大和缩小不变形的特点;
(2)具有处理速度快及与设备无关的特点;
(3)它是Windows系统所使用的最广泛的字体,因而Windows提供了大量的API函数来支持和处理这种字体,利用这些函数可方便地对TrueType字符进行各种处理,如旋转、变形等。
在TrueType字体中,字形轮廓是由一些直线和曲线的集合及一些对字体的描述信息所组成,这些直线和曲线定义了TrueType字体及符号的外形轮廓,而那些字体的描述信息则用来控制和调整直线的长度和曲线的形状,主要用来调整字形轮廓尺寸,使用这些描述信息可对TrueType字体或符号在保持其原始形状的情况下进行放大、缩小等处理。
Windows提供了许多函数来处理TrueType字体,其中与提取字形轮廓有关的最主要的函数为GetGlyphOutline,它可用来提取被选择到指令设备环境(如内存、显示设备等)的字符的轮廓或位图。在WindowsAPI 中,GetGlyphOutline函数声明如下:
DWORDGetGlyphOutiline(
HDChdc,∥设备环境的句柄
UINTuChar,∥所要查询的字符
UINTuFormat,∥所要返回的数据类型
LPGLYPHMETRICSlpgm,∥指向字符规格结构的地址
DWORDcbBuffer,∥数据缓冲区的大小
LPVOLDlpvBuffer,∥数据缓冲区的地址
CONSTMAT2*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成员返回字形的封闭轮廓的起始点,也是封闭轮廓的终止点。
下面对其中几个重要的数据结构作简要的说明。
原创力文档


文档评论(0)