基于ObjectARX的重力式挡土墙CAD系统开发

资源类型:pdf 资源大小:402.00KB 文档分类:工业技术 上传者:郭书巧

相关文档

批量下载下列文档

文档信息

【作者】 陶铁铃  陈敏林 

【关键词】重力式挡土墙 ObjectARX AutoCAD 

【出版日期】2005-03-30

【摘要】介绍了基于ObjectARX的重力式挡土墙CAD系统的主要功能,并讨论了该程序的实现方法与特点。采用该系统可以提高设计工作效率并可实现挡土墙的优化设计

【刊名】湖北水力发电

全文阅读

1 前言在水利枢纽工程中 ,特别是水闸枢纽工程 ,挡土墙的工程量在总工程量中占有很大的比重 ,在铁路、公路和矿山等工程中 ,也广泛采用挡土墙这类建筑物。传统的挡土墙设计通常是通过查表或进行手工计算 ,这是一个较为繁琐、重复的过程。因此 ,将CAD技术引入挡土墙设计 ,不仅可以使繁琐的重复劳动由计算机完成 ,而且还可提高计算精度和准确度 ,也便于快速地进行多种方案选择和比较 ,提高设计者的工作效率。笔者通过对挡土墙设计与参数化绘图一体化技术的研究 ,开发了基于ObjectARX 2 0 0 0的挡土墙CAD系统。利用该系统可在AutoCAD 2 0 0 0环境下实现计算机辅助挡土墙的设计与绘图一体化。2 设计依据及计算方法挡土墙在墙后填土压力和其他荷载作用下 ,必须满足整体稳定性和结构的强度要求。其设计包括墙身基本尺寸选择、土压力及其内力计算、稳定性验算、地基承载力验算、墙身结构强度验算等。〗HS1 5〗2 .1 土压力的计算Fa=12 γtHt2 Ka式中 :Fa———作用在挡土墙上的主动土压力 (kN/m) ,其作用点距墙底为 Ht3,作用方向与水平面成 (δ +ε)夹角 ;γt———挡土墙后填土重度 (kN/m3) ,地下水位以下取浮重度 ;Ht———挡土墙高度 (m) ;Ka———主动土压力系数 ;t———挡土墙后填土的内摩擦角 (°) ;ε———挡土墙后背面与铅直面的夹角 (°) ;δ———挡土墙后填土对墙背的外摩擦角 (°) ;β———挡土墙后填土表面坡角 (°)。土压力计算简图见图 1。图 1 土压力计算简图2 .2 挡土墙稳定计算2 .2 .1 土基上挡土墙的稳定计算(1)挡土墙基底应力验算要求 :①地基平均应力不大于地基允许承载力 ;②地基最大应力不大于 1.2倍的地基允许承载力 ;③地基应力不均匀系数不大于允许值。(2 )挡土墙的抗滑稳定安全系数不小于规定的允许值。2 .2 .2 岩基上挡土墙的稳定计算(1)挡土墙基底最大应力不大于地基允许承载力。(2 )基底面的抗滑稳定安全系数不小于规定的允许值。(3)挡土墙的抗倾覆安全系数不小于规定的允许值。2 .3 挡土墙截面强度验算一般选取 1~ 2个控制截面进行强度验算 ,通常选墙身靠近基础的截面和另一中上部截面。重力式混凝土挡土墙的墙体结构 ,按偏心受压构件进行强度验算。主要包括压应力验算、拉应力验算和剪应力验算。挡土墙CAD系统程序设计流程见图 2。图 2 挡土墙设计程序流程图3 系统开发和研制3.1 系统开发平台和工具重力式挡土墙CAD系统以Windows操作系统作为软件支撑平台 ,以VisualC++6 .0和ObjectARX2 0 0 2作为开发工具。VisualC++6 .0是运行于Windows上的交互式可视化集成开发环境 ,集程序的代码编辑、编译、连接、调试等于一体 ,给编程人员提供了一个完整而又方便的开发界面和许多有效的辅助开发工具。ObjectARX是AutoDesk公司推出的新一代功能强大的AutoCAD二次开发工具 ,其ARX编程采用面向对象的C++应用程序机制 ,与以前推出的ADS和Au toLISP相比 ,具有速度快、安全性好的特点 ,必将逐步取代AutoLISP和ADS ,成为AutoCAD二次开发的最重要工具。该工具利用类的概念封装了AutoCAD中的各类信息 ,使得应用程序能直接存取AutoCAD的图形数据库、图形系统和命令 ,甚至直接调用AutoCAD的核心代码。ARX程序实质上是一个动态链接库 ,与Auto CAD系统之间通过Windows的消息传递机制直接通信 ,并与AutoCAD共享同一个地址空间 ,能直接操纵AutoCAD的数据结构。ARX程序可以充分利用Win dows的资源、MFC类库以及VisualC++可视化编程语言和工具 ,方便、高效地设计具有Windows风格的CAD应用程序 ,ARX程序还可以创建新的类 ,这些类可以为其它程序共享 ,从而充分利用面向对象编程的优点。ObjectARX作为AutoCAD系统的第三代程序开发工具 ,和早期的ADS、ADSARX、LISP以及现在的VBA、VisualLISP相比都有无可比拟的优越性 ,主要表现在 :(1)全面支持面向对象的C++编程 ,能充分利用C++编程方法的一切优点 ;(2 )ObjectARX应用程序本身就是一个动态链接库 ,它共享AutoCAD的地址空间 ,并可通过多种方式调用AutoCAD命令和函数 ,应用程序中的命令和Auto CAD的内部命令在形式上没有什么区别 ;(3)ObjectARX应用程序可以直接访问AutoCAD的数据结构和图形系统 ,可以说在AutoCAD编辑环境下的所有动作 ,在应用程序中都可实现 ,在AutoCAD编辑环境下不能实现的行为 ,也可以用应用程序实现 ;(4)利用ObjectARX ,可充分利用MFC的网络编程功能 ,支持异地协作设计。3.2 MFC与ARX结合开发重力式挡土墙CAD系统(Dangtu)  自推出Windows以来 ,AutoCAD的二次开发者一直在努力寻求一种能使应用程序既具有Windows的友好界面又不失AutoCAD强大的图形处理功能的方法。ARX的推出使得开发者们如愿以偿 ,它既可以利用MFC ,又可与ARX的SDK结合来进行AutoCAD的二次开发3 .2 .1 系统的对话框实现技术在Windows环境下 ,对话框作为一种方便实用的人机交互界面 ,使用频率非常高。很难想象用户会喜欢使用一个没有考虑用对话框作为交互界面的重力式挡土墙CAD软件。因此 ,为了方便地实现挡土墙设计的交互设计 ,漂亮、实用且功能强大的对话框对重力式挡土墙CAD系统是必不可少的。以前对AutoCAD的二次开发 ,主要是用由AutoCAD本身提供的可编程对话框工具 (PDB)来实现对话框的界面设计。这种落后的界面设计方法表现形式单一 ,只能用DCL文件形式来描述对话框 ,缺乏直观的视觉效果。ObjectARX环境提供了一个组类 ,使开发者能够创建基于MFC的用户界面 ,设计Windows风格的对话框 ,其外观与内建于AutoCAD的用户界面完全相同。Autodesk也极力推荐开发者使用这种Windows对话框。在ObjectARX中 ,由Autodesk提供的与用户界面(UI)有关的MFC系统分为Adui和Acui两个类库。Adui是一般库 ;Acui则提供AutoCAD专用的外观和特性。要在基于MFC的应用程序中使用AdUi,VisualC++源文件必须包含Adui.h文件 ,链接时必须与adui15 .lib链接。同样 ,要在MFC的应用程序中使用Acui,在VisualC++源文件中必须包含adui.h及acui.h ,链接时必须与adui15 .lib和acui15 .lib相链接。Adui和Acui可提供实现下列功能的类 :·对话框尺寸变更·标签对话框·对话框数据记忆·对话框与AutoCAD图形编辑器的交互·容易使用的位图按钮·对话框和控件支持标准的工具提示·对话框和控件支持文本提示·定制消息 ,包括数据确认·显示并允许选择多个AutoCAD特定条目的组合框·AutoCAD特定的控制条·特殊的编辑控件首先在VisualC++环境下建立一个名为“Dangtu”的ObjectARX 2 0 0 2AppWizard开发项目。然后利用资源编辑器中的控件工具栏向对话框加入GroupBox(组框 )、StaticText(静态文本框 )、EditBox(编辑框 )、RadioButton(单选按钮 )、Button(按钮 )及Picture(图片 )等控件。单选按钮的使用使得用户在选择荷载组合、水闸级别和地基类型等条件时非常方便 ,图片控件显示了挡土墙的示意图 ,使用户在输入挡土墙基本尺寸时一目了然 ,在结果显示区中可以显示出稳定计算成果 ,如挡土墙上水平和垂直方向上的合力大小 ;基底最大、最小应力及其比值 ;抗滑、抗倾覆稳定安全系数等 ,并同时完成与设计规范控制标准相对应的比较和评价 (图3)。利用这种程序设计技术 ,使得人机对话界面的表现形式更符合用户的使用要求。该程序还可方便地修改各项参数 ,进行直立、仰斜、俯斜等各类重力式挡土墙的设计。3.2 .2 系统参数化绘图技术参数化绘图就是将图形的尺寸与一定的设计条件相关联 ,即将图形的尺寸看成是设计条件的函数 ,当设计条件发生变化时 ,图形尺寸便会随之得到相应更新。挡土墙CAD系统利用ObjectARX与VisualC++6 .0相结合 ,根据挡土墙设计得到的结果作为参数 ,调用直线等绘图子函数自动绘制挡土墙图 ,系统主要分为参数化绘图模块和智能化辅助模块。参数化绘图模块完成直线等二维实体的创建工作 ;智能化辅助模块主要完成绘图比例、尺寸标注样式、字体样式等的设置工作。(1)绘制挡土墙图形一幅AutoCAD图形就是一个数据库 ,图形上的所有对象分别对应着数据库中的一条记录。从Objec tARX观点来看 ,创建直线、圆等实体就是往数据库的块表记录中加入对象信息。自动绘制直线代码如下 :AcDbLine pLine =newAcDbLine(pt1,pt2 ) ;/ /利用实体构造函数创建直线对象AcDbDatabase pCurDb ;/ /声明一个数据库对象AcDbBlockTable pBlockTable ;/ /声明一个块表对象pCurDb =acdbHostApplicationServices() - >working Database() ;/ /获取数据库指针pCurDb - >getSymbolTable (pBlockTable ,AcDb ::kForRead) ;/ /往预定义的块表记录中添加实体AcDbBlockTableRecord pBlockTableRecord ;/ /获取块表的指针pBlockTable - >getAt (ACDB_MODEL_SPACE ,pBlockTableRecord ,AcDb ::kForWrite) ;/ /打开块表记录pBlockTable - >close() ;/ /关闭块表AcDbObjectIdId ;/ /取线型的ID号pBlockTableRecord - >appendAcDbEntity (Id ,pLine) ;/ /将实体写入块表记录pBlockTableRecord - >close() ;/ /关闭块表记录pLine - >close() ;/ /关闭实体对象(2 )设置文字风格打开字体风格表 (AcDbTextStyleTable) ,用new命令新建 1条字体风格记录 ,设置记录的字体、字高等变量 ,然后调用函数AcDbTextStyleTable ::Add()向字体风格表中加入该记录。(3)设置尺寸标注样式基本步骤同 (2 ) ,只是根据不同的需要 ,设置的变量可能不同。通常需设置的变量有 :DIMADEC (角度标注精度 ) ,DIMTXT(文字大小 ) ,DIMLFAC(标注尺寸与实际尺寸比例 )等。运行“Dangtu .arx”程序需要启动AutoCAD2 0 0 2 ,选择“工具”菜单下的“加载应用程序”命令 ,或在Auto CAD2 0 0 2的Command下用apploaddangtu .arx命令 ,在弹出对话框中加载dangtu .arx应用程序。加载后输入在ObjectARX2 0 0 0应用程序中注册的命令 (dangtu) ,弹出图 3所示主界面 ,计算结果满足要求后 ,点击“画图”按钮 ,即在AutoCAD中自动显示挡土墙设计断面图形 ,设计人员即可直接保存或打印出设计图 ,免去了手动绘图的繁琐。4 挡土墙CAD系统的主要功能重力式挡土墙CAD系统的主要功能如下 :(1)用户根据工程实际情况自主选择水闸级别、地基类型、荷载组合等作为确定各种计算参数和稳定控制标准的依据。(2 )用户自主选择挡土墙截面尺寸参数和材料参数。

1 2

问答

我要提问