版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、中考作文素材第1页,共30页。ICAPICOMTest示例位置:CAXASOLID安装目录SDKSamplesC+ICAPICOMTest 功能介绍: ICAPICOMTest add-in生成两个工具条:ICAPIComTest1和ICAPIComTest2。 工具条ICAPIComTest1包含三个按钮,第一个按钮演示处理从UI选择管理器中得到的信息;第二个按钮演示拾取回调环;第三个按钮演示RayTest,当点击该按钮时,会弹出一个对话框,要求输入视线(Ray)的起点、方向、大小和视线穿过对象的最大值以及实体的种类。确定后,如果一个面被穿过,将显示它的种类、穿过的位置和法线方向。工具条IC
2、APIComTest2包含两个按钮,第一个按钮以列表的形式显示当前设计环境(Scene)的所有外部关联;第二个按钮显示设计环境中的BOM-type零件列表。第2页,共30页。主要要点程序内容概要1.系统初始化STDMETHODIMP CMyAppAddin:InitSelf(IZAddinSite * piAddinSite)AFX_MANAGE_STATE(AfxGetStaticModuleState();ASSERT(m_spiAddinSite = NULL); 在初始化过程中,主要进行系统环境的初始化和添加工具条。第3页,共30页。主要要点程序内容概要2、处理从UI选择管理器中得到的
3、信息1)、判断是否有选中的对象:第一个工具条的第一个按钮开始的时候未被激活,当鼠标点中了对象时,此按钮才被激活。相应的函数如下:static int UpdateSelTest()VARIANT_BOOL bYes;hr = spiSelMgr-SelectionsAvailable(&bYes);if(bYes = VARIANT_TRUE)return 1; /对象被选中,按钮被激活第4页,共30页。主要要点程序内容概要2)、点击第一个工具条的第一个按钮即处理从UI选择管理器中得到的信息,相应的函数为DoSelTest()。 DoSelTest()HRESULT hr = spiBaseA
4、pp-get_ActiveDoc(&spiActiveDoc);HRESULT hr = spiSceneDoc-get_SelectionMgr( &spiSelMgr);spiSelMgr-GetSelectedElements(&vElements);/得到选中的元素第5页,共30页。主要要点程序内容概要3、拾取回调环。建立回调环的过程如下:1、通过系统设计环境文档spiSceneDoc得到选择管理器接口指针 m_spiSelMgr。2、利用m_spiSelMgr创建交互接口指针m_spiInteractor。3、由m_spiInteractor得到选择事件接口指针spiSelectEv
5、ents。4、由spiSelectEvents设置选择事件过滤器选项。5、创建应用程序的交互事件接口m_pInteractorEventsSink。6、利用函数SetAdvise()对交互事件接口进行注册。7、同理创建应用程序的选择事件接收器对象pSelectEventsSinkObj,并注册。第6页,共30页。主要要点程序内容概要建立回调环的函数如下:BOOL CSelFilterDlg:SetupLoop(long filterlist, eZSelectionType currFilter)hr = spiSelectEvents-SetSelectionFilterChoices(fi
6、lterlist, currFilter); /设置选择过滤器选项hr = m_pInteractorEventsSink-SetAdvise(this, spiUnk);/注册m_pInteractorEventsSink-m_pSelectEventSink = pSelectEventsSinkObj;/建立应用程序与设计环境的联系第7页,共30页。主要要点程序内容概要3、演示RayTest, 相应的函数是:static void DoRayTest()spiRayResult-get_HitElement(&spiHitElement);/得到视线穿过的对象spiRayResult-g
7、et_HitPoint(&spiHitPoint);/得到视线穿过对象的点.spiRayResult-get_NormalDirection(&spiHitDir);/得到实现所穿过对象的点的法线方向第8页,共30页。主要要点程序内容概要4、显示当前设计环境(Scene)的所有外部关联,相应的函数为:staticvoid DoLinksInfo()/得到设计环境的关联文档信息spiSceneDoc-GetLinksInfo(&vDocs);/得到关联文档的文件名spiLinkedDoc-get_Name(&DocName);第9页,共30页。主要要点程序内容概要5、显示设计环境中的BOM-ty
8、pe零件列表,通过点击按钮,弹出零件列表对话框。在此对话框类的函数Create(UINT nID, CWnd * pWnd)里,通过循环调用函数FillRow(IZElement * spiElem, HTREEITEM hParent, BOOL bIsDrawing)将设计环境中的信息通过列表的形式表现出来。部分代码如下:BOOL BOMDisplay:Create(UINT nID, CWnd * pWnd) /得到设计环境中的第一个元素spiElem-GetFirstChild( &spiChildElem );/若设计环境中的元素不为空,则调用FillRow()函数将元素的信息以列表
9、的形式表现出来,并且利用函数GetNextChild()得到环境中的下一个元素,重复以上步骤第10页,共30页。主要要点程序内容概要while( spiChildElem != NULL ) HTREEITEM hChildItem = FillRow( spiChildElem, hItem?hItem:hParent, FALSE );spiElem-GetNextChild( &spiChildElem );/对于统一元素里包含有不同的特征,则通过函数FillRow()的递归调用来实现第11页,共30页。ICAPICreate示例位置: CAXA实体设计安装目录SDKSamplesC+I
10、CAPICreate 功能介绍: ICAPICreate Add-in例子包含一个含有4个按钮的工具条。第一个按钮是Copy/Move特征操作的切换器,会弹出一个对话框要求用户选择一个源特征,然后再选择一个目标零件,最后将该源特征移到目标零件上。第二和第三个按钮分别执行布尔减第12页,共30页。和加操作。只有当拾取了两个实体零件时它们才能执行。当这些按钮被点击时就会执行相应的布尔操作。最后一个按钮生成一个Sweep Shape。在打开的Scene中,如果拾取的第一个Shape是Spin Shape而第二个shape是2D profile shape,点击该按钮则会生成一个以该2D profil
11、e Shape为导动线、以Spin Shape为截面线的Sweep体。第13页,共30页。ICAPICreate Add-in还演示了DragDrop钩子的应用。应用会沿着Scene中的一个2D Path自动生成一个“管道”。演示时,打开一个新的Scene并在其中创建一个2D Shape,然后从Shapes Catalog中任意拖动一个Extrude Shape到该2D Shape上,此时将弹出一个对话框要求输入管道的内外半径。确定后,沿着该2D Shape将会生成一个3D管道。第14页,共30页。主要要点回调过程类的派生回调过程类的派生第15页,共30页。应用事件类的派生 class ATL
12、_NO_VTABLE CAppEvents : public CComCoClass,public CZAppEventsSink, public IZAddinServer /应用事件接收器 第16页,共30页。文档事件类的派生class CDocEvents : public CZDocEventsSink/文档事件接收器class CICAPICreateApp : public CWinApp/应用类第17页,共30页。class CSelectionEventsSink : public ZSelectEventsSink/选择事件接受器class CInteractorEvents
13、 : public CZInteractorEventsSink/交互事件接收器第18页,共30页。class ATL_NO_VTABLE CCopyMoveMgr : public CComObjectRootEx,public CComCoClass,public ICopyMoveMgr, public IDispatchImpl/实现了ICopyMoveMgr和IMySelection接口第19页,共30页。class CPipeDialog : public Cdialog /弹出的对话框类class CCopyMoveDialog : public Cdialog /弹出的对话框类
14、第20页,共30页。class ATL_NO_VTABLE CZCommandEventsSink : public CComObjectRootEx,public CommandEventsImpl/命令事件的基类class CICAPICreateCommandEventsSink : public CZCommandEventsSink/命令事件类第21页,共30页。两个接口interface ICopyMoveMgr : Iunknowninterface IMySelection : IDispatch第22页,共30页。文档与IZInteractor 、IZSelectEvents
15、接口之间的关系IZDocPtr spiActiveDoc = GetActiveDoc();IZSceneDocPtr spiSceneDoc =spiActiveDoc; HRESULT hr = spiSceneDoc-get_SelectionMgr ( &spiSelMgr);第23页,共30页。IZInteractorPtr m_spiInteractor =NULL;hr = m_spiSelMgr-CreateInteractor( &m_spiInteractor); IZSelectEventsPtr spiSelectEvents=NULL;hr = m_spiIntera
16、ctor-get_SelectEvents( &spiSelectEvents);第24页,共30页。主要要点程序内容概要1.系统初始化HRESULT CAppEvents:InitSelf(IZAddinSite * piAddinSite)AFX_MANAGE_STATE(AfxGetStaticModuleState();HRESULT hr = S_OK;第25页,共30页。系统的清除HRESULT CAppEvents:DeInitSelf()HRESULT hr = S_OK;第26页,共30页。添加工具条及其消息处理IZCommandHandlerPtr m_spiCmdHand
17、ler1;m_spiCmdHandler1 = AddCommandHandler(IDS_C1_UNIQUENAME, IDS_C1_DISPLAYNAME, IDS_C1_STATUSSTRING, IDS_C1_TOOLTIP, IDB_C1_SMALL, IDB_C1_LARGE);/IDI_C1_SMALL, IDI_C1_LARGE);第27页,共30页。hr = m_spiAddinSite-get_Application(&spiBaseApp); if(FAILED(hr) | spiBaseApp = NULL) return hr;hr = spiBaseApp-get_
18、EnvironmentMgr(&spiEnvMgr); if(FAILED(hr) | spiEnvMgr = NULL) return hr;hr = spiEnvMgr-get_Environment(Z_ENV_SCENE, &spiEnv); if(FAILED(hr) | spiEnv = NULL) return hr;hr = spiEnv-AddControlBar(m_spiAddinSite, csToolbarTitle, &spiControlBar);if(FAILED(hr) | spiControlBar = NULL) return hr;第28页,共30页。hr = spiControlBar-get_Controls(&spiControls); if(FAILED(hr) | spiControls = NULL) return hr;hr = m_spiCmdHandler1-get_ControlDescriptor(&spiDescriptor); if(FAILED(hr) | spiDescriptor = NULL) return hr;hr = spiControls-Add(Z
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度农业园区场地租赁及农业技术服务协议3篇
- 二零二五年度酒店客房消毒承包协议4篇
- 2025年度高新技术有限责任公司股东权益保障协议4篇
- 二零二四年度智慧城市建设关键软硬件采购服务协议2篇
- 2025版新风系统零配件销售与供应协议3篇
- 二零二五年度电商平台虚拟货币交易合作合同2篇
- 2025年度城市更新改造项目合作开发合同3篇
- 二零二五年度钻井安全环境保护合同范本4篇
- 二零二五年度家庭厨房整体设计施工合同4篇
- 二零二五年度变压器行业人才培养合作合同2篇
- 纪委办案安全培训课件
- 超市连锁行业招商策划
- 医药高等数学智慧树知到课后章节答案2023年下浙江中医药大学
- 城市道路智慧路灯项目 投标方案(技术标)
- 初中英语-Unit2 My dream job(writing)教学设计学情分析教材分析课后反思
- 【公司利润质量研究国内外文献综述3400字】
- 工行全国地区码
- 新疆2022年中考物理试卷及答案
- 地暖工程监理实施细则
- 顶部板式吊耳计算HGT-20574-2018
- 《内证观察笔记》
评论
0/150
提交评论