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

文档序号:10552877阅读:469来源:国知局
一种从AutoCAD文件中一键式提取表格数据的方法
【专利摘要】本发明公开了一种从AutoCAD文件中一键式提取表格数据的方法。包括从配置文件中取得表格的特征;建立表格的数据结构;将表格数据填写到原始数据视图所对应的DataGridView控件;根据表格数据的特征寻找对应的表头DBText对象,经过计算确定表格的范围、单元格的布局,在单元格的内部则根据DBText对象的Y坐标确定单元格内部文字的行序;将经过转换的表格数据填写到预览视图所对应的DataGridView控件;将经过转换的表格数据导出为EXCEL文件。本发明所公开的方法可以快速提取AutoCAD文件全部的表格数据。表格中的数据可以被保存为EXCEL表格,进行进一步的利用。整个过程的操作十分便捷。
【专利说明】
一种从AutoCAD文件中一键式提取表格数据的方法
技术领域
[0001]本发明公开了一种从AutoCAD文件中一键式提取表格数据的方法,涉及计算机制图软件技术领域。
【背景技术】
[0002]AutoCAD是一款目前非常流行的工程制图软件。很多使用AutoCAD软件的施工方,在依据图纸建设施工的同时,也有可能根据设计和业主的要求进行设备、材料等物资的采购。为此,从AutoCAD文件中提取相应的表格数据,进而将数据保存为EXCEL表格,也是一种新的客户需求。
[0003]AutoCAD自R16开始加入了表格(Table)对象,但由于使用习惯等方面的原因,人们还是习惯于使用由线(Line)和文字(DBText)对象绘制表格。这种表格中的每一个对象从逻辑上来说没有任何联系,仅仅是通过各自的位置关系形成了一个视觉上的表格效果。这种表格和表格之外的部分没有任何本质的区别。因此,确定表格的范围十分困难,进而无法确定表格的行数、列数、单元格中的文字等信息。为了确定表格的范围,目前大部分软件的做法是由用户在文件中划出表格范围或选中表格中的全部对象,再由确定表格的行数、列数、单元格中的文字等信息。这种做法的确可行,但每操作一次只能提取一个表格的数据。如果表格多时,操作繁琐,容易误操作。

【发明内容】

