找回密码 注册 QQ登录
开思网工业级高精度在线3D打印服务

iCAx开思网

CAD/CAM/CAE/设计/模具 高清视频【积分说明】如何快速获得积分?快速3D打印 手板模型CNC加工服务在线3D打印服务,上传模型,自动报价
查看: 13580|回复: 4
打印 上一主题 下一主题

[求助] 同一对话面板,我要选择两条直线,但始终只能选择一条

[复制链接]
跳转到指定楼层
1
发表于 2013-6-24 11:45:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

也就是说,我传递机制没做成功。我要是把      _pWiperAgent -> AddOrderedElementType("CATCurve");   这句话换成_pWiperAgent -> AddOrderedElementType("CATSurface");  来选择面,则两个都能选取。

void AreaCheckCmd::BuildGraph()
{
    _pAxisAgent                        = new CATFeatureImportAgent ( "CurveAgent", NULL, NULL, MfNoDuplicateFeature ) ;
        _pWiperAgent                        = new CATFeatureImportAgent ( "CurveAgent", NULL, NULL, MfNoDuplicateFeature ) ;
    _pOKAgent                                = new CATDialogAgent( "OKButton") ;
        _pOKAgent-> AcceptOnNotify( pAreaCheckDlg , pAreaCheckDlg->GetDiaOKNotification() );

//代理只能够选择实现接口CATSurface和CATPoint,CATCurve的组件,即此代理只能够选择面和曲线
        _pAxisAgent -> AddOrderedElementType( "CATCurve" );
        _pWiperAgent -> AddOrderedElementType("CATCurve");//一维的:CATIMfMonoDimResult
        _pAxisAgent -> SetBehavior( CATDlgEngWithPrevaluation | CATDlgEngWithCSO  | CATDlgEngOneShot  );
        _pWiperAgent -> SetBehavior( CATDlgEngWithPrevaluation | CATDlgEngWithCSO  | CATDlgEngOneShot  );

        //-----------------------------------------------------------------------------
        // Command States
        //-----------------------------------------------------------------------------
        CATDialogState *WaitForAxisState= GetInitialState("选择基准轴线");
        WaitForAxisState -> AddDialogAgent( _pAxisAgent);
       
        CATDialogState *WaitForWiperState= GetInitialState("选择与轴线相对应的线条");
        WaitForWiperState -> AddDialogAgent( _pWiperAgent);
       
        CATDialogState *OKState= GetInitialState("确定");
        OKState -> AddDialogAgent( _pOKAgent);
        //-----------------------------------------------------------------------------
        // Transitions
        //-----------------------------------------------------------------------------
        // 选择线
        AddTransition ( WaitForAxisState , WaitForWiperState ,
                IsOutputSetCondition ( _pAxisAgent ) ,
                Action ( ( ActionMethod ) &AreaCheckCmd::AxisSelected ) );
        //选择线
        AddTransition ( WaitForWiperState , OKState ,
                IsOutputSetCondition ( _pWiperAgent ) ,
                Action ( ( ActionMethod ) &AreaCheckCmd::WiperSelected ) );
        //传递到OK按钮
        AddTransition ( OKState , NULL ,
                IsOutputSetCondition ( _pOKAgent ) ,
                Action ( ( ActionMethod ) &AreaCheckCmd::OkAction ) );

        AddAnalyseNotificationCB (pAreaCheckDlg,
                pAreaCheckDlg->GetDiaCANCELNotification(),//这里 标明作用部分  为 取消按钮
                (CATCommandMethod)&AreaCheckCmd::CancelAction,
                NULL);
        AddAnalyseNotificationCB (pAreaCheckDlg,
                pAreaCheckDlg->GetWindCloseNotification(),//这里 标明作用部分  为 关闭按钮  也就是右上角的 叉
                (CATCommandMethod)&AreaCheckCmd::CancelAction,
                NULL);

}



该贴已经同步到 zsong22的微博

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 赞一下!赞一下!
2
发表于 2013-6-24 14:45:18 | 只看该作者
修改搞定:
//-----------------------------------------------------------------------------
        // Command States
        //-----------------------------------------------------------------------------
        CATDialogState *WaitForAxisState= GetInitialState("选择基准轴线");
        WaitForAxisState -> AddDialogAgent( _pAxisAgent);
       
        CATDialogState *WaitForWiperState= AddDialogState("选择与轴线相对应的线条");
        WaitForWiperState -> AddDialogAgent( _pWiperAgent);
       
        CATDialogState *OKState= AddDialogState("确定");
        OKState -> AddDialogAgent( _pOKAgent);
3
发表于 2013-6-24 15:59:20 | 只看该作者
这样一来遇到新问题就是,一旦在选择的过程中,选错线条了,就没法修改了! 很是郁闷!
4
发表于 2013-6-25 09:33:06 | 只看该作者
因为你一直在GetInitialState,如果有添加其他的状态,用AddDialogState
5
发表于 2013-6-25 09:33:58 | 只看该作者
zsong22 发表于 2013-6-24 15:59
这样一来遇到新问题就是,一旦在选择的过程中,选错线条了,就没法修改了! 很是郁闷!

没法修改是因为你的状态没有切换,你可以试着多添加几个状态,或者添加Editor的Focus
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3D打印手板模型快速制作服务,在线报价下单!

QQ 咨询|手机版|联系我们|iCAx开思网  

GMT+8, 2024-12-27 15:01 , Processed in 0.025036 second(s), 10 queries , Gzip On, Redis On.

Powered by Discuz! X3.3

© 2002-2024 www.iCAx.org

快速回复 返回顶部 返回列表