资源预览内容
第1页 / 共6页
第2页 / 共6页
第3页 / 共6页
第4页 / 共6页
第5页 / 共6页
第6页 / 共6页
亲,该文档总共6页全部预览完了,如果喜欢就下载吧!
资源描述
ObjectARX开发环境下的AutoCAD对话框设计袁梅 李亚萍 张竟武汉大学城市建设学院,湖北 武汉 430072摘要:在ObjectARX开发环境下,AutoCAD支持两种格式的对话框:PDB对话框和Windows机制的对话框.从简单实例出发,本文介绍了这两种格式的对话框设计.关键词:ObjectARX;AutoCAD;PDB;MFC;对话框1引言ObjectARX是Autodesk公司为AutoCAD配置的面向对象的C+编程环境.在ObjectARX环境下开发的应用程序本质上是一个Windows环境下的动态连接库DLL,它共享AutoCAD的地址空间并能直接利用AutoCAD核心数据库结构和代码,能在运行期间实时扩展AutoCAD的功能.由于其功能强大、速度快、安全性好,目前已成为AutoCAD最重要的开发工具.在CAD软件开发中,对话框的设计是软件开发者非常关心的问题之一.AutoCAD除了使用命令行与用户进行交互外,还可使用对话框.对话框是一种边界固定的窗口,也是一种最先进、最流行的人机交互界面.运用对话框可以方便地实现程序设计时的数据传输和信息传输,所以在当今的几乎所有的软件都要用到对话框界面与用户交流.在CAD的二次开发中,可以采用两种方式使用对话框技术:,一种是PDB格式,即使用AutoCAD系统本身提供的可编程对话框技术,另一种是使用Windows机制的对话框设计技术.以下分别介绍了以ObjectARX为开发工具、在Visual C+ 6.0集成开发环境中AutoCAD2000的这两种格式的对话框设计.2 基于AutoCAD PDB的对话框设计PDB是可编程对话框Programmable Dialog Box的缩写,是从R12开始提供的一种用于与用户交互的可视化界面.开发PDB对话框的关键有两个:,一是掌握DCL语言,二是编写ObjectARX驱动程序.许多已使用DCL对话框的ADS程序,只需对编程接口稍作修改就可移植到AutoCAD2000平台上,并且ObjectARX 2000向下兼容ADS,提供了与之对应的全局函数ADSRX,因此完全可在ObjectARX2000中采用ADSRX函数进行开发.PDB对话框由对话框定义文件和驱动程序两部分组成.对话框定义文件用于定义对话框的外观,包括对话框的风格、位置、尺寸、内部控件与控件初值等.对话框驱动程序用于管理对话框的显示、与用户的交互、关闭以与获取对话框中控件值.2.1 对话框定义文件对话框定义文件是一种文本文件,其后缀为.dcl,它借助对话框控制语言Dialog Control Language,简称DCL来定义对话框的外观.DCL是Autodesk公司创建的专门用于生成对话框的命令语言.在用DCL定义对话框时,对话框中的单一部件称为控件,控件的布局、外观和行为借助于控件的属性而规定.对话框采用树型层次结构表示法,树的根节点为对话框本身,在DCL中称为dialog,树的叶节点可由各种控件和控件组构成,装配这些控件的过程就是定义对话框的过程,对话框是控件的有机组合.AutoCAD PDB模块提供了各种预定义的控件、控件组,以与控件的属性.事实上,编写DCL文件就是调用这些控件,并设置控件的属性.下面给出图1所示对话框的DCL文件Mypdb.dcl:dcl_settings:default_dcl_settings audit_level=0;Mypdb : dialog /定义名为Mypdb的对话框 label = PDB对话框示例; /对话框标签 :row /定义一个行控件 :boxed_column /定义一个带框列控件 label=请输入岔管参数; /带框列标签 :edit_box /定义一个编辑框 label=主管进口半径R1:; /编辑框的标签 key=K1; /编辑框的关键字,由驱动程序使用/定义其它几个编辑框,代码略 :image /定义一个图象控件 key=image; width=25; height=9; color=graphics_background; ok_cancel; /定义OK和CANCEL按钮 /*. MYPDB.DCL 文件结束 .*/其中OK_CANCEL按钮是从AutoCAD的BASIC.DCL中自动引用来的按钮.对话框定义文件可用任意文本编辑器进行编辑.也可在Visual C+集成开发环境中,单击File|NEW菜单,在弹出的对话框中选择File选项卡,选择Text File,不要核选Add to project项,输入文件名为Mypdb.dcl,存放位置可选与对话框驱动程序所在的项目文件路径相同,单击OK.2.2 驱动程序对话框必须利用驱动程序才能发挥作用,驱动程序由主调用函数和回调函数组成.主调用函数用于装入、显示、交互以与清除对话框;回调函数一般用于对对话框中各控件的值进行提取等操作.ObjectARX提供了一系列用于操作AutoCAD PDB对话框的库函数,它们均以ads_开头.主调用函数与ObjectARX应用程序中的用户函数融为一体,在需要对话框的位置上,加入调用对话框与处理对话框结果的相关函数即可.回调函数一般单独给出,专用于操作对话框中的各控件,常常在函数名前加CALLB以示区别CALLB实际上是一个空字符,并且它的返回值为void.一般对应于一个对话框有多个回调函数.下面给出图1所示对话框的驱动程序Mypdb.cpp:int drive_main ads_hdlg hdlg; /定义对话框句柄int dcl_id; /对话框文件标识符 int dlg_status; /对话框的状态值 ads_load_dialog;/将对话框文件Mypdb.dcl调入内存 ads_new_dialogMypdb,dcl_id,0,&hdlg ;/显示对话框 ads_action_tilehdlg, accept, ok_cb;/*将OK按钮与回调函数ok_cb相关联 ads_dimensions_tile; /显示幻灯片 ads_start_image; ads_slide_image; /幻灯片名为MSLD.SLD ads_end_image; ads_start_dialog; /启动对话框,让用户与对话框进行交互 ads_unload_dialog; /从内存中卸掉对话框文件 if return RTERROR; return RTNORM; void CALLB ok_cb /回调函数 char tbuf80; ads_get_tiledialog, K1, tbuf, MAX_TILE_STR; R1=atof; /字符串转化为双精度浮点数 acutPrintf; . /获取各控件的值,送入相应的变量ads_done_dialogdialog,1; /正常关闭对话框 以上只给出了主调用函数drive_main和回调函数print_cb、ok_cb的部分代码,相当于ObjectARX应用程序中的用户程序主体函数部分,Mypdb.cpp中头文件部分、函数声明部分和接口函数部分和一般的ObjectARX应用程序要求相同,不再写出.必须注意,头文件中一定要有#include adsdlg.h.在Visual C+ 6.0中编译Mypdb.cpp,生成Mypdb.arx文件,打开AutoCAD2000加载Mypdb.arx文件,输入相应的外部命令,则弹出图1所示的对话框.在对话框中输入参数,点击OK按钮,在AutoCAD的命令提示行会显示刚才输入的参数值,并关闭对话框.3 基于MFC的用户界面设计Microsoft基础类库给软件开发者提供了一种便捷快速建立标准的用户界面的方法.ObjectARX开发环境也提供了一系列基于MFC的用户界面类,我们可以使用这些类设计Windows风格的对话框.使用Windows对话框的ObjectARX应用程序将使自己的界面与AutoCAD内建对话框界面完全一致,且可与其它Windows应用程序紧密集成在一起,共享Windows的各种资源,而且程序的维护也非常方便.在ObjectARX应用程序中使用MFC最明显的优点是可以充分利用MSVCMicrosoft Visual C+开发环境提供的先进技术和工具,实现程序界面的可视化设计.Windows对话框也是Autodesk极力推荐开发者使用的对话框.3.1 AdUi与AcUi类库在ObjectARX中,由Autodesk提供的与用户界面UI有关的MFC系统分为两个类库:一个称为AdUi,它是一个MFC扩展动态库,用于扩展某些与UI有关的MFC类.这个库是为了使用AutoCAD和其它Autodesk产品而开发的,它包含了核心功能.另一个称为AcUi,它是在AdUi架构基础上建立的,专门用于AutoCAD,提供AutoCAD专用的外观和特性.在使用MFC建立ObjectA
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号