商来宝
  • 供应
  • 求购
  • 企业
  • 展会
  • 资讯

微信公众号

商来宝微信公众号
当前位置: 首页 » 行业资讯 » 综合资讯 »基于Windows矢量字库的切割系统的研究与开发

基于Windows矢量字库的切割系统的研究与开发

放大字体  缩小字体 发布日期:2022-04-02 18:46:06 来源: 作者:用户57504    浏览次数:9    
摘要

轮廓的数控切割代码的自动生成。提到的方法已经编程实现,并且应用效果良好。 述格式,代表了字形处理的*新技术,不但字的大小可任意改变,而且字体多种多样,添加新的字库也比较容易,完全可以满足市场上的各种需求。基于以上原因本文介绍一种在Windows下基于字库TrueType(TTF)的汉字切割自动编程方法。 1字体的建立与矢量轮廓的提取1.1字体的设置与选择bookmark2软件的方便性在于有一个很好...

轮廓的数控切割代码的自动生成。提到的方法已经编程实现,并且应用效果良好。

述格式,代表了字形处理的*新技术,不但字的大小可任意改变,而且字体多种多样,添加新的字库也比较容易,完全可以满足市场上的各种需求。基于以上原因本文介绍一种在Windows下基于字库TrueType(TTF)的汉字切割自动编程方法。

1字体的建立与矢量轮廓的提取1.1字体的设置与选择bookmark2软件的方便性在于有一个很好的人机交互机制。为了方便对加工字符进行精确的控制,提供一个详细的字体设置界面,进行字体字形的选择,字体的尺寸大小、粗细、排版格式等设置,使其满足实际切割的要求。并可以方便地应用通用输入法录入要切割的字符。在实际编程中,文字的录入可以通过MFC控件EDIT方便地进行。而设置项中矢量字形的枚举利用函数://字体信息//字体高度//字体宽度//字符串的底线相对于水平线的角度//字符串的基线相对页底部的角度//字体所需的深浅度//是否倾斜//是否有下划线〃是否加中划线//要求的字符集//剪切精度//输出精度//输出质量//字体间隙与字体系列//字体的字形名)调用成功返回值标识为一个逻辑字体。然后把建立的逻辑字体选入绘图设备,使在提取具体的字符信息时,都用这一逻辑字体建立、相应的的字符对象。

目前,汉字切割在市场上的应用需求越来越广泛,如机械行业、广告业、装饰业等。对切割的字体、版式等的要求也是越来越高。而国内众多数控切割机床,虽然性能优异,但由于缺乏方便、实用的编程手段而对汉字切割无从下手。很多通用的编程软件也均未提供处理汉字的功能,即使提供了也是有很多的限制,如*CAXA线切割“编程软件所提供的字体就很有限。因而,急需一种能提供方便、通用的汉字切割编程软件。而Windows系统使用*广泛的TrueType字体(TTF),是Apple公司和Mcrosoft公司合作开发的页面描述语言Truelmage中的字形描该函数可以列举出Windows系统下的所有矢量字体,从而可以进行很方便、直观地选择。

1.2建立字体通过交互方式设置字体的属性后,根据设置的参数进行逻辑字体的建立。逻辑字体的建立是字符轮廓提取的前提。字体的建立用函数:19INTFap|包含曲a!中的数Publishing次依6据据4tzS|e义可以得到以P0yP2为控制1.3提取字模轮廓信息TTF矢量字体有两种存储的格式:其一是笔划轮廓,其二是整体外形轮廓。构成一个轮廓上的各点,按照一定的顺序存储。点的存储顺序决定了该轮廓的“旋向”,即轮廓是顺时针走向还是逆时针走向。对于整体外形轮廓字模数据,在TTF中规定,如果一个轮廓为外轮廓,则其旋向必为顺时针走向,如果是内轮廓,则必为逆时针走向。对于笔划轮廓来说,只有外轮廓,没有内轮廓,所有笔划轮廓均为顺时针走向。在实际切割中,用到的都是字符的整体外形轮廓。TTF字库中所有字符的坐标系统为右手直角笛卡儿坐标系。它采用直线和Bezier样条曲线来描述字体的轮廓。TTF矢量文件的存储坐标点的数据类型为FIXED.如果直接通过字库文件进行字体信息的提取,将是一个很繁重的工作,而TrueType字体是Windows系统使用*广泛的字体,因而Windows提供了大量的API函数,其中与提取字形轮廓有关的*主要的函数为GetGlyphOutline,它可用来提取被选择到指令设备环境字符的轮廓。

hdc //设备上下文的句柄uChar //指定需要返回数据的字符uFormat〃指定返回数据的格式GLYPHMETRICS结构的指针。这个结构用来描述返回字符在其显示格中的位置(用字节表示)。函数将把字符轮廓线的信息复制到*1pvBuffer中。如果这个值为0,函数返回缓冲区所需要的大小的值lpvBuffer //指向接收字符轮廓信息的缓冲区的指针。如果该值为0,函数返回缓冲区所需要的大小的值GetGlyphOutline可以提取逻辑字符的点阵信息和轮廓信息等,提取数据信息的类型由参数uFormat决定,当其值为GGONATIVE时提取的是字符的整体外形轮廓信息,并且用这一格式返回的数据格式易于编辑修改。返回的信息有以下规则:(1)缓存区的数据是顺序存储的;(2)缓冲区由若干个轮廓线(contour)组成;(3)每个轮廓线的起始处都有一个头结构,头结构中记录了该轮廓线在内存中占的地址大小;(4)每个轮廓线,除了头结构之外,还可以分成若干条曲线;(5)曲线由若干个点组成;(6)每根曲线的起始处也有一个头结构,头结构中记录了该曲线中点的个数;(7)曲线分为两种:直线和Bezier曲线。其中轮廓线的头结构和曲线段的头结构定义如下:typedefstructtagTTPOLYGonHEADER cb;//轮廓线的大小(字节)cpfX;〃曲线中点的个数在进行数据提取时,首先建立变换矩阵;然后调用GetGlyphOutline函数查询轮廓线信息所返回的缓冲区的大小;依据返回值分配缓冲区;再次调用函数GetGlyphOutline将轮廓线信息存入缓冲区。

1.4数据的转换、存储与显示TTF字库中存储数据的格式为HXED,返回的数据点结构为POINTFX,都是通过一个有符号的32位数进行记录,整数和小数部分各占16位,所以在处理时要先进行数据移位转换得到工程上通用的float或者double类型。TTF矢量字体中轮廓信息描述通过连续直线段和二次样条曲线的控制点进行。其中直线段由两端点进行描述,二次样条曲线通过三个控制点描述。而由GetGlyphOutline函数得到的数据点类型为:TTPRIMLINE和TTPRIMQSPLINE.数据点类型为TTPRIMQSPLINE时TTPOLYCURVE结构返回的数据点不一定就是三个,因此在提取时要进行转换。由以下转换代码进行提取:Bif(u1.5曲线升阶通过转换提取的是直线段和二次Bezier曲线,而Windows下没有可以直接绘制二次Bezier曲线的函数,但WindowAPI有提供一个PolyBezier函数进行三次Bezier曲线的绘制,因此为了绘图显示的方便,对二次样条曲线进行升阶处理,从而利用PolyBezier函数进行绘图。

cl是组合系数这里约定:0!=1.二依据Bezier的定义可以得到以谢明红:基于Windows矢量字库的切割系统的研宄与开发则升阶后的控制顶点为:P,o=P 2轮廓曲线的编辑、顺序的调整与偏移Bezier曲线的形状和位置只与特征多边形的顶点的位置有关,它与坐标系的选取无关,因此可以通过对特征多边形的编辑操作达到对Bezier曲线平移、旋转、复制、剪切等目的。Bezier曲线还有对称性的性质,因此可以对特征多边形的镜像达到对Bezier样条曲线进行镜像操作。

点的存储顺序决定了该轮廓的“旋向”,即轮廓是顺时针走向还是逆时针走向。对刀具半径进行补偿时,旋向决定着补偿方向。对于整体外形轮廓字模数据,在TTF中,外轮廓的旋向必为顺时针走向,内轮廓的必为逆时针走向。然而函数Get-GlyphOutline返回的数据信息中并没有对内外轮廓进行标识,因此要通过极左图元判别法,判断所读取轮廓环的旋向。在TTF中,记录环的起始段位置,并不一定适合于作为加工的起始端,对于包含有多个封闭轮廓环的情况下,提取的顺序与实际要求加工的顺序也并不一定一致,所以要求对环的顺序和各个轮廓环的加工起点进行调整。本系统在数据进行存储时用的是双向链表,因此以上顺序的调整就可以通过节点的调整很方便地得以实现。在切割中应该加入引刀线、退刀线等辅助加工线。直线段的刀具半径补偿算法已经很成熟,而Bezier曲线段的偏移,可以依据其几何不变性的特性,对其特征多边形进行无插值偏移。这样就可以把Bezier曲线段的偏移看成是对直线段的偏移了,并且可以确保不会增加多余的控制点。而与其他曲线类型连接偏移时,同样用Bezier曲线特征多边形的相邻边参与有插值偏移计算就可以。

3Bezier曲线段的离散与NC代码的生成在实际数控加工时只能加工直线段或者圆弧段,因此要对偏移的字符轮廓曲线中的Bezier曲线进行离散化。

Bezier曲线的分割递推Casreljau算法可以很好地满足实际工程离散的要求。算法描述为:给定空间n+1个点及参数t则有:其中P(t)即为PPP(t)是在曲线上具有参数t的点。n为样条曲线的次数。

根据实际精度的需要,确定分割的*大直线跨距d,计算得到分割间距At,以At为增量计算获得Bezier曲线段上包含t的点,相邻的点用小直线度逼近。在NC代码生成时,用G01生成相应的小直线代码。

4系统功能与总流程5系统界面与运行结果为自主开发的二维切割CAD/CAM软件系统运行读入字体并偏移后的效果图,输入的字符为英文字母*O*和汉字取的轮廓进行了刀具半径的偏移和加入了引刀线、退刀线等辅助加工线。

6结束语本系统可以获得Windows下的各种字体的外形轮廓轨迹,并且可以很方便地进行各种编辑操作,通过刀具半径偏移方便地生成数控加工程序,应用于二维数控切割机床上,并且已经用VisualC++6.0编成实现,在实际中运行良好。

(:2006年11月)

 
举报 收藏 0
免责声明
• 
转载请注明原文出处:https://www.51slb.com/news/8ba51dc983.html 。本文仅代表作者个人观点,与商来宝平台无关,请读者仅做参考,如文中涉及有违公德、触犯法律的内容,请向我们举报,作者需自行承担相应责任。涉及到版权或其他问题,请及时联系我们处理。
 

(c)2022-2032 www.51slb.com 商来宝 All Rights Reserved 成都蓝兴网络科技有限公司

蜀ICP备2021023313号