iCAx开思工具箱

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 21094|回复: 4
打印 上一主题 下一主题

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

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

马上注册登录,享用更多网站功能!

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

x

也就是说,我传递机制没做成功。我要是把      _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的微博

11.jpg (125.49 KB, 下载次数: 8)

11.jpg

22.jpg (32.43 KB, 下载次数: 9)

22.jpg
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 支持支持
沙发
 楼主| 发表于 2013-6-24 14:45:18 | 只看该作者

马上注册登录,享用更多网站功能!

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

x
板凳
 楼主| 发表于 2013-6-24 15:59:20 | 只看该作者

马上注册登录,享用更多网站功能!

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

x
地板
发表于 2013-6-25 09:33:06 | 只看该作者

马上注册登录,享用更多网站功能!

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

x
5
发表于 2013-6-25 09:33:58 | 只看该作者

马上注册登录,享用更多网站功能!

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

x
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手板模型制作,在线3D打印服务

QQ|小黑屋|手机版|开思工具箱 CAD工具箱_CAM工具箱  

GMT+8, 2024-11-27 14:09 , Processed in 0.029324 second(s), 15 queries , Gzip On, Redis On.

Powered by Discuz! X3.3

© 2002-2024 www.iCAx.org

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