一种STEP文件等效的二进制数据存储方法与流程

文档序号:15517748发布日期:2018-09-25 18:45阅读:1058来源:国知局

本发明涉及文件转化技术领域,尤其涉及一种step文件转化为二进制数据结构的方法。



背景技术:

step-nc是一个面向对象的新型nc编程数据接口国际标准iso14649。随着数控技术的迅猛发展,nc加工中所采用的编程方式还是基于19世纪60年代所开发的iso6983(g/m代码)标准,这种代码仅仅包括一些简单的运动指令(如g01、g02)和辅助指令(如m03、m08),而不包含零件几何形状、刀具路径生成、刀具选择等信息,使得cnc与cad/cam通道之间形成瓶颈。数控加工中编程困难、设计与加工等信息不能完全共享的问题限制了数控系统的进一步发展,使其面临新的变革。

为了解决这些问题,欧共体于1997年提出了optimal计划,将step(standardfortheexchangeofproductmodeldate,iso10303)标准延伸到自动化制造的底层设备,开发了一种step-nc的数据模型,作为铣削加工编程的数据接口。该接口遵从step标准,具有面向对象的特征。step-nc将产品模型数据转换标准step扩展到cnc领域,重新制订了cad/cam与cnc之间的接口,它要求cnc系统直接使用符合step标准的cad三维数据模型(包括工件几何数据、参数配置和制造特征)、工艺信息和刀具信息直接产生加工程序。

然而step文件,基于express语言,是一种文本格式的文件,便于人的阅读修改。但数控系统执行解析step文件时,必须根据express语言和step规范将文件包含的元素解析成对象体,造成执行效率低下的问题。国内文献“基于xml的step—nc程序解释器的设计与实现”将文件解析成xml数据库格式。但是这种方案,造成了复杂性,而且依然没有摆脱文本数据格式,执行效率一样低下。



技术实现要素:

针对现有技术的问题,本发明提供了一种step文件转化为二进制数据结构的方法,旨在提高存储文件的执行效率。

为解决上述问题,本发明提供的技术方案为:

所述存储方法遵循以下规范:1)一个实体由数组表示,数组的第一个数包含有实体类型和数组长度的信息,随后为参数段与数组段,参考iso14649标准,根据实体类型明确后面的数据的类型和含义;2)字符串和数组长度可变参数在参数位置只保存大小和存储地址偏移量,实际的数组和字符串被放置在实体参数段后面;3)实体数组起始位置为实体的地址;4)这个实体数组的末尾之后的第一个数据为下一实体的开头;

所述数据存储方法包括步骤:

1)解析出实体,将实体存储于数组中,参数访问地址待定;

2)在解析实体的时候,将参数访问地址存储于地址列表之中;

3)根据参数访问地址列表,填充实体数组中待定的参数访问地址。

优选的,预留扩展参数存储空间,便于扩展和修改实体属性;

应用本发明实施例,获取到二进制文件以后,有利于计算机进行执行二进制文件,因此,可以提高step文件的执行效率。

附图说明

图1为本发明:以实体笛卡尔坐标点为例,#73=cartesian_point(”,(-8.8960606956346,5.24775006834384,56.552652692042));其存储格式的附图;

图2为本发明:

另外一个例子step文本为:#38=advanced_face('demo',(#46,#47,#48,#49),#42,.t.);其存储格式的附图。

具体实施方式

为进一步了解本发明的内容,结合附图及实施例对本发明作详细描述。

本发明的数据存储方法包括步骤:

1)解析出实体,将实体存储于数组中,参数访问地址待定;

2)在解析实体的时候,将参数访问地址存储于地址列表之中;

3)根据参数访问地址列表,填充实体数组中待定的参数访问地址。

本发明所述存储方法遵循以下规范:

1)一个实体由数组表示,数组的第一个数包含有实体类型和数组长度的信息,参考iso14649标准,根据实体类型明确后面的数据的类型和含义;

2)字符串和数组长度可变参数在参数位置只保存大小和存储地址偏移量,实际的数组和字符串被放置在实体参数段后面,预留附加空参数存储空间,便于扩展和修改属性;

3)实体数组起始位置为实体的地址;

