基于AutoCAD二次开发的表格导入程序

2019-10-24 08:49周琼王腾飞
科技创新与应用 2019年26期
关键词:除险加固计算

周琼 王腾飞

摘  要:沟村节制闸除险加固工程设计是基于实际工程问题进行的分析和计算。文章以《水闸设计规范》为标准,基于工程水文地质条件,对水闸拆除重建后的水闸布置、防渗排水,以及闸室结构等进行计算和设计,并对水闸的稳定性进行了计算分析。文章研究成果旨在为类似工程设计提供方法参考。

关键词:节制闸;除险加固;计算;闸室结构

中图分类号:TV698.23      文献标志码:A 文章编号:2095-2945(2019)26-0090-02

Abstract: The control design of the restraint and reinforcement project of Goucun is based on the analysis and calculation of actual engineering problems. With Design Specification for Sluice as the standard and based on the engineering hydrogeological conditions, this paper calculates and designs the sluice arrangement, anti-seepage and drainage, and the structure of the lock chamber after the sluice demolition and reconstruction, and the stability of the sluice is calculated and analyzed. The study of this paper is intended to provide a methodological reference for similar engineering design.

Keywords: check gate; danger control and reinforcement; calculation; lock chamber structure

引言

在AutoCAD中插入表格,有兩种常见的方式:第一种是复制EXCEL中选中的单元格,直接粘贴到CAD图形中;这种方式粘贴出来的表格在AutoCAD中是以OLE对象的形式存在,表格不可以直接编辑,需要双击插入的表格启动EXCEL对表格进行编辑、设置格式等。第二种是在AutoCAD中用线和文字绘制表格[3],这种方式绘制的表格实质上AutoCAD的线对象和文字对象的一个集合,不依赖EXCEL即可编辑;但如果要对其格式进行修改就比较繁琐,例如要修改某一行的字体大大小,就要连同这行的行高一起修改,修改行高就涉及了多条线的延长及平移。而AutoCAD的Table对象不用依赖外部程序修改,又可以像编辑EXCEL表格一样在CAD中进行编辑,本文所述的程序,实现了将EXCEL中的选中单元格向AutoCAD的Table对象的转换。

1 设计思路

为便于程序的加载与执行,对AutoCAD的二次开发,采用AutoCAD.NET API DLL的开发方式,用C#语言进行开发。编译生成的类库,通过AutoCAD的内置命令“NETLOAD”进行加载后,便可以在AutoCAD命令行输入程序命令,执行程序功能。要实现预想的程序功能,要解决两个主要问题:一是EXCEL表格的内容及单元格格式的读取,二是AutoCAD的Table对象的创建以及其内容的写入、单元格属性的设置。转换流程可分为三个步骤:ECEL表格的读取、转换参数的设置、AutoCAD表格的创建;下面就这三个方面的程序实现展开论述。

2 程序实现

2.1 EXCEL表格的读取

通过对EXCEL对象模型的理解,程序读取EXCEL单元格内容及格式的基本思路是:引用EXCEL的类库Microsoft.Office.Interop.Excel.dll按照Appication-Workbook-Worksheet-Rang的对象层次,对当前打开的EXCEL文件的选定区域进行读取。关键代码如下:

新建Hashtable对象hashtable_width、hashtable_height用于存储单元列宽和行高,其key值分别为列号和行号,value值分别为列宽和行高。新建DataTable对象table_cells、table_fontheight,其行数和列数与选中单元格的行数和列数相同,用于存储每个单元格的内容及字体大小。新建Hashtable对象hashtable_mer用于记录合并单元格,其key值为合并单元格起始行与合并单元格起始列的组合,中间以“,”分隔;其value值为合并单元格结束行与合并单元格结束列的组合,中间以“,”分隔。至此,便获取了选中单元格的内容及格式数据。

2.2 转换参数的设置

在新建AutoCAD表格之前,需要对表格的参数进行设置,需要设置的参数包括字高、图层、字体样式。首先以数据库的形式访问当前CAD文件[1],并启动一个事务,关键代码如下:

2.3 AutoCAD表格的创建

在设置完表格参数之后,选择插入表格的左上角,程序即开始在选定位置添加表格。按照所读取EXCEL表的行数及列数新建表格,代码如下:

然后根据hashtable_width、hashtable_height两个Hashtable所记录的列宽和行高,使用表格对象的SetColumnWidth、SetRowHeight方法对CAD表格进行列宽和行高设置;根据hashtable_merHashtable所记录的合并单元格信息,使用表格的MergeCells方法对CAD表格进行单元格合并。设置完表格格式后,根据table_cells、table_fontheight两个Hashtable所记录的单元格内容及文字高度,将文字写入对应单元格内;同时根据是否勾选透明,设置单元格的背景色为白色或者无。至此,便实现了从EXCEL表格到CAD表格的转换。

3 应用实例

如图2所示,为EXCEL表格的样式,其含有不同大小的文字及合并的单元格;运用本文所述程序将其导入到CAD中的表格样式如图3所示。不难发现,程序保留了原EXCEL表格的格式,这样就使得我们可以在EXCEL中编辑好表格格式再导入CAD,从而减少CAD表格的后期编辑操作。

4 结束语

本文所述解决方案,较好地解决了从EXCEL表格向CAD表格的转换问题,使得表格的编辑计算工作可以更多地在EXCEL中完成;基于AutoCAD的Table对象的特性,使得表格在CAD中的编辑也变得更加的简单;为提高工作效率起到良好的作用。

参考文献:

[1]李保风.基于.NET访问AutoCAD数据库探讨[J].制造业自动化,2012(8):16-18.

[2]朱玉.用VBA实现Excel电子表格到AutoCAD表格的转换[J].机床与液压,2004(12):176-178.

[3]吴伟中,贾长学.AutoCAD普通表格转换为表格对象的方法[J].机械工程师,2007(4).

猜你喜欢
除险加固计算
试述中小型水库的土石坝除险加固施工技术应用
小水库除险加固工程及其质量控制探讨
浅谈作业成本法——以哲学的视角
浅谈作业成本法——以哲学的视角
提升小学数学核心素养的实践
经济增加值EVA——企业业绩评价新指标