一种从AutoCAD文件中一键式提取表格数据的方法技术

技术编号:13631277 阅读:54 留言:0更新日期:2016-09-02 11:47
本发明专利技术公开了一种从AutoCAD文件中一键式提取表格数据的方法。包括从配置文件中取得表格的特征;建立表格的数据结构;将表格数据填写到原始数据视图所对应的DataGridView控件;根据表格数据的特征寻找对应的表头DBText对象,经过计算确定表格的范围、单元格的布局,在单元格的内部则根据DBText对象的Y坐标确定单元格内部文字的行序;将经过转换的表格数据填写到预览视图所对应的DataGridView控件;将经过转换的表格数据导出为EXCEL文件。本发明专利技术所公开的方法可以快速提取AutoCAD文件全部的表格数据。表格中的数据可以被保存为EXCEL表格,进行进一步的利用。整个过程的操作十分便捷。

【技术实现步骤摘要】

本专利技术公开了一种从AutoCAD文件中一键式提取表格数据的方法,涉及计算机制图软件

技术介绍
AutoCAD是一款目前非常流行的工程制图软件。很多使用AutoCAD软件的施工方,在依据图纸建设施工的同时,也有可能根据设计和业主的要求进行设备、材料等物资的采购。为此,从AutoCAD文件中提取相应的表格数据,进而将数据保存为EXCEL表格,也是一种新的客户需求。AutoCAD自R16开始加入了表格(Table)对象,但由于使用习惯等方面的原因,人们还是习惯于使用由线(Line)和文字(DBText)对象绘制表格。这种表格中的每一个对象从逻辑上来说没有任何联系,仅仅是通过各自的位置关系形成了一个视觉上的表格效果。这种表格和表格之外的部分没有任何本质的区别。因此,确定表格的范围十分困难,进而无法确定表格的行数、列数、单元格中的文字等信息。为了确定表格的范围,目前大部分软件的做法是由用户在文件中划出表格范围或选中表格中的全部对象,再由确定表格的行数、列数、单元格中的文字等信息。这种做法的确可行,但每操作一次只能提取一个表格的数据。如果表格多时,操作繁琐,容易误操作。
技术实现思路
本专利技术所要解决的技术问题是:针对现有技术的缺陷,提供一种从Auto CAD文件中一键式提取表格数据的方法,可以快速提取Auto CAD文件全部的表格数据。本专利技术为解决上述技术问题采用以下技术方案:一种从AutoCAD文件中一键式提取表格数据的方法,具体步骤包括,步骤一、从配置文件中取得表格的特征,包括最左端列表头的文本和最右端列表头的文本的排列,将最左端列表头的文本定义为DBText对象1,将最右端列表头的文本定义为DBText对象2,DBText对象1和DBText对象2形成一个DBText对象对;步骤二、建立表格的数据结构;步骤三、将表格数据填写到原始数据视图所对应的DataGridView控件;步骤四、根据表格数据的特征寻找对应的表头DBText对象,经过计算确定表格的范围、单元格的布局,在单元格的内部则根据DBText对象的Y坐标确定单元格内部文字的行序;步骤四、将经过转换的表格数据填写到预览视图所对应的DataGridView控件;步骤五、将经过转换的表格数据导出为EXCEL文件。作为本专利技术的进一步优选方案,所述步骤1具体包括,在AUTOCAD文件中搜集对象,建立DBText数组、水平直线对象数组、垂直直线对象数组;筛选出全部的DBText对象1和DBText对象2;将DBText对象1和DBText对象2进行配对,形成一个DBText对象对。作为本专利技术的进一步优选方案,所述步骤二具体包括,201、以DBText对象1和DBText对象2的位置为基础建立初始表格范围;202、建立表格的垂直直线数组和X坐标数组,找出通过表格范围的垂直直线,每找到一条垂直直线,就将其加入垂直直线数组,并将表格范围扩大为包含直线范围和表格范围的新范围,如果其和表格中其他垂直直线的X坐标不相同,就将直线的X坐标记入X坐标数组;203、建立表格的水平直线数组和Y坐标数组,找出通过表格范围的水平直线,每找到一条水平直线,就将其加入水平直线数组,并将表格范围扩大为包含直线范围和表格范围的新范围,如果其和表格中其他水平直线的Y坐标不相同,就将直线的Y坐标记入Y坐标数组;204、根据X坐标数组和Y坐标数组确定整个表格的全部单元格的位置,根据DBText对象的位置,将DBText对象及其Y坐标记入对应的单元格中。作为本专利技术的进一步优选方案,所述步骤203之后还包括步骤203’,对X坐标数组的数据和Y坐标数组的数据进行抗干扰处理,对坐标数组的数据进行排序,逐一检查坐标和上一个坐标的差值,如果差值小于设定的门限值,就将此坐标从数组中删除。其中,所述门限值为1毫米。本专利技术采用以上技术方案与现有技术相比,具有以下技术效果:本专利技术所公开的方法可以快速提取AutoCAD文件全部的表格数据。表格中的数据可以被保存为EXCEL表格,进行进一步的利用。整个过程的操作十分便捷。附图说明图1是表格相关数据的结构示意图。图2是本专利技术所述方法的流程示意图。具体实施方式下面详细描述本专利技术的实施方式,所述实施方式的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施方式是示例性的,仅用于解释本专利技术,而不能解释为对本专利技术的限制。下面结合附图对本专利技术的技术方案做进一步的详细说明:以用户的一次实际操作过程为实施例,当用户点击导出表格按钮后,经过程序的分析和计算从AUTOCAD文件中识别出若干表格,并显示在表格导出窗体中。导出表格的窗体由4个部分组成。最上面一行是抽取到表格数据之后可选择的操作。用户可以将表格数据导出到Excel中。第二行是提取到的表格的位置信息。点击这里不同行的单元格将在第四行中显示不同的表格。第三行是表格不同的视图样式。用户想看用转义字典转换过的表格可以选择“预览”视图。用户想看AUTOCAD的原始数据可以看原始数据视图。用户也可以选择“对比”使得两种视图同时显示。在具体实施例中,设置表格特征的用户界面中的表格特征指最左端列表头的文本和最右端列表头的文本的排列。假设,在一个表格中最左端列表头的文本为“序号”,最右端列表头的文本为“备注”,则这个表格的特征就是“序号”“备注”的排列。下文均基于以上假设进行介绍程序的处理过程。因为AUTOCAD的DBText对象的内容可能无法直接显示在Windows的控件中。所以需要设置表格文字转义的用户界面,进行转义处理。如图2所示,提取表格数据的过程包含以下步骤:一、从配置文件中取得表格的特征。包括:在AUTOCAD文件中搜集对象,建立DBText数组、水平直线对象数组、垂直直线对象数组。筛选出全部序号和备注的DBText对象。将序号DBText对象和备注DBText对象进行配对。二、建立表格的数据结构。包括:以序号DBText对象和备注DBText对象的位置(Position)为基础建立初始表格范围(Extents3d)。建立表格的垂直直线数组和X坐标数组。找出通过表格范围的垂直直线。每找到一条垂直直线,就将其加入垂直直线数组,并将表格范围扩大为包含直线范围和表格范围的新范围。如果其和表格中其他垂直直线的X坐标不相同,就将直线的X坐标记入X坐标数组。建立表格的水平直线数组和Y坐标数组。找出通过表格范围的水平直线。每找到一条水平直线,就将其加入水平直线数组,就将表格范围扩大为包含直线范围和表格范围的新范围。如果其和表格中其他水平直线的Y坐标不相同,就将直线的Y坐标记入Y坐标数组。对X坐标数组的数据和Y坐标数组的数据进行抗干扰处理。对坐标数组的数据进行排序。逐一检查坐标和上一个坐标的差值,如果差值小于门限(假设是1毫米),就将此坐标从数组中删除。根据X坐标数组和Y坐标数组可以确定整个表格的全部单元格的位置。根据DBText对象
的位置,将DBText及其Y坐标记入对应的单元格中。三、表格提取过程是根据表格的特征寻找对应的表头DBText对,如图1所示,经过计算逐步确定表格的范围、单元格的布局。在单元格的内部则根据DBText的Y坐标确定单元格内部本文档来自技高网
...

