CAA创建基于草图拉伸(Pad) 的状态命令

2014-09-21 16:28:52|?次阅读|上传:wustguangh【已有?条评论】发表评论

关键词:C/C++, CAA, CATIA|来源:唯设编程网

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;
}
发表评论0条 】
网友评论(共?条评论)..
CAA创建基于草图拉伸(Pad) 的状态命令