[0004]本发明所要解决的技术问题是:针对现有技术的缺陷,提供一种从AutoCAD文件中一键式提取表格数据的方法,可以快速提取Auto CAD文件全部的表格数据。
[0005]本发明为解决上述技术问题采用以下技术方案:
[0006]一种从AutoCAD文件中一键式提取表格数据的方法,具体步骤包括,
[0007]步骤一、从配置文件中取得表格的特征,包括最左端列表头的文本和最右端列表头的文本的排列,将最左端列表头的文本定义为DBText对象I,将最右端列表头的文本定义为DBText对象2,DBText对象I和DBText对象2形成一个DBText对象对;
[0008]步骤二、建立表格的数据结构;
[0009]步骤三、将表格数据填写到原始数据视图所对应的DataGridView控件;
[00?0]步骤四、根据表格数据的特征寻找对应的表头DBText对象,经过计算确定表格的范围、单元格的布局,在单元格的内部则根据DBTe xt对象的Y坐标确定单元格内部文字的行序;
[0011 ]步骤四、将经过转换的表格数据填写到预览视图所对应的DataGridView控件;
[0012]步骤五、将经过转换的表格数据导出为EXCEL文件。
[0013]作为本发明的进一步优选方案,所述步骤I具体包括,
[0014]在AUTOCAD文件中搜集对象,建立DBText数组、水平直线对象数组、垂直直线对象数组;
[0015]筛选出全部的DBText对象I和DBText对象2;
[0016]将DBText对象I和DBText对象2进行配对,形成一个DBText对象对。
[0017]作为本发明的进一步优选方案,所述步骤二具体包括,
[0018]201、以DBText对象I和DBText对象2的位置为基础建立初始表格范围;
[0019]202、建立表格的垂直直线数组和X坐标数组,找出通过表格范围的垂直直线,每找到一条垂直直线,就将其加入垂直直线数组,并将表格范围扩大为包含直线范围和表格范围的新范围,如果其和表格中其他垂直直线的X坐标不相同,就将直线的X坐标记入X坐标数组;
[0020]203、建立表格的水平直线数组和Y坐标数组,找出通过表格范围的水平直线,每找到一条水平直线,就将其加入水平直线数组,并将表格范围扩大为包含直线范围和表格范围的新范围,如果其和表格中其他水平直线的Y坐标不相同,就将直线的Y坐标记入Y坐标数组;
[0021 ] 204、根据X坐标数组和Y坐标数组确定整个表格的全部单元格的位置,根据DBText对象的位置,将DBText对象及其Y坐标记入对应的单元格中。
[0022]作为本发明的进一步优选方案,所述步骤203之后还包括步骤203,,对X坐标数组的数据和Y坐标数组的数据进行抗干扰处理,对坐标数组的数据进行排序,逐一检查坐标和上一个坐标的差值,如果差值小于设定的门限值,就将此坐标从数组中删除。其中,所述门限值为I毫米。
[0023]本发明采用以上技术方案与现有技术相比,具有以下技术效果:本发明所公开的方法可以快速提取AutoCAD文件全部的表格数据。表格中的数据可以被保存为EXCEL表格,进行进一步的利用。整个过程的操作十分便捷。
【附图说明】
[0024]图1是表格相关数据的结构示意图。
[0025]图2是本发明所述方法的流程示意图。
【具体实施方式】
[0026]下面详细描述本发明的实施方式,所述实施方式的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施方式是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。
[0027]下面结合附图对本发明的技术方案做进一步的详细说明:
[0028]以用户的一次实际操作过程为实施例,当用户点击导出表格按钮后,经过程序的分析和计算从AUTOCAD文件中识别出若干表格,并显示在表格导出窗体中。导出表格的窗体由4个部分组成。最上面一行是抽取到表格数据之后可选择的操作。用户可以将表格数据导出到Excel中。第二行是提取到的表格的位置信息。点击这里不同行的单元格将在第四行中显示不同的表格。第三行是表格不同的视图样式。用户想看用转义字典转换过的表格可以选择“预览”视图。用户想看AUTOCAD的原始数据可以看原始数据视图。用户也可以选择“对比”使得两种视图同时显示。
[0029]在具体实施例中,设置表格特征的用户界面中的表格特征指最左端列表头的文本和最右端列表头的文本的排列。假设,在一个表格中最左端列表头的文本为“序号”,最右端列表头的文本为“备注”,则这个表格的特征就是“序号” “备注”的排列。下文均基于以上假设进行介绍程序的处理过程。
[0030]因为AUTOCAD的DBText对象的内容可能无法直接显示在Windows的控件中。所以需要设置表格文字转义的用户界面,进行转义处理。
[0031]如图2所示,提取表格数据的过程包含以下步骤:
[0032]一、从配置文件中取得表格的特征。包括:
[0033]在AUTOCAD文件中搜集对象,建立DBText数组、水平直线对象数组、垂直直线对象数组。
[0034]筛选出全部序号和备注的DBText对象。
[0035]将序号DBText对象和备注DBText对象进行配对。
[0036]二、建立表格的数据结构。包括:
[0037]以序号DBText对象和备注DBText对象的位置(Posit1n)为基础建立初始表格范围(Extents3d)。
[0038]建立表格的垂直直线数组和X坐标数组。找出通过表格范围的垂直直线。每找到一条垂直直线,就将其加入垂直直线数组,并将表格范围扩大为包含直线范围和表格范围的新范围。如果其和表格中其他垂直直线的X坐标不相同,就将直线的X坐标记入X坐标数组。
[0039]建立表格的水平直线数组和Y坐标数组。找出通过表格范围的水平直线。每找到一条水平直线,就将其加入水平直线数组,就将表格范围扩大为包含直线范围和表格范围的新范围。如果其和表格中其他水平直线的Y坐标不相同,就将直线的Y坐标记入Y坐标数组。
[0040]对X坐标数组的数据和Y坐标数组的数据进行抗干扰处理。对坐标数组的数据进行排序。逐一检查坐标和上一个坐标的差值,如果差值小于门限(假设是I毫米),就将此坐标从数组中删除。
[0041]根据X坐标数组和Y坐标数组可以确定整个表格的全部单元格的位置。根据DBText对象的位置,将DBText及其Y坐标记入对应的单元格中。
[0042]三、表格提取过程是根据表格的特征寻找对应的表头DBText对,如图1所示,经过计算逐步确定表格的范围、单元格的布局。在单元格的内部则根据DBText的Y坐标确定单元格内部文字的行序。
[0043]四、将表格数据填写到原始数据视图所对应的DataGridView控件,将经过转换的数据填写到预览视图所对应的DataGr idVi ew控件。
[0044]五、用户可选择将表格数据提交到其他系统或导出为EXCEL文件。
[0045]上面结合附图对本发明的实施方式作了详细说明,但是本发明并不限于上述实施方式,在本领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下做出各种变化。以上所述,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制,虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明,任何熟悉本专业的技术人员,在不脱离本发明技术方案范围内,当可利用上述揭示的技术内容做出些许更动或修饰为等同变化的等效实施例,但凡是未脱离本发明技术方案内容,依据本发明的技术实质,在本发明的精神和原则之内,对以上实施例所作的任何简单的修改、等同替换与改进等,均仍属于本发明技术方案的保护范围之内。
【主权项】
1.一种从AutoCAD文件中一键式提取表格数据的方法,其特征在于:具体步骤包括, 步骤一、从配置文件中取得表格的特征,包括最左端列表头的文本和最右端列表头的文本的排列,将最左端列表头的文本定义为DBText对象I,将最右端列表头的文本定义为DBText对象2,DBText对象I和DBText对象2形成一个DBText对象对; 步骤二、建立表格的数据结构; 步骤三、将表格数据填写到原始数据视图所对应的DataGridView控件; 步骤四、根据表格数据的特征寻找对应的表头DBText对象,经过计算确定表格的范围、单元格的布局,在单元格的内部则根据DBText对象的Y坐标确定单元格内部文字的行序;步骤四、将经过转换的表格数据填写到预览视图所对应的DataGridView控件; 步骤五、将经过转换的表格数据导出为EXCEL文件。2.如权利要求1所述的一种从AutoCAD文件中一键式提取表格数据的方法,其特征在于:所述步骤I具体包括, 在AUTOCAD文件中搜集对象,建立DBText数组、水平直线对象数组、垂直直线对象数组; 筛选出全部的DBText对象I和DBText对象2 ; 将DBText对象I和DBText对象2进行配对,形成一个DBText对象对。3.如权利要求1或2所述的一种从AutoCAD文件中一键式提取表格数据的方法,其特征在于:所述步骤二具体包括, 201、以DBText对象I和DBText对象2的位置为基础建立初始表格范围; 202、建立表格的垂直直线数组和X坐标数组,找出通过表格范围的垂直直线,每找到一条垂直直线,就将其加入垂直直线数组,并将表格范围扩大为包含直线范围和表格范围的新范围,如果其和表格中其他垂直直线的X坐标不相同,就将直线的X坐标记入X坐标数组; 203、建立表格的水平直线数组和Y坐标数组,找出通过表格范围的水平直线,每找到一条水平直线,就将其加入水平直线数组,并将表格范围扩大为包含直线范围和表格范围的新范围,如果其和表格中其他水平直线的Y坐标不相同,就将直线的Y坐标记入Y坐标数组; 204、根据X坐标数组和Y坐标数组确定整个表格的全部单元格的位置,根据DBText对象的位置,将DBText对象及其Y坐标记入对应的单元格中。4.如权利要求3所述的一种从AutoCAD文件中一键式提取表格数据的方法,其特征在于:所述步骤203之后还包括步骤203’,对X坐标数组的数据和Y坐标数组的数据进行抗干扰处理,对坐标数组的数据进行排序,逐一检查坐标和上一个坐标的差值,如果差值小于设定的门限值,就将此坐标从数组中删除。5.如权利要求4所述的一种从AutoCAD文件中一键式提取表格数据的方法,其特征在于:所述门限值为I毫米。
【文档编号】G06F17/24GK105912516SQ201610203060
【公开日】2016年8月31日
【申请日】2016年4月1日
【发明人】方福璟
【申请人】南京朗坤软件有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1