APP下载

工程检测中CAD的二次开发

2014-08-10李吾伊

山西建筑 2014年34期
关键词:该软件二次开发绘制

李吾伊 周 佶

(南京工业大学土木工程学院,江苏 南京 211816)

·计算机技术及应用·

工程检测中CAD的二次开发

李吾伊 周 佶

(南京工业大学土木工程学院,江苏 南京 211816)

针对房屋安全检测鉴定现场记录数据量大、工序繁琐、容易出错等特点,从CAD菜单的定制以及运用AutoLisp对CAD进行了二次开发,开发了一套适合快速绘制现场记录的方法,使得工程检测人员可以在检测现场实现无纸化原始记录,并且让后期的数据处理更加方便快捷,大大提高了工程检测的效率和准确率。

裂缝检测,AutoLisp,VBA,二次开发

0 引言

近年来,随着城市建设发展的不断加快,越来越多的建筑已经建成并且投入使用,但是,在建筑物的使用过程中,建筑物构件的表面会产生大量的裂缝,这些裂缝可以说是量大面广。然而随着生活水平的不断提高,人们对生活质量的要求也不断提高,当业主们发现自己的房屋存在裂缝问题时,由于大多数业主并没有专业的建筑结构知识,再加上近年来各种信息技术手段的不断普及与发展以及因房屋质量问题而产生的重大事故见诸报端,很多业主就难免会对自己房屋的质量产生疑虑,他们会怀疑自己建筑的安全性,是不是有了裂缝就不能放心地住下去了。而我们也不可能因为建筑物有了裂缝就放弃对该建筑物的使用,甚至重新建造,因此,对产生的裂缝进行检测与鉴定,就具有十分重要的意义。通过对这些裂缝进行准确合理的检测鉴定,可以达到以下目的:

1)可以确保各类房屋的住用安全;

2)可以促进城市危旧房屋的改造;

3)进行司法仲裁技术鉴定的作用。

由此可见,在实际工程中,会有大量的此类工作产生,据统计,在国家建设工程质量监督检验中心每年承接的检验鉴定工作中,结构构件裂缝问题及涉及该类问题的项目所占的比例超过每年检测鉴定项目总数的1/2。如此大的工作量,而现有的检测方法往往会使检测工作和检测后数据的处理显得十分繁琐,为此,我们必须开发出一种可以在检测现场快速记录原始数据,并且快速生成检测报告的方法,在满足市场需求的同时,保证检测质量,从而提高生产效率。

1 现有技术

现有的裂缝检测及报告生成过程,以南京工大建设结构检测部为例,首先,采用DJCK-2裂缝测宽仪(如图1所示),现场对裂缝的宽度进行读数并且将裂缝宽度在裂缝处标出,与此同时,根据房屋的建筑施工图图纸,在现场记录表上确定该裂缝所在的轴线位置,并绘制出裂缝的走势以及在关键位置标出裂缝的位置,完成现场检测之后,在计算机中,将现场手绘的图片再用CAD绘制一遍,这个绘制过程需要花费大量的精力,由于一个项目通常有几百户人家,会有大量现场检测的纸质原始记录,这些记录在检测结束后,需要花费大量时间进行整理,然后再输入电脑,这个过程相当于将整个工程再重新做一遍,尤其是很多由于温度变化等引起的表面裂缝,这些裂缝会在工程中大量出现,而这些裂缝的走势和位置,并不像大多数结构裂缝那样有大致的形式和几乎固定的位置,这些裂缝通常是千变万化的,所以在绘制检测报告的时候显得异常复杂和繁琐,大大增加了后期数据处理和报告生成的工作量,从而降低了工作的效率。再加上如此之大的数据量,非常容易在输入过程中产生错误,在完成检测报告之后,还需要花费大量的时间和人力对报告进行复核,所以工作效率非常低。

2 AutoCAD二次开发

AutoCAD是Autodesk公司推出的一款功能强大的供用户从事设计和绘制图形的专业软件,它为使用者提供了许多可以进行二次开发的平台,其二次开发的主要内容有:

