中考作文素材专题培训课件_第1页
中考作文素材专题培训课件_第2页
中考作文素材专题培训课件_第3页
中考作文素材专题培训课件_第4页
中考作文素材专题培训课件_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

ICAPICOMTest示例位置:CAXASOLID安装目录\SDK\Samples\C++\ICAPICOMTest

功能介绍:ICAPICOMTestadd-in生成两个工具条:ICAPIComTest1和ICAPIComTest2。工具条ICAPIComTest1包含三个按钮,第一个按钮演示处理从UI选择管理器中得到的信息;第二个按钮演示拾取回调环;第三个按钮演示RayTest,当点击该按钮时,会弹出一个对话框,要求输入视线(Ray)的起点、方向、大小和视线穿过对象的最大值以及实体的种类。确定后,如果一个面被穿过,将显示它的种类、穿过的位置和法线方向。工具条ICAPIComTest2包含两个按钮,第一个按钮以列表的形式显示当前设计环境(Scene)的所有外部关联;

第二个按钮显示设计环境中的BOM-type零件列表。1主要要点—程序内容概要1.系统初始化STDMETHODIMPCMyAppAddin::InitSelf(IZAddinSite*piAddinSite){ AFX_MANAGE_STATE(AfxGetStaticModuleState()); ASSERT(m_spiAddinSite==NULL); ……}在初始化过程中,主要进行系统环境的初始化和添加工具条。2主要要点—程序内容概要2、处理从UI选择管理器中得到的信息1)、判断是否有选中的对象:第一个工具条的第一个按钮开始的时候未被激活,当鼠标点中了对象时,此按钮才被激活。相应的函数如下: staticintUpdateSelTest() { …… VARIANT_BOOLbYes; hr=spiSelMgr->SelectionsAvailable(&bYes); if(bYes==VARIANT_TRUE) return1;//对象被选中,按钮被激活 …… }3主要要点—程序内容概要2)、点击第一个工具条的第一个按钮即处理从UI选择管理器中得到的信息,相应的函数为DoSelTest()。DoSelTest() { …… HRESULThr=spiBaseApp->get_ActiveDoc(&spiActiveDoc); …… HRESULThr=spiSceneDoc->get_SelectionMgr(&spiSelMgr); …… spiSelMgr->GetSelectedElements(&vElements); //得到选中的元素 …… }4主要要点—程序内容概要3、拾取回调环。建立回调环的过程如下:

1、通过系统设计环境文档spiSceneDoc得到选择管理器接口指针 m_spiSelMgr。 2、利用m_spiSelMgr创建交互接口指针m_spiInteractor。 3、由m_spiInteractor得到选择事件接口指针spiSelectEvents。 4、由spiSelectEvents设置选择事件过滤器选项。 5、创建应用程序的交互事件接口m_pInteractorEventsSink。 6、利用函数SetAdvise()对交互事件接口进行注册。 7、同理创建应用程序的选择事件接收器对象 pSelectEventsSinkObj,并注册。

5主要要点—程序内容概要建立回调环的函数如下:BOOLCSelFilterDlg::SetupLoop(longfilterlist,eZSelectionTypecurrFilter){ …… hr=spiSelectEvents->SetSelectionFilterChoices(filterlist,currFilter);//设置选择过滤器选项 …… hr=m_pInteractorEventsSink->SetAdvise(this,spiUnk); //注册 ……

m_pInteractorEventsSink->m_pSelectEventSink=pSelectEventsSinkObj;//建立应用程序与设计环境的联系 ……}6主要要点—程序内容概要3、演示RayTest,相应的函数是:staticvoidDoRayTest(){ ……

spiRayResult->get_HitElement(&spiHitElement); //得到视线穿过的对象 …… spiRayResult->get_HitPoint(&spiHitPoint); //得到视线穿过对象的点 ……. spiRayResult->get_NormalDirection(&spiHitDir); //得到实现所穿过对象的点的法线方向 ……}7主要要点—程序内容概要4、显示当前设计环境(Scene)的所有外部关联,相应的函数为:static voidDoLinksInfo(){ …… //得到设计环境的关联文档信息

spiSceneDoc->GetLinksInfo(&vDocs); …… //得到关联文档的文件名 spiLinkedDoc->get_Name(&DocName); ……}8主要要点—程序内容概要5、显示设计环境中的BOM-type零件列表,通过点击按钮,弹出零件列表对话框。在此对话框类的函数Create(UINTnID,CWnd*pWnd)里,通过循环调用函数FillRow(IZElement*spiElem,HTREEITEMhParent,BOOLbIsDrawing)将设计环境中的信息通过列表的形式表现出来。部分代码如下: BOOLBOMDisplay::Create(UINTnID,CWnd*pWnd) { …… //得到设计环境中的第一个元素 spiElem->GetFirstChild(&spiChildElem); //若设计环境中的元素不为空,则调用FillRow(…)函数将元素的信息以列 表的形式表现出来,并且利用函数GetNextChild(…)得到环境中的下一 个元素,重复以上步骤

9主要要点—程序内容概要 while(spiChildElem!=NULL) { HTREEITEMhChildItem=FillRow(spiChildElem, hItem?hItem:hParent,FALSE); spiElem->GetNextChild(&spiChildElem); } } //对于统一元素里包含有不同的特征,则通过函数FillRow(…)的递归调用来实现10ICAPICreate示例位置:CAXA实体设计安装目录 \SDK\Samples\C++\ICAPICreate

功能介绍:ICAPICreateAdd-in例子包含一个含有4个按钮的工具条。第一个按钮是Copy/Move特征操作的切换器,会弹出一个对话框要求用户选择一个源特征,然后再选择一个目标零件,最后将该源特征移到目标零件上。第二和第三个按钮分别执行布尔减11和加操作。只有当拾取了两个实体零件时它们才能执行。当这些按钮被点击时就会执行相应的布尔操作。最后一个按钮生成一个SweepShape。在打开的Scene中,如果拾取的第一个Shape是SpinShape而第二个shape是2Dprofileshape,点击该按钮则会生成一个以该2DprofileShape为导动线、以SpinShape为截面线的Sweep体。12ICAPICreateAdd-in还演示了DragDrop钩子的应用。应用会沿着Scene中的一个2DPath自动生成一个“管道”。演示时,打开一个新的Scene并在其中创建一个2DShape,然后从ShapesCatalog中任意拖动一个ExtrudeShape到该2DShape上,此时将弹出一个对话框要求输入管道的内外半径。确定后,沿着该2DShape将会生成一个3D管道。13主要要点—回调过程类的派生回调过程类的派生14应用事件类的派生

classATL_NO_VTABLECAppEvents: publicCComCoClass<CAppEvents, &CLSID_ICAPICreateAppEvents>, publicCZAppEventsSink, publicIZAddinServer

{

//应用事件接收器}15文档事件类的派生classCDocEvents:publicCZDocEventsSink { //文档事件接收器 }classCICAPICreateApp:publicCWinApp{ //应用类}16classCSelectionEventsSink:publicZSelectEventsSink{ //选择事件接受器}classCInteractorEvents:publicCZInteractorEventsSink{ //交互事件接收器}17classATL_NO_VTABLECCopyMoveMgr: public CComObjectRootEx<CComSingleThreadModel>, publicCComCoClass<CCopyMoveMgr, &CLSID_CopyMoveMgr>, publicICopyMoveMgr,publicIDispatchImpl<IMySelection, &IID_IMySelection, &LIBID_ICAPICREATELib>{ //实现了ICopyMoveMgr和IMySelection接口}18classCPipeDialog:publicCdialog{ //弹出的对话框类}classCCopyMoveDialog:publicCdialog{ //弹出的对话框类}19classATL_NO_VTABLECZCommandEventsSink: publicCComObjectRootEx<CComSingleThreadModel>, publicCommandEventsImpl{ //命令事件的基类}classCICAPICreateCommandEventsSink:publicCZCommandEventsSink{ //命令事件类}20两个接口 interfaceICopyMoveMgr:Iunknown interfaceIMySelection:IDispatch21文档与IZInteractor、IZSelectEvents

接口之间的关系IZDocPtrspiActiveDoc=GetActiveDoc();IZSceneDocPtrspiSceneDoc=spiActiveDoc;

HRESULThr=spiSceneDoc->get_SelectionMgr (&spiSelMgr);22IZInteractorPtrm_spiInteractor=NULL;hr=m_spiSelMgr->CreateInteractor( &m_spiInteractor);

IZSelectEventsPtrspiSelectEvents=NULL;hr=m_spiInteractor->get_SelectEvents( &spiSelectEvents);23主要要点—程序内容概要1.系统初始化HRESULTCAppEvents::InitSelf(IZAddinSite*piAddinSite){ AFX_MANAGE_STATE(AfxGetStaticModuleState()); HRESULThr=S_OK; ……}24系统的清除HRESULTCAppEvents::DeInitSelf(){ HRESULThr=S_OK; ……}25添加工具条及其消息处理IZCommandHandlerPtrm_spiCmdHandler1;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);26

hr=m_spiAddinSite->get_Application(&spiBaseApp); if(FAILED(hr)||spiBaseApp==NULL)returnhr; hr=spiBaseApp->get_EnvironmentMgr(&spiEnvMgr);if(FAILED(hr)||spiEnvMgr==NULL)returnhr; hr=spiEnvMgr->get_Environment(Z_ENV_SCENE,&spiEnv);if(FAILED(hr)||spiEnv==NULL)returnhr; h

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论