CATIA CAA 二次开发(5) 新建对话框

引言

简单的功能,直接点击按钮就完成了。比如“保存”命令。而复杂的功能,往往需要借助对话框实现。那么这一节,给大家介绍怎么用对话框来完成创建线的命令。

操作

  1. 在FirstModule新建,IDDTemplates.
    在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
2. 点击“视图-工具箱”,我们就可以对对话框进行编辑,增加控件等。
在这里插入图片描述

在这里插入图片描述

  1. 增加相关代码,右键点击对话框,查看.h 和 .cpp文件。注意,必须要通过这种途径打开的.h 和.cpp文件,才能对其进行有效更改。如图所示,不能更改的地方都用灰色高亮了。能改的地方只有在 begin of user code 和 end of user code 之间。若采用其他途径打开,则更改的地方不会应用,并且关闭对话框后,不会保存更改痕迹。
    在这里插入图片描述

在这里插入图片描述

  1. 把新建对话框添加到FirstCmd的构造函数中。这样就可以在点击命令的时候,弹出对话框。
#include "../LocalGenerated/win_b64/FirstDlg.h"

FirstCmd::FirstCmd() :
CATStateCommand ("FirstCmd", CATDlgEngOneShot, CATCommandModeShared)
//  Valid states are CATDlgEngOneShot and CATDlgEngRepeat
,_Indication(NULL)
{
	FirstDlg * pDlg = new FirstDlg((CATApplicationFrame::GetApplicationFrame())->GetMainWindow(), "DlgMeasure");
	pDlg->Build();
	pDlg->SetVisibility(CATDlgShow);
}

在这里插入图片描述

  1. 实现相关响应。上述对话框,点击“X”是没反应的。那是因为我们还没设置回调函数。怎么设置回调。打开对话框文件,点击callbacks view,点击相关控件,即可创建对应回调函数。
    在这里插入图片描述

    创建的点击OK的回调函数如下。点击后获得两个点的坐标,并创建一条直线。相应头文件和.mk文件,可以参照第4篇[[4. 新建命令]]中查看输出来完成。

void FirstDlg::FirstDlg_OKBtnPushed(
      CATCommand           * ipControl,
      CATNotification      * ipNotification,
      CATCommandClientData   iUsefulData)
{

// Begin of User Code
	// 1. Get value
	double x1 = _X1->GetValue();
	double y1 = _Y1->GetValue();
	double z1 = _Z1->GetValue();
	double x2 = _X2->GetValue();
	double y2 = _Y2->GetValue();
	double z2 = _Z2->GetValue();
	// 2. create line
	CATFrmEditor * pEditor = CATFrmEditor::GetCurrentEditor();
	CATDocument * pDoc = pEditor->GetDocument();
	CATIContainerOfDocument * pCtnDoc = NULL;
	pDoc->QueryInterface(IID_CATIContainerOfDocument, (void**)&pCtnDoc);
	CATIContainer * pCtn = NULL;
	pCtnDoc->GetSpecContainer(pCtn);
	CATIGSMFactory_var pFac = pCtn;
	double pnt1[3] = { x1, y1, z1 };
	double pnt2[3] = { x2, y2, z2 };
	CATIGSMLine_var line = pFac->CreateLinePtPt(pnt1, pnt2);

	// 3. update
	CATIGSMProceduralView_var view = line;
	view->InsertInProceduralView();
	CATISpecObject_var spLine = line;
	spLine->Update();

// End of User Code

}
  1. 编译通过后,新建part,点击命令,输入坐标,点击确定,获得直线。
    在这里插入图片描述

注意

在对话框相关的文件中,请勿出现中文,否则会变成乱码。包括:.DSGen, .h, .cpp文件。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值