为了方便读者掌握ARX程序的编程方法,此处选用AutoCAD 2008作为开发平台、采用Microsoft Visual Studio 2008和ObjectARX2008为开发工具,创建一个简单的ObjectARX程序,该例子中包含了MFC对话框的创建。该程序的功能是用参数化方法绘制图3-1所示的离心泵叶轮轴面图。
图3-1 参数化绘图图例
1.建立项目文件
1)启动Microsoft Visual Studio 2008,选择“新建”菜单中的“项目”以打开“新建项目”对话框,如图3-2所示。
2)在“新建项目”对话框中的“项目类型”选择“Visual C++”,在列出的模块中选择“MFC DLL”。
3)在工程“名称”编辑框中输入所想要的工程名,本例输入“IMS”。
4)设置存放工程的文件夹位置,本例将工程的文件夹存放在“D:\”中,点击“确定”按钮,将调用“MFC DLL向导—IMS”中的“欢迎使用MFC DLL向导”对话框,如图3-3a所示。
图3-2 “新建项目”对话框
5)在该向导对话框中的“欢迎使用MFC DLL向导”对话框中,点击“下一步”按钮,调用“MFC DLL向导—IMS”中的“应用程序设置”对话框,在“DLL类型”中选择“使用共享MFC DLL的规则DLL(D)”选项,如图3-3b所示。
图3-3 MFC DLL向导
a)“欢迎使用MFC DLL向导”对话框 b)“应用程序设置”对话框
6)点击“完成”按钮完成工程的创建,自动生成了所建项目的文件,如头文件:IMS.h、Resource.h、stdafx.h;源文件:IMS.cpp、IMS.def、stdafx.cpp;资源文件:IMS.rc、IMS.rc2。
2.项目设置
1)从“项目”下拉菜单中,选择“IMS属性”以打开“IMS属性页”对话框;或在方案浏览器中选择工程IMS,右击弹出菜单,选择“属性”选项,也可为此工程调出“IMS属性页”对话框,如图3-4所示。
图3-4 “IMS属性页”对话框
2)单击“配置属性”,单击“常规”选项,将“输出目录”和“中间目录”选项中内容分别修改为“DEBUG”。
3)单击“CC++”中的“常规”选项,在“附加包含目录”选项中添加“C:Ob-jectARX 2008inc”(ObjectARX2008安装在C:ObjectARX 2008目录下),如图3-5所示。
图3-5 添加包含文件路径
4)单击“链接器”中的“常规”选项,在“输出文件”选项中,将输出文件的扩展名“$(OutDir)/IMS.dll”改为“$(OutDir)/IMS.arx”;在“附加库目录”选项中添加
“C:ObjectARX 2008lib”,如图3-6所示。
图3-6 修改输出文件名及添加库文件路径
5)单击“链接器”中的“输入”,在“附加依赖项”选项中添加库文件“rxapi.lib ac-db17.lib acge17.lib acad.lib acedapi.lib”,各文件之间用空格隔开,如图3-7所示。
图3-7 指定库文件
6)单击“确定”按钮完成项目的设置。
3.创建对话框
1)向项目文件中添加对话框资源。单击“解决方案资源管理器”中的IMS选项,选择“项目/添加资源”菜单项,在出现的对话框中选择“Dialog”条目,如图3-8所示。然后单击“新建”按钮,即可添加一个对话框。
2)对话框特性编辑。用鼠标右键单击对话框标题,从弹出菜单中选择“属性”进入属性对话框,选择“外观/Caption”选项,把对话框的标题(Caption)修改为“IMS参数化CAD”,选择“杂项/ID”选项,把对话框的ID号修改为“IDD_IMS”,选择“字体/Font(Size)”选项,把对话框的字体修改为“宋体(10)”,如图3-9所示。
图3-8 添加资源
图3-9 属性修改
3)创建类。在对话框的任一位置单击右键,从弹出菜单中选择“添加类”进入“MFC类向导”对话框,如图3-10所示。在对话框中输入类名“CIMSDLG”,“MFC类向导”对话框“.h文件”和“.cpp文件”选项中会出现“IMSDLG.h”和“IMSDLG.cpp”,然后单击“完成”按钮,将自动生成IMSDLG.h和IMSDLG.cpp文件。
图3-10 创建主对话框的类向导
4)控件的创建及特性编辑。打开“工具箱”,点击“对话框编辑器”,依次选择9个“Static Text”控件、9个“Edit Control”控件,拖入对话框中。控件特性的修改与修改对话框标题的方法一样。“Edit Control”控件的ID号依次为:IDC_D2、IDC_b2、IDC_Dj、IDC_dh、IDC_R1、IDC_R2、IDC_T1、IDC_T2、IDC_L。
5)添加变量。选中IDC_D2控件单击鼠标右键,从弹出菜单中选择“添加变量”进入添加成员变量向导对话框,如图3-11所示。选择“类别”选项中的“Control”和“变量类型”选项中的“CEdit”,在“变量名”选项中输入IDC_D2控件的变量名“m_D2”,点击“完成”按钮完成变量的添加。按照同样的方法添加其他Edit Control控件的成员变量。
图3-11 为IDC_L添加变量
6)添加控件事件。选中IDC_D2控件单击鼠标右键,从弹出菜单中选择“属性”进入属性对话框,点击“控件事件”选项,选择“CIMSDLG/EN_KILLFOCUS”添加消息处理函数OnEnKillfocusD2()。
选中“确定”按钮单击鼠标右键,从弹出菜单中选择“属性”进入属性对话框,点击“控件事件”选项,选择“CIMSDLG/BN_CLICKED”添加消息处理函数OnBnClickedOk()。
按照同样的方法添加其他Edit Control控件和“退出”按钮的控件事件。
7)向IMSDLG.cpp文件中添加代码。
在IMSDLG.cpp文件中定义全局变量:
CString D2,b2,Dj,dh,R1,R2,T1,T2,L;
double m_D21,m_b21,m_Dj1,m_dh1,m_R11,m_R21,m_T11,m_T21,m_L1;
向IDC_D2控件的消息处理函数OnEnKillfocusD2()中添加代码,用以处理对话框中的控件。代码如下:
添加其他控件的消息处理函数,代码与IDC_D2的添加代码相似。
添加ID_OK按钮的消息处理函数。
8)对话框初始化,如图3-12所示。
图3-12 对话框初始化(www.xing528.com)
9)添加头文件及定义点函数和层函数。
在IMSDLG.h文件中添加头文件,如下:
在IMSDLG.h文件中定义点函数和层函数,如下:
10)编写drawing()函数代码。在IMSDLG.cpp文件中编写函数代码如下,其中点的标识如图3-13所示。
图3-13 点的标识图
4.修改基本文件
为了增加与ObjectARX的接口,应对在建立项目文件时自动生成的IMS.cpp、IMS.def和stdafx.h三个文件进行修改。
(1)修改IMS.cpp文件 对于IMS.cpp文件,主要是增加与ObjectARX的接口语句,修改过程如下:
①打开IMS.cpp文件。
②在文件原有#include语句的后面,增加如下代码:
这句是主体函数中调用的主界面对话框的头文件。
③添加函数声明部分。
void initApp();
void unloadApp();
void IMS();
其中initApp()和unloadApp()函数是必须有的程序加载和卸载函数,IMS()是自定义的主体函数。
④建立主体函数IMS(),用以调用主对话框界面。
⑤增加initApp()函数,该函数借助AutoCAD 2008命令机制注册一个新的AutoCAD2008命令,这个命令将成为进入应用程序的一个入口。
其中,addCommand()为ObjectARX 2008库定义的acedRegCmds类成员函数,该函数向AutoCAD 2008命令堆栈中添加新的外部命令。函数中的第一个函数表示AutoCAD 2008的命令组名,是字符型;第二个函数表示全局命令名,是字符型;第三个参数是本地化命令名,是字符型;第四个参数表示用户定义的命令类型,ACRX_CMD_TRANSPARENT表示命令可作为透明命令使用(即在此命令工作期间,可调用其他AutoCAD 2008命令),而ACRX CMD_MODAL表示不能作为透明命令使用;第五个参数表示函数指针,指向执行命令时所调用的函数。
⑥增加卸载函数unloadApp()。
该函数将调用removeGroup()函数释放用addCommand()函数定义的命令组,函数中的唯一参数为命令组名,命令组名中相应的命令也被同时移走。
⑦增加入口点函数acrxEntryPoint(),它是AutoCAD 2008与IMS.ARX应用程序通信的入口点。同时,ObjectARX 2008内核通过它向IMS.ARX应用程序传递消息和向AutoCAD2008返回应用程序的状态码。
acrxEntryPoint()函数中的第一个参数msg,是AcRx类的数据成员,同时表示从Ob-jectARX 2008内核向IMS.ARX应用程序传递消息;第二个参数pkt是一个指向传递到不同函数(如加锁和解锁函数)的数据的句柄。AppRetCode为返回给AutoCAD 2008的状态码。Switch语句是用来处理来自AutoCAD 2008的各种消息,执行与消息有关的相应动作,并返回一个整形状态码。
(2)修改IMS.def文件 对于IMS.def文件,其内容修改如下:
LIBRARY "IMS"
EXPORTS
acrxEntryPoint PRIVATE
acrxGetApiVersion PRIVATE
(3)修改stdafx.h文件 对于stdafx.h文件,必须在其开头增加如下内容:
#ifdef_DEBUG
#define WAS_DEBUG
#undef_DEBUG
#endif
在stdafx.h文件的末尾增加如下内容:
#ifdef WAS_DEBUG
#define_DEBUG
#undef WAS_DEBUG
#endif
5.编译和链接应用程序
完成上述过程后,即可对程序进行编译和链接。可从“生成”菜单中选择“生成解决方案”菜单项,或直接按F7键,将自动对程序进行编译和链接,如果编译链接后程序没有任何错误,便可生成可执行文件IMS.ARX。
6.程序的加载、运行、卸载
点击AutoCAD 2008的“Tools”菜单下的“LoadApplication”菜单命令,在弹出的对话框中指定待装载的IMS.arx应用程序,这样程序就已经加载。
在AutoCAD 2008命令行中输入程序中所注册的命令名“ims”即可运行该程序。在Au-toCAD界面中将会弹出参数对话框如图3-14所示。在对话框中填好参数后,按确认键,就可以显示运行结果,如图3-15所示。程序运行结束后同样可以用“Tools”菜单下的“LoadApplication”命令来卸载程序。
图3-14 参数化对话框
图3-15 程序运行结果
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。