4)这个实体数组的末尾之后的第一个数据为下一实体的开头;

实体在step文件的中的特征是“#id=”,根据这个特征可解析出实体。实体按先后顺序存储于数组中,所述数组在本实施例中为32位无符号数数组。

本发明的一种实施例中,以实体笛卡尔坐标点为例,#73=cartesian_point(”,(-8.8960606956346,5.24775006834384,56.552652692042));其存储格式说明书附图1所示。

根据step文件遵循的规范,cartesian_point的格式为指令-字符串-长度为3的浮点数组。若存储#73实体数组的起始位置为100,则#73的地址为100,其它实体访问它的时候,直接使用地址100。将参数#73访问地址100存储于一个地址列表之中,格式为{73,100}。实体末尾的下一个数即#74的起始位置。存储的数组为32位无符号数,即4字节。在这个实施例中,cartesian_point的代码为86,放在第一字节,长度两字节为0006,放在第3-4字节。这时,地址100的数据为(16进制)00060086。浮点数的存储方法是,取要写入的位置的地址指针,将此指针强制转换为浮点数指针,然后写入用此指针写入浮点数。读取时,用指针转化的方法读取浮点数。

对于实体的数组或者字符串参数,在存储参数的位置,我们存储数组或者字符串参数在实体数组中的偏移位置,而实际的参数放置在实体参数段之后。此实例中100位置存储实体头,101-102存储参数,103-105存储数组数据。如此实例中第一参数偏移为2,而长度为0,因此数组101的值为(16进制)00000002{长度,偏移}。对于第二参数数组,偏移为1,因此102的值为(16进制)00030001。

另外一个例子step文本为:#38=advanced_face('demo',(#46,#47,#48,#49),#42,.t.);其存储格式,如说明书附图2。

根据step文件遵循的规范,advanced_face的格式为指令-字符串-实体face_bound组-曲面实体-拓扑属性true/false。若存储#73实体数组的起始位置为100,则#73的地址为100,其它实体访问它的时候,直接使用地址100。此时将参数#73访问地址100存储于一个实体地址列表之中,格式为{73,100}。实体末尾的下一个数即#74的起始位置。存储的数组为32位无符号数,即4字节。在一个实施例中,advanced_face的代码为80,放在第一字节,长度两字节为000a,这时,地址100的数据为(16进制)000a0080。

对于实体的字符串参数,我们只存储字符串在实体数组中的偏移位置,如此实例中为4,而长度为1(因为一个单元可以存储4个字符),因此101的值为(16进制)00010004。对于实体组,我们采取类似的方法,因此102的值为(16进制)00040003。103存储的是实体#42的地址。104存储值为1。105存储字符串“demo”,106存储实体#46的地址,107-110存储#46,#47,#48,#49地址,此时#46,#47,#48,#49的地址待定,此时将待定填充信息存入待定参数列表。存储格式为{107,46}{108,47}{109,48}{110,49}。等所有实体解析结束之后,查找实体地址列表,如#46的地址为42,则在数组107位置存储42。

可以自定义预留的参数,用于设定实体属性,便于运用程序操作实体。此预留空参数为数组类型。可以更加需要添加一个或者多个这样的空参数。一种实施例是在每一个实体中添加一个自定义参数,放在参数段的最后位置,便于实体的操作属性。

根据实例,我们看到了,这种二进制数据存储方式,便于计算机的执行。例如执行到图2所示的advanced_face实体时,要访问#46,可以直接读取到#46的地址。执行完一个实体进入下一个实体时,可根据当前实体的首数据,确定下一实体的位置。因此,可以估计出这种存储方式比文本的高出10倍以上的访问速度。此外,这种存储方式与文本的存储方式是等效的,因此可靠性高。

作为此数据结构的一种扩展运用,一个实施例是扩展空参数和预留存储空间。以图2示意的实体为例,可以在104位置之后放入一个空参数,这个参数不是advanced_face必须的,是使用者为了给advanced_face增加自定义属性预留的存储空间。这个空间可以为单参数,直接存储在105位置,原来105之后的数据往下移动一个地址,相应的偏移地址也要加1。预留空间可以为数组。在105位置存储数组偏移地址和数据类型与大小信息。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1