您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 国内外标准规范 > 实体设计API 例子介绍B
例子介绍(二)DwgCreation示例位置:\SDK\Samples\C++\DwgCreation功能介绍:DwgCreation演示了如何利用ICAPI为了creatingtechnicaldrawings而创建预定义过程。本例支持一个基本的情形。1.NewDrawing命令作为开始,能被持久化并能用来创建绘图环境模板。2.ChangeSource命令新的绘图环境通过改变与这个绘图环境有关联的三维设计环境而生成的模板来生成,然后更新这个绘图环境。3.CreateBOM命令可以为一个绘图环境(可能使用了一个BOM模板)生成一个材料清单(BOM)。4.AutoCreateItemBubbles命令,用户自动的将一个itembubbles放置在一个有特别标识的视上。主要要点—回调过程类的派生回调过程类的派生应用事件类的派生classCDwgCreationAppEvents:publicCZAppEventsSink{……}文档事件类的派生classCDwgCreationDocEvents:publicCZDocEventsSink{……}主要要点—回调过程类的派生交互事件类的派生classCDwgCreationInteractorEvents:publicCZInteractorEventsSink{……}拾取事件类的派生classCDwgCreationSelectEventsSink:publicCZSelectEventsSink{……}主要要点—回调过程类的派生命令事件接受器类的派生classCDwgCreationCommandEventsSink:publicCZCommandEventsSink{……HRESULTOnCreateNewDrawingCmd();HRESULTOnCreatePredefinedViews();HRESULTOnChangeSource();HRESULTOnCreateBOM();HRESULTOnAutoCreateItemBubbles();HRESULTOnAddAttribute();……}主要要点—程序内容概要1.系统初始化HRESULTCDwgCreationAddin::InitSelf(IZAddinSite*piAddinSite){……//注册应用事件RegisterForAppEvents();……//增加控制命令句柄m_spiCmdHndlCreateDwg=AddCommandHandler(IDS_C1_UNIQUENAME,IDS_C1_DISPLAYNAME,IDS_C1_STATUSSTRING,IDS_C1_TOOLTIP,IDB_C1_SMALL,IDB_C1_LARGE);……hr=m_spiAddinSite-get_Application(&spiBaseApp);主要要点—程序内容概要……//获取环境管理器hr=spiBaseApp-get_EnvironmentMgr(&spiEnvMgr);……//获取设计环境hr=spiEnvMgr-get_Environment(Z_ENV_SCENE,&spiEnv);……//在设计环境中增加工具条hr=spiEnv-AddControlBar(m_spiAddinSite,csToolbarTitle,&spiControlBar);……//获取绘图环境hr=spiEnvMgr-get_Environment(Z_ENV_DRAWING,&spiDrawingEnv);主要要点—程序内容概要//在绘图环境中增加工具条hr=spiDrawingEnv-AddControlBar(m_spiAddinSite,csToolbarTitle,&spiDwgControlBar);if(FAILED(hr)||spiControlBar==NULL)returnhr;//在工具条中增加控制hr=spiControlBar-get_Controls(&spiControls);hr=m_spiCmdHndlCreateDwg-get_ControlDescriptor(&spiDescriptor);hr=spiControls-Add(Z_CONTROL_BUTTON,spiDescriptor,NULL,&spiControl);if(FAILED(hr)||spiControl==NULL)returnhr;……主要要点—程序内容概要//注册命令事件hr=RegisterCommandForEvents(m_spiCmdHndlCreateDwg,ID_CMD_1);……}主要要点—程序内容概要2.执行流程HRESULTSTDMETHODCALLTYPECDwgCreationCommandEventsSink::OnClick(){……switch(m_ID){caseID_CMD_1:hr=OnCreateNewDrawingCmd();break;caseID_CMD_2:hr=OnCreatePredefinedViews();break;主要要点—程序内容概要caseID_CMD_CHANGE_SOURCE:hr=OnChangeSource();break;caseID_CMD_CREATE_BOM:hr=OnCreateBOM();break;caseID_CMD_AUTO_ITEMBUBBLE:hr=OnAutoCreateItemBubbles();break;caseID_CMD_ADD_ATTRIBUTE:hr=OnAddAttribute();break;caseID_CMD_CREATE_ADD:hr=OnCreateAdd();break;……}}主要要点—程序内容概要3.主要功能的实现//实现新建一绘图环境HRESULTCDwgCreationCommandEventsSink::OnCreateNewDrawingCmd(){…….HRESULThr=spiApp-OpenNewDrawing(vbShowDialogs,vbUseDefT,bstrTemplate,&piZDwgDoc);ASSERT(SUCCEEDED(hr));……}主要要点—程序内容概要//实现改变源文件命令HRESULTCDwgCreationCommandEventsSink::OnChangeSource(){……hr=spiDrawingDoc-UpdateAll();……}主要要点—程序内容概要//实现创建BOM命令HRESULTCDwgCreationCommandEventsSink::OnCreateBOM(){spiBOMMgr-CreateBOM(spiZActiveSheet,piLinkedScene,Z_BOMSTYLE_PARTSONLY,vbUseTemplate,bstrTemplate,&piBOMTableDef);…..}主要要点—程序内容概要//实现自动添加零件序号(ItemBubble)属性命令HRESULTCDwgCreationCommandEventsSink::OnAutoCreateItemBubbles(){……hr=spiZSheet-AutoItemBubbleView(spiTDView,spiZBOM);……}EDOTEST示例位置:\SDK\Samples\C++\EDOTest功能介绍:EDOTest例子演示了对一个元素(Element)如何添加、删除和获取EDO对象。EDO对象能够扩充或改变一个元素的通常行为。本工程包含数个C++/ATL的EDO对象例子1.EDOText——创建一个简单的EDO,将一个与一个元素相连的文本字符串保存到文档中。它实现了IZExtensionDataObject和IPersistStream接口。2.EDOText2——接着EDOText的第一步,在弹出菜单中包含一个“TextProperties…”菜单项,它使得用户可以改变该文本字符串。它还通过双击该元素时显示文本属性演示了如何处理鼠标事件。它实现了IZExtensionDataObject、IPersistStream、IZEDOInteractionCallback和IZEDOMouseCallback接口.3.EDOText3——最复杂的EDOText例子。这个例子包括将一个字符串紧邻一个元素写入(Rendering)文档。它还包括对该字符串进行HitTest和BoundingBox计算时的处理。例子中实现了IZExtensionDataObject、IPersistStream,、IZEDOInteractionCallback,、IZEDOMouseCallback、IZEDORenderCallback和IZEDOHittestCallback接口4.EDOTrace——这个简单的例子实现了EDO所有接口,并通过TRACE机制将参数信息输出到C++调试窗口。5.EDOBitmap——这个例子演示了如何将一幅位图写入(Render)文档。它还允许用户变换写入的位图,并完全重载了这个元素的绘制(Draw)方式并用一幅位图来代替。程序中实现了IZExtensionDataObject、IPersistStream、IZEDOInteractionCallback和IZEDORenderCallback接口。6.EDOHelix——这个复杂的EDO演示了ZPolyMesh对象的用法。相连元素的渲染完全被一个三维螺旋体取代。当厚度为0时,该螺旋体用一条折线表示。当厚度不为0时,EDO生成一个PolyMesh并添加小面片(Facet)来表示螺旋体。螺旋体的大小由与其相连的元素的大小决定。程序中实现了IZExtensionDataObject,、IpersistStream、IZEDOUpdateCallback、IZEDOInteractionCallback和IZEDORenderCallback接口。7.EDOFlare——这个EDO演示了EDO对象直接在设备文档(devicecontext)中进行渲染(Render)的能力。程序用一系列的位图来模拟一个镜头旋光(lensflare)。程序还演示了一个EDO如何与一个事件源——在本例中为DrawingEvents,进行连接。旋光绘制是一个真正的渲染后处理过程,它的绘制发生在整个绘制序列的最后。程序还演示了一个更复杂的菜单结构,包含一个子菜单和一个复选菜单条。程序实现了IZExtensionDataObject,、IPersistStream、IZEDOUpdateCallback、IZEDODragAndDropCallback、IZEDOHittestCallback、IZEDOInteractionCallback和IZEDORenderCallback接口。主要要点—EDO类的派生EDO类的派生CEDOBase类的派生classATL_NO_VTABLECEDOBase:publicCComObjectRootExCComSingleThreadModel,publicIZExtensionDataObject//继承此接口就表明这是一个edo{……}其他EDO类的派生classCEDOText:publicCEDOBase,//从此基类派生的,所以也是一个edo类publicIEDOText,publicIPersistStream,publicCComCoClassCEDOText,&CLSID_EDOText{……}主要要点—程序主要过程1.系统初始化HRESULTSTDMETHODCALLTYPECEDOAddIn::InitSelf(IZAddinSite*piAddinSite){……//获得应用指针piAddinSi
本文标题:实体设计API 例子介绍B
链接地址:https://www.777doc.com/doc-3501029 .html