1)编写各种Lisp文件用于实现某些具有特殊用户需要的命令,并且编写dcl配梁文件,以对话框的形式实现交互式的使用所编写的命令;

2)定制针对不同项目的系统菜单,通过编写MNU文件,实现对不同工作项目的不同操作界面的设置,同时也可运用交互式的输入方式调用CAD系统原有菜单,从而建立符合自己需求的工作空间;

3)对系统原有的Lisp文件进行修改,或者通过交互式的方法,在系统对话框中修改某些系统设置的路径,从而使得在下次启动CAD时,在原有CAD功能基础上加入新的初始化设置;

4)用户可根据自己需要,编写相关程序与CAD进行对接,从而实现对CAD的二次开发。

当前对于AutoCAD的二次开发的工具主要有:VBA,VisualLisp,ObjectARX以及.NET API等,这些开发手段各有特点,使用者可以根据自身需要,灵活选用不同的开发手段进行开发,在本文中,将选用VBA以及VisualLisp两种手段进行开发。

1)VisualLisp。

VisualLisp是一个完整的集成开发环境,是为加速AutoLisp程序开发而设计的软件开发工具,在该环境下,可快捷、高效地对CAD进行二次开发,对开发后的程序进行编译,可得到运行效率高、代码紧凑的应用程序,与此同时,可对源代码进行良好的保护。VisualLisp不但可以兼容AutoLisp程序,而且还扩充了许多新的功能,利用这些功能,可以进行各种工程的计算分析、定义新命令、驱动对话框、自动绘制复杂的图像,并且为CAD扩充更多的智能化、参数化功能。

2)VBA。

VBA即Microsoft office中的Visual Basic for Applications,在CAD中,集成了VBA的编辑器,从而为开发者提供了一种对CAD进行二次开发的选择,同时也为用户访问CAD中丰富的技术框架开辟了一条新的道路,VBA与AuotCAD通过强大的ActiveX进行结合,不但可以控制CAD的数据库,还可以使得CAD和Word,Excel等外部程序进行数据的交换,从而实现对CAD的二次开发。

3 工程实例

1)工作空间的定制。

首先使用VBA的菜单定制语言,针对裂缝检测的现场工作流程需要,重新定制了AutoCAD 2014的工作空间,其中,菜单新增了:初始化、构件、配件、零件、裂缝等菜单选项,在工具按钮中,添加了“工作环境初始化”“绘制裂缝”“标注裂缝”三个按钮,使得工程检测人员可以在现场快速绘制所需要的裂缝图像。

2)使用AutoLisp以及dcl配梁语言编制“标注裂缝”命令。

AutoCAD 2014允许用户自己定制一个dcl配梁对话框,这样的操作是目前最为流行的人机交互,它可以为使用者提供一个可视化环境,使操作更加快捷。本工程中,在标注裂缝时,需要人机交互输入裂缝宽度并且标注在指定位置上。输入窗口如图2所示。

具体代码如下:

lf:dialog{

label="裂缝参数";

:edit_box {label="裂缝宽度";

key="kd";

edit_width=20;

}

ok_cancel;

}

但是用dcl配梁语言来编写的对话框只是一个简单的界面描述,用户并不能单独依靠它完成显示和指令。只有利用AutoLisp程序来驱动它才能实现用户希望它达到的功能。

AutoLisp采用了与CommonLisp相近的语法及习惯约定,并吸收了Lisp语言的主要函数,同时增加了针对AutoCAD特点的许多功能,因此Lisp语言编程能够十分灵活的在AutoCAD的平台上很好的运用。

AutoLisp是以*lsp为扩展名的文本文件,源程序的编辑过程是:首先运行AutoCAD然后加载已编辑好的Lisp程序最后调用程序并运行函数。

在本工程中,实现标注裂缝的Lisp程序代码如下:

