资源预览内容
第1页 / 共11页
第2页 / 共11页
第3页 / 共11页
第4页 / 共11页
第5页 / 共11页
第6页 / 共11页
第7页 / 共11页
第8页 / 共11页
第9页 / 共11页
第10页 / 共11页
亲,该文档总共11页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
该例子在工具条创建一个状态命令,用户激活该命令后,根据提示依次选择草图,输入拉伸长度,点击确定完成一个拉伸特征的创建。通过该例子,可以熟悉零件文档的基本结构、获取草图工厂的方法,你还可以掌握如何获得草图支持面的方向。1. 创建对话框在名为CAAPadCreateCmd的Module中创建一个名为PadParamInputDlg的对话框,安装如下方式布局并在对话框中添加对应的控件:布局完成后在对话框外的空白处点鼠标左键,然后按CTRL+S进行保存,向导会自动更新对应的资源文件和.h以及.cpp文件。最终该对话框对应的布局代码如下:12345678910111213141516void PadParamInputDlg:Build()/ TODO: This call builds your dialog from the layout declaration file/ -/CAA2 WIZARD WIDGET CONSTRUCTION SECTION_Label001 = new CATDlgLabel(this, Label001);_Label001 - SetGridConstraints(0, 0, 1, 1, CATGRID_4SIDES);_EditorSketch = new CATDlgEditor(this, EditorSketch);_EditorSketch - SetGridConstraints(0, 1, 1, 1, CATGRID_4SIDES);_Label003 = new CATDlgLabel(this, Label003);_Label003 - SetGridConstraints(1, 0, 1, 1, CATGRID_4SIDES);_EditorOffset1 = new CATDlgEditor(this, EditorOffset1);_EditorOffset1 - SetGridConstraints(1, 1, 1, 1, CATGRID_4SIDES);_Label005 = new CATDlgLabel(this, Label005);_Label005 - SetGridConstraints(2, 0, 1, 1, CATGRID_4SIDES);_EditorOffset2 = new CATDlgEditor(this, EditorOffset2);授课:XXX1718192021222324252627282930_EditorOffset2 - SetGridConstraints(2, 1, 1, 1, CATGRID_4SIDES);/END CAA2 WIZARD WIDGET CONSTRUCTION SECTION/CAA2 WIZARD CALLBACK DECLARATION SECTION/END CAA2 WIZARD CALLBACK DECLARATION SECTION2. 添加获取编辑框控件的成员方法为了方便命令类获取对话框编辑框控件,以获取或设置编辑框的内容,给对话框类PadParamInputDlg添加成员函数GetEditorControl:123456789/获得对话框控件CATDlgEditor* PadParamInputDlg:GetEditorControl(int id)switch(id)case 1:return _EditorSketch;case 2:return _EditorOffset1;case 3:return _EditorOffset2;授课:XXX10111213default:return NULL;3. 在命令类PadStateCmd添加成员变量下面是命令类CAApadCreateStCmd的头文件:class CAAPadCreateStCmd: public CATStateCommand /省略其它向导生成代码 /结束当前命令 void ExitCommand(); /选择草图 CATBoolean SelectSketch(void* data); /创建拉伸体 CATBoolean CreatePad(void* data); /验证用户输入 CATBoolean ValidateInput();private: /参数输入对话框 PadParamInputDlg* _pDlgInput; /草图选择代理 CATPathElementAgent* _pSelSketchAgent; /输入对话框确定按钮代理 CATDialogAgent* _pDlgOKAgent; /保存草图对象 CATISpecObject_var _spSketchObj; /第一方向偏移长度 double _fOffset1; /第二方向偏移长度 double _fOffset2;在构造函数对相关成员进行初始化:CAAPadCreateStCmd:CAAPadCreateStCmd() :CATStateCommand (CAAPadCreateStCmd, CATDlgEngOneShot, CATCommandModeExclusive)授课:XXX/ Valid states are CATDlgEngOneShot and CATDlgEngRepeat,_pDlgInput(NULL),_pSelSketchAgent(NULL),_pDlgOKAgent(NULL),_spSketchObj(NULL_var),_fOffset1(0.0),_fOffset2(0.0) /初始化对话框 _pDlgInput = new PadParamInputDlg(); _pDlgInput-Build(); _pDlgInput-SetVisibility(CATDlgShow); /添加创建直线对话框的消息回调函数 AddAnalyseNotificationCB(_pDlgInput, _pDlgInput-GetWindCloseNotification(), (CATCommandMethod)&CAAPadCreateStCmd:ExitCommand, (void*)NULL); AddAnalyseNotificationCB(_pDlgInput, _pDlgInput-GetDiaCANCELNotification(), (CATCommandMethod)&CAAPadCreateStCmd:ExitCommand, (void*)NULL);在析构函数添加相应资源释放的代码:CAAPadCreateStCmd:CAAPadCreateStCmd() /析构对话框 if(NULL != _pDlgInput) _pDlgInput-RequestDelayedDestruction(); _pDlgInput = NULL; /析构草图选择代理 if(NULL != _pSelSketchAgent) _pSelSketchAgent-RequestDelayedDestruction(); _pSelSketchAgent = NULL; /析构对话框确定按钮代理授课:XXX if(NULL != _pDlgOKAgent) _pDlgOKAgent-RequestDelayedDestruction(); _pDlgOKAgent = NULL; 4. 实现状态转换函数BuildGraph状态转换函数BuildGraph中实现了代理定义,状态定义和状态转换的定义:void CAAPadCreateStCmd:BuildGraph() /- /1. 定义代理 /- /1.1 草图选择代理 _pSelSketchAgent = new CATPathElementAgent(SelSketch); _pSelSketchAgent-AddElementType(CATISketch); _pSelSketchAgent-SetBehavior(CATDlgEngWithPSOHSO); /1.2 初始化确定按钮代理 _pDlgOKAgent = new CATDialogAgent(OKAgent); _pDlgOKAgent-AcceptOnNotify(_pDlgInput, _pDlgInput-GetDiaOKNotification(); /- /2. 定义状态 /- /2.1 选择草图 CATDialogState* pSelSketchState = GetInitialState(选择一个草图); pSelSketchState-AddDialogAgent(_pSelSketchAgent); /2.2 点击确定 CATDialogState* pClickOKState = AddDialogState(输入拉伸长度并点击确定); pClickOKState-AddDialogAgent(_pDlgOKAgent); /-
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号