【技术保护点】
一种从AutoCAD文件中一键式提取表格数据的方法,其特征在于:具体步骤包括,步骤一、从配置文件中取得表格的特征,包括最左端列表头的文本和最右端列表头的文本的排列,将最左端列表头的文本定义为DBText对象1,将最右端列表头的文本定义为DBText对象2,DBText对象1和DBText对象2形成一个DBText对象对;步骤二、建立表格的数据结构;步骤三、将表格数据填写到原始数据视图所对应的DataGridView控件;步骤四、根据表格数据的特征寻找对应的表头DBText对象,经过计算确定表格的范围、单元格的布局,在单元格的内部则根据DBText对象的Y坐标确定单元格内部文字的行序;步骤四、将经过转换的表格数据填写到预览视图所对应的DataGridView控件;步骤五、将经过转换的表格数据导出为EXCEL文件。

【技术特征摘要】
1.一种从AutoCAD文件中一键式提取表格数据的方法,其特征在于:具体步骤包括,步骤一、从配置文件中取得表格的特征,包括最左端列表头的文本和最右端列表头的文本的排列,将最左端列表头的文本定义为DBText对象1,将最右端列表头的文本定义为DBText对象2,DBText对象1和DBText对象2形成一个DBText对象对;步骤二、建立表格的数据结构;步骤三、将表格数据填写到原始数据视图所对应的DataGridView控件;步骤四、根据表格数据的特征寻找对应的表头DBText对象,经过计算确定表格的范围、单元格的布局,在单元格的内部则根据DBText对象的Y坐标确定单元格内部文字的行序;步骤四、将经过转换的表格数据填写到预览视图所对应的DataGridView控件;步骤五、将经过转换的表格数据导出为EXCEL文件。2.如权利要求1所述的一种从AutoCAD文件中一键式提取表格数据的方法,其特征在于:所述步骤1具体包括,在AUTOCAD文件中搜集对象,建立DBText数组、水平直线对象数组、垂直直线对象数组;筛选出全部的DBText对象1和DBText对象2;将DBText对象1和DBText对象2进行配对,形成一个DBText对象对。3.如权利要求1或2所述的一种从AutoCAD文件中一键式提取表格数据的方法,其...

【专利技术属性】
技术研发人员:方福璟
申请(专利权)人:南京朗坤软件有限公司
类型:发明
国别省市:江苏;32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1