(defun c:lf(/ dcl_id pt1 pt2 pt3 kd)

(setq dcl_id (load_dialog "lf.dcl"))

(if (not (new_dialog "lf" dcl_id)) (exit))

(if (= kd nil) (setq kd (rtos 0.02 2 2)))

(set_tile "kd" "0.02")

(action_tile "kd" "(setq kd (atofvalue))")

(action_tile "accept" "(done_dialog)")

(action_tile "cancel" "(exit)(done_dialog)")

(start_dialog)

(unload_dialog dcl_id)

(setq pt1 (getpoint "选择标注起点:"))

(setq pt2 (getpoint "选择标注终点:"))

(command "line" pt1 pt2 "")

(setq pt3 (getpoint "选择标注位置:"))

(setq kd (rtos kd 2 2))

(command "text" pt3 350 "" kd)

)

4 结语

该插件的开发主要运用于建筑物表面裂缝的现场检测时的原始记录的采集与绘制,运用该软件,可以让工程技术人员在房屋安全监测鉴定的现场,利用平面电脑,快速记录和绘制检测的原始数据,使得过去需要花费大量时间的二次输入过程可以在现场就直接完成,从而快速的生成检测报告。

该软件基于AutoCAD平台,利用Win8操作系统提供的触摸功能,使得运用该软件,将不再使用过去现场纸质记录的手段,这样,不但可以省去大量的整理工作,更重要的是可以使得在检测数据记录和处理的过程中,减少不必要的人为因素的干扰,从而减少生成检测报告过程中的错误,提高生产效率。

该软件具有以下特点:

1)样板化。

该软件提供了在检测现场可以直接使用的CAD图形样板,采用该样板,可以在检测现场省去了对于初始化CAD后对图层、文字样式、标注样式等内容的设置,使得现场检测人员可以直接进行现场记录的绘制。

2)参数化。

使用该软件绘制检测报告中的裂缝示意图时,对使用到的常用构件,可以进行面向对象的参数化绘制,这样可以大大减少绘制时间,从而简化了现场绘制的过程,使得检测过程更加高效。

3)可视化。

对于常用构件的选择,该软件采用了可视化的方法,以幻灯片的形式,将技术人员现场绘制时所用的构件类型,非常直观的展现在了用户面前,让用户一目了然的可以选择到自己所需要的构件,从而可以加快绘图的速度,并且提高了绘图的准确率。

4)模块化。

该软件根据现场检测过程,将软件界面进行了友好界面的设计,使得软件的使用更加方便人机交互的过程,并且对CAD常用的快捷键进行了优化,使得使用者在使用过程中,可以根据自己的需要快速进行绘制从而提高绘制效率。将检测步骤进行了模块化的分类和整理,并且在此基础上将其进行标准化的管理,使得原始数据可以有效而快速的生成最终的检测报告,而每次使用到的新增模块,可以有效地记录下来,从而在使用过程中,可以将用到的构件库进行不断的扩充,为原始数据的积累提供保证。

[1] 李学志.Visual Lisp程序设计[M].北京:清华大学出版社,2006.

[2] 张 帆.AutoCAD VBA二次开发教程[M].北京:清华大学出版社,2006.

[3] 陈文贤.深入剖析AutoLisp[M].北京:北京学苑出版社,1994.

Secondary development of CAD in engineering test

LI Wu-yi ZHOU Ji

(CollegeofCivilEngineering,NanjingUniversityofIndustry,Nanjing211816,China)

In light of housing safety detection features including in-situ recording data, complex construction procedures and failures, the paper carries secondary development of CAD list formulation and AutoLisp, develops a set of suitable in-situ fast quick recording methods, realizes on-paper original record in the testing field, and makes pos data treatment faster. As a result, it improves the engineering testing efficiency and accuracy.

crack test, AutoLisp, VBA, secondary development

1009-6825(2014)34-0285-03

2014-09-26

李吾伊(1990- ),男,在读硕士; 周 佶(1963- ),男,硕士生导师,教授

TP311.52

A

猜你喜欢

该软件二次开发绘制
简单灵活 控制Windows 10更新更方便
浅谈基于Revit平台的二次开发
超萌小鹿课程表
浅谈Mastercam后处理器的二次开发
放学后
Flashfxp Password Decryptor
西门子Easy Screen对倒棱机床界面二次开发
在转变中绘制新蓝图
基于Pro/E二次开发的推土铲参数化模块开发
Allen & Heath推出GLD Editor控制软件