CAA二次开发 跨文档选择数据

前言

跨文档选择数据最常见的例子是原生功能中在工程图选择需要投影的视图平面及方向等,具体例子参考投影视图的创建

核心接口

需要使用的两个接口 CATMultiDocumentCommand与 CATOtherDocumentAgent
官方说明

具体流程

实现CATMultiDocumentCommand子类

SelectProductCmd.h头文件

// COPYRIGHT Dassault Systemes 2012
//===================================================================
//
// SelectProductCmd.h
// The state chart based command: SelectProductCmd
//
//===================================================================
//
// Usage notes:
//
//===================================================================
//CAA2 Wizard Generation Report
//   STATECOMMAND
//End CAA2 Wizard Generation Report
//
//  Dec 2012  Creation: Code generated by the CAA wizard  Administrator
//===================================================================
#ifndef SelectProductCmd_H
#define SelectProductCmd_H

#include "CATMultiDocumentCommand.h"
#include "CATBoolean.h"
#include "CATPathElementAgent.h"

class CATPathElementAgent;

//----------------------------------------------------------------------

/**
 * Describe your command here.
 * <p>
 * Using this prefered syntax will enable mkdoc to document your class.
 * <p>
 * refer to programming resources of Dialog engine framework.
 * (consult base class description).
 */
class SelectProductCmd: public CATMultiDocumentCommand
{
  // Allows customization/internationalization of command's messages
  // ---------------------------------------------------------------
  CmdDeclareResource( SelectProductCmd, CATMultiDocumentCommand )

  public:

  SelectProductCmd();
  virtual ~SelectProductCmd();

    /**
     * Defines the command automata.
     * <br>
     * <i>(states, transitions and agents)</i>
     */
  virtual void     BuildGraph();
private:

	// Copy constructor, not implemented
	// Set as private to prevent from compiler automatic creation as public.
	SelectProductCmd(const SelectProductCmd &iObjectToCopy);

	// Assignment operator, not implemented
	// Set as private to prevent from compiler automatic creation as public.
	SelectProductCmd & operator = (const SelectProductCmd &iObjectToCopy);
	/**
	* Action associated to state transitions.
	*/
	virtual CATBoolean  ActionOne(void * data);

private:

	CATPathElementAgent			m_SelectAgent;
};

//----------------------------------------------------------------------

#endif

cpp

// COPYRIGHT Dassault Systemes 2012
//===================================================================
//
// SelectProductCmd.cpp
// The state chart based command: SelectProductCmd
//
//===================================================================
//
// Usage notes:
//
//===================================================================
//
//  Dec 2012  Creation: Code generated by the CAA wizard  Administrator
//===================================================================
#include "SelectProductCmd.h"
#include "CATIndicationAgent.h"
#include "CATMathPlane.h"
#include "CATOtherDocumentAgent.h"

#include "CATCreateExternalObject.h"
CATCreateClass( SelectProductCmd);


//-------------------------------------------------------------------------
// Constructor
//-------------------------------------------------------------------------
SelectProductCmd::SelectProductCmd() :
  //CATStateCommand ("SelectProductCmd", CATDlgEngOneShot, CATCommandModeExclusive) 
//  Valid states are CATDlgEngOneShot and CATDlgEngRepeat
  m_SelectAgent("SelectProductCmdId")
{
}

//-------------------------------------------------------------------------
// Destructor
//-------------------------------------------------------------------------
SelectProductCmd::~SelectProductCmd()
{
}


//-------------------------------------------------------------------------
// BuildGraph()
//-------------------------------------------------------------------------
void SelectProductCmd::BuildGraph()
{


  // TODO: Define the StateChart 
  // ---------------------------
	if( NULL != _fromCommand )
	{
		m_SelectAgent.SetBehavior(_fromCommand->GetBehavior());
	}
	else
	{
		m_SelectAgent.SetBehavior(CATDlgEngWithPSOHSO);
	}
	m_SelectAgent.SetElementType("CATIProduct");
	//m_SelectAgent.SetElementType("CATIPrtPart");

	CATDialogState * gsmState = GetInitialState("请选择零部件");
	gsmState->AddDialogAgent(&m_SelectAgent); 

	AddTransition( gsmState, NULL, NULL,
		Action ((ActionMethod) &SelectProductCmd::ActionOne));
}


//-------------------------------------------------------------------------
// ActionOne ()
//-------------------------------------------------------------------------
CATBoolean SelectProductCmd::ActionOne( void *data )
{
  // TODO: Define the action associated with the transition 
  // ------------------------------------------------------
	if (m_SelectAgent.GetBehavior() & CATDlgEngMultiAcquisition)
	{
		ReturnListOfValues(m_SelectAgent.GetListOfValues());
	}
	else
	{
		ReturnValue(m_SelectAgent.GetValue());
	}
  return TRUE;
}

在需要使用CATOtherDocumentAgent

m_SelectOtherDocAgent = new CATOtherDocumentAgent("FeatureSelectAgent", "SelectProductCmd", "CATPathElementAgent");
	m_SelectOtherDocAgent -> SetBehavior( CATDlgEngWithPSOHSO | CATDlgEngWithPrevaluation | CATDlgEngRepeat | CATDlgEngNewHSOManager );
	m_SelectOtherDocAgent -> AddElementType("CATIProduct");
	
	//获取选择的数据
	//CATPathElement *pEle = m_SelectOtherDocAgent -> GetValue();
	//m_SelectOtherDocAgent -> InitializeAcquisition();

注意构造CATOtherDocumentAgent中第二个参数 "SelectProductCmd"为上一步构造出的cmd名称
选择类型Addtype需要对上

结束补全

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: CATIA CAA(Computer-Aided Three-Dimensional Interactive Application)是一款基于CATIA V5平台的二次开发工具包。它提供了一系列API(Application Programming Interface),用于开发插件、自定义功能以及集成外部应用程序。 CATIA CAA的二次开发源码是指通过CATIA CAA开发的插件、功能或应用程序的源代码。这些源代码可以被开发者使用、修改、扩展或进一步开发。 通过CATIA CAA的二次开发源码,开发者可以将CATIA V5平台的功能与外部应用程序无缝集成,定制化开发符合自己需求的行业解决方案。二次开发源码提供的API包括了CATIA V5的核心功能,如几何建模、装配设计、零部件设计等。开发者可以利用这些API创建自己的工具、快捷键或自动化流程,提高工作效率,简化设计过程。 CATIA CAA的二次开发源码还可以用于开发CATIA应用程序的用户界面交互。通过源码,开发者可以自定义CATIA界面、菜单、工具栏以及对话框,使其更符合自己的设计习惯和工作流程。 总之,CATIA CAA的二次开发源码为开发者提供了丰富的开发工具和资源,使他们能够自定义、扩展和集成CATIA V5平台,实现更高效、更个性化的设计和工程解决方案。 ### 回答2: CATIA CAA(Computer Aided Three-dimensional Interactive Application)是Dassault Systèmes公司开发的一种基于CATIA的二次开发工具。它允许用户通过编写代码来自定义和扩展CATIA软件的功能。 CATIA CAA的二次开发源码提供了开发者所需的代码和库,使他们可以编写插件、宏或其他定制化的工具来满足特定的需求。开发者可以使用CATIA CAA的二次开发源码来实现与CATIA软件交互的功能,如创建新的几何体、修改模型的属性、自动化一系列操作等。 CATIA CAA的二次开发源码是基于C++语言的,开发者可以使用CATIA CAA SDK(Software Development Kit)来编写代码,并使用CATIA API(Application Programming Interface)来与CATIA软件进行通信。 通过CATIA CAA的二次开发源码,开发者可以定制和扩展CATIA软件的功能,以满足不同行业和应用领域的需求。它为用户提供了更多的灵活性和自由度,使他们能够根据自己的工作流程和业务需求进行定制。 总之,CATIA CAA的二次开发源码是一种强大的工具,它提供了丰富的功能和灵活性,使开发者能够根据自己的需求对CATIA软件进行个性化定制和扩展。 ### 回答3: CATIA CAA是一种用于CATIA软件二次开发的工具包,其中包含了用于编写插件、宏和定制功能的源码。CATIA是由达索系统公司开发的一个三维计算机辅助设计软件,用于制造业和机械工程,而CAA则是其应用编程接口(API)。 CATIA CAA的二次开发源码包含了各种模块和函数,以及与CATIA软件进行交互的接口。通过使用这些源码,开发人员可以创建自己的定制工具和功能,以满足特定的设计和制造需求。例如,可以开发用于生成报告、执行自动化任务、优化设计等的插件。 源码中涵盖了各种开发语言和技术,如C++、COM(组件对象模型)、VBScript等。开发人员可以根据自己的需求选择适用的语言和技术,进行二次开发CATIA CAA提供了丰富的文档和示例代码,以帮助开发人员快速上手和理解如何使用源码进行开发。 CATIA CAA的二次开发源码使得用户有了更多的自由和灵活性,可以根据自己的需求进行定制化开发,从而提高工作效率和产品质量。此外,CATIA CAA还提供了与其他软件和系统的集成能力,方便用户在设计和制造过程中进行协同工作和数据交换。 总之,CATIA CAA的二次开发源码为CATIA软件的扩展和定制提供了丰富的资源和工具,使得用户可以根据自己的需求进行自定义开发,以满足特定的设计和制造要求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值