




已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
该例子在工具条创建一个状态命令,用户激活该命令后,根据提示依次选择草图,输入拉伸长度,点击确定完成一个拉伸特征的创建。通过该例子,可以熟悉零件文档的基本结构、获取草图工厂的方法,你还可以掌握如何获得草图支持面的方向。1. 创建对话框在名为CAAPadCreateCmd的Module中创建一个名为PadParamInputDlg的对话框,安装如下方式布局并在对话框中添加对应的控件:布局完成后在对话框外的空白处点鼠标左键,然后按CTRL+S进行保存,向导会自动更新对应的资源文件和.h以及.cpp文件。最终该对话框对应的布局代码如下:123456789101112131415161718192021222324252627282930void 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);_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:12345678910111213/获得对话框控件CATDlgEditor* PadParamInputDlg:GetEditorControl(int id)switch(id)case 1:return _EditorSketch;case 2:return _EditorOffset1;case 3:return _EditorOffset2;default: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)/ 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; /析构对话框确定按钮代理 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); /- /3. 定义转换 /- AddTransition(pSelSketchState, pClickOKState, IsOutputSetCondition(_pSelSketchAgent), Action(ActionMethod)&CAAPadCreateStCmd:SelectSketch); AddTransition(pClickOKState, NULL, IsOutputSetCondition(_pDlgOKAgent), Action(ActionMethod)&CAAPadCreateStCmd:CreatePad);关于状态命令的相关介绍参考第一章的基本命令使用部分内容,这里不再详细介绍。5. 结束命令函数ExitCommand/结束当前命令void CAAPadCreateStCmd:ExitCommand(CATCommand * iCommand, CATNotification * iNotification, CATCommandClientData iUsefulData) this-RequestDelayedDestruction();6. 选择草图SelectSketch/选择草图CATBoolean CAAPadCreateStCmd:SelectSketch(void* data) /1. 获取选择对象 CATBaseUnknown* pBaseUnknown = _pSelSketchAgent-GetElementValue(); _pSelSketchAgent-InitializeAcquisition(); /2. 将选择对象赋值给草图对象 _spSketchObj = pBaseUnknown; if(NULL_var = _spSketchObj) return CATFalse; /3. 获取编辑框指针 CATDlgEditor* pEditor = _pDlgInput-GetEditorControl(1); if(NULL = pEditor) return CATFalse; /4. 获取对象别名 CATIAlias_var spAliasObj = _spSketchObj; if(NULL_var = spAliasObj) return CATFalse; CATUnicodeString strSketchName = spAliasObj-GetAlias(); /5. 将别名显示到编辑框 pEditor-SetText(strSketchName); return CATTrue;7. 验证用户输入ValidateInput/验证用户输入CATBoolean CAAPadCreateStCmd:ValidateInput()/1. 获取编辑框用户输入的偏移长度CATDlgEditor* pEditor1 = _pDlgInput-GetEditorControl(2);if(NULL = pEditor1)return CATFalse;CATDlgEditor* pEditor2 = _pDlgInput-GetEditorControl(3);if(NULL = pEditor2)return CATFalse;/2. 将用户输入的字符串转换成浮点数CATUnicodeString strOffset();strOffset = pEditor1-GetText();strOffset.ConvertToNum(&_fOffset1);strOffset = pEditor2-GetText();strOffset.ConvertToNum(&_fOffset2);/3. 验证草图if(NULL_var = _spSketchObj)return CATFalse;return CATTrue;8. 创建拉伸体CratePad/创建拉伸体CATBoolean CAAPadCreateStCmd:CreatePad(void* data)/1. 重置按钮响应代理_pDlgOKAgent-InitializeAcquisition();/2. 验证输入数据if(!ValidateInput()return CATFalse;/3. 获取零件工厂if(NULL_var = _spSketchObj)return CATFalse;CATIContainer_var spContainer = _spSketchObj-GetFeatContainer();if(NULL_var = spContainer)return CATFalse;CATIPrtFactory_var spPrtFactory = spContainer;if(NULL_var = spPrtFactory)return CATFalse;/4.获取草图方向CATMathDirection mathDirect(0,0,1);CATISketch_var spSketch = _spSketchObj;if(NULL_var = spSketch)return CATFalse;CATISpecObject_var spSketchPlaneObj = spSketch-GetSupport();if(NULL_var = spSketchPlaneObj)return CATFalse;CATPlane_var spSketchPlane = spSketchPlaneObj;if(NULL_var = spSketchPlane)return CATFalse;double planePos3 = 0;CATMathPoint ptCenter;CATMathVector coordVector;spSketchPlane-GetNormal(ptCenter, coordVector);mathDirect.SetCoord(coordVector.GetX(),coordVector.GetY(),coordVector.GetZ();/5. 创建拉伸CATIPad_var spPad = spPrtFactory-CreatePad(_spSketchObj,_fOffset1,_fOffset2,mathDirect);if(NULL_var = spPad)return CATFalse;CATISpecObject_var spPadObj = spPad;if(NULL_var = spPadObj)return CATFalse;spPadObj-Update();/6. 更新零件特征CATIPrtContainer_var spPrtContainer = spContainer;if(NULL_var = spPrtContainer)return CATFalse;CATISpecObject_var spPrtObj = spPrtContainer-GetPart();spPrtObj-Update();return CATTrue;CATISketch接口的GetSuppo
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025河南陆军第八十三集团军医院招聘34人考前自测高频考点模拟试题及答案详解(各地真题)
- 2025福建漳州长运高中招聘21人模拟试卷附答案详解(典型题)
- 2025广东深圳大学人文学院李立教授团队博士后招聘1人模拟试卷含答案详解
- 2025广东佛山市顺德区乐从第一实验学校临聘教师招聘考前自测高频考点模拟试题及答案详解(历年真题)
- 2025湖南株洲市自然资源和规划局选聘模拟试卷及答案详解(名校卷)
- 2025广西北部湾大学招聘高层次人才53人模拟试卷及答案详解一套
- 2025河北秦皇岛市北兴企业管理咨询有限公司招聘派遣制人员4人考前自测高频考点模拟试题附答案详解
- 2025年甘肃省庆阳市西峰区招聘城镇公益性岗位20人考前自测高频考点模拟试题及一套答案详解
- 2025湖南长沙浏阳市审计局人员模拟试卷及答案详解(历年真题)
- 2025河南省中医院(河南中医药大学第二附属医院)招聘博士研究生64人模拟试卷附答案详解(模拟题)
- GB/T 45845.1-2025智慧城市基础设施整合运营框架第1部分:全生命周期业务协同管理指南
- 人教版七年级语文下册同步作文及范文
- 2025至2030中国智能卡行业市场深度调研报告
- 民族地区小学英语情境教学实践探索
- 统编版四年级上册语文9 古诗三首 雪梅 教学课件
- TSG Z7005-2015 特种设备无损检测机构 核准规则
- 2025年全国保密教育线上培训考试试题库附答案(完整版)参考答案详解
- 儿童超重或肥胖的规范化诊断与评估(2024)解读课件
- GB/T 45333-2025类金刚石薄膜球盘法测试类金刚石薄膜的摩擦磨损性能
- 2025年生猪屠宰兽医卫生检疫人员考试题(附答案)
- 中小企业培训体系建设与优化方案探讨
评论
0/150
提交评论