- 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时表示字符的笔划经过此位,该位为0时表示字符的笔划不经过此位。因为只要分辨出某点为0还是1,因此每个点只要用一位二进制数表示即可,这样1个字节就可以表示8个象素点,但为方便叙述本文采用以1个字节表示1个点来进行说明。
要将字形轮廓转化为二值图象,首先根据需要(如字体、尺寸大小、纵横比、是否旋转、变形等)在屏幕上绘制出所要切割字符的字形轮廓;然后对图形进行扫描,将有笔划通过的点(对应于与字符颜色相同象素的位)的值置为1,而其它的点则置为0,扫描完毕后便将字形轮廓转化为二值图象了。
生成二值图象后还需对图象进行适当的修改,以满足线切割加工的需要。对图象进行编辑处理,可用一个小方块代替一个放大了的象素,通过建立网格编辑区,每一网格小方块都是一个放大了的象素,这样可对每个象素进行编辑处理,控制鼠标在相应的网格眼内填入字符或背景颜色,同时填入字符颜色所对应的位置为1,填入背景颜色所对应的位置为0。
切割指令的生成
将汉字的字形轮廓转化为二值图象且编辑处理后,为生成切割指令须用直线或圆弧对其进行描述,由于汉字字形较适合用直线来对其进行描述,因此采用直线段来实现对汉字字形的描述。
由于线切割机所能切割的图形具有一定的特殊性(即需能以一笔画完),因此只需采用某种算法对图进行一次遍历便可得到加工轨迹。
要对图象进行遍历,首先需确定搜索策略。由于能被切割的图形具有特殊性,采用改进了的深度优先搜索方法来对图象进行遍历。主要思想为:先确定图象的起始点,然后沿逆时针方向在该点周围寻找下一点,找到后沿着这两点确定的方向继续搜索,直至将该方向上的点搜索完毕,然后回溯,以回溯得到的点为基础重复以上搜索,直至所有点都被搜索过,在搜索过程中将经过的点的值从1置为0,同时记录所经过的直线。
下面介绍一下所要用到的主要数据结构。
记录直线所用结构为TLineRecord,它用来记录每段直线的起点和终点坐标,其定义如下:
TLineRecord=record
StartPoint, EndPoint: TPoint; //直线起始点,终止点
end;
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为False;
(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值作为直线起点
原创力文档


文档评论(0)