前言
通过ObjectArx实现在AutoCad2020中自定义选项卡,点击选项卡后弹出一个模态对话框来输入一条直线起始点与终点的坐标
一、创建自定义选项卡
参考文章:AutoCAD2020自定义选项卡https://blog.csdn.net/caiquantao/article/details/141350818?spm=1001.2014.3001.5501
二、使用ObjectArx2020向导创建项目
参考文章:创建ObjectArx2020项目https://blog.csdn.net/caiquantao/article/details/141341771?spm=1001.2014.3001.5501
三、创建模态对话框Dialog
1.右击解决方案>>添加>>资源>>Dialog>>新建
2.修改Dialog的标题跟ID
3.拖拽编辑框来输入直线起始点跟终点的X,Y,Z坐标
拖拽完后的效果图如下
4.再进行文字跟编辑框相应修改
5.点击保存,保存Dialog
四、创建ArxWizMFCSupport
1.右击解决方案>>添加>>新建项
创建完成后目录结构会多出两个文件,一个头文件一个源文件
五、新建一个文件,名为TabControl
这个文件的作用主要是把对应选项卡命令跟Dialog用代码绑定,告诉程序点击哪个选项卡打开哪个Dialog
1.右击解决方案>>添加>>类
2.分别修改TabControl的头文件跟源文件
TabControl.h代码如下
#pragma once
class TabControl
{
public:
static void initApp();
static void unloadApp();
};
TabControl.cpp代码如下
#include "StdAfx.h"
#include "resource.h"
#include "TabControl.h"
#include "TestLineDialog.h"
void OpenCLineDialog();
void TabControl::initApp()
{
// 注册command
//创建直线命令
acedRegCmds->addCommand(L"Tab", L"CTestLine", L"CTestLine", ACRX_CMD_TRANSPARENT, OpenCLineDialog);
}
void TabControl::unloadApp() {
// 移除命令组
acedRegCmds->removeGroup(L"Tab");
}
//打开创建直线Dialog
void OpenCLineDialog() {
CAcModuleResourceOverride resOverride;
CTestLineDialog theDialog;
theDialog.DoModal();
}
3.随后修改acrxEntryPoint.cpp文件,修改内容如下
4.点击VisualStudio菜单的生成解决方案
如果有下图一样的报错
右击解决方案>>属性
重新生成
六、测试效果
在AutoCad命令中输入appload加载项目生成的arx文件,arx生成目录详见VisualStudio的输出控制台
操作效果如下