找回密码 注册 QQ登录
一站式解决方案

iCAx开思网

CAD/CAM/CAE/设计/模具 高清视频【积分说明】如何快速获得积分?快速3D打印 手板模型CNC加工服务在线3D打印服务,上传模型,自动报价
12
返回列表 发新帖
打印 上一主题 下一主题

【求助】CAA中对话框界面问题

[复制链接]
11
发表于 2005-1-6 16:20:43 | 只看该作者
谢谢acoka兄了。
“通常你的情况是1个state, 3个selectlist, 可以设focus, 点哪个selectlist设它为current,就可以re-select了“
能不能说的具体一些啊?怎么样设focus呢?
12
发表于 2005-1-7 16:00:43 | 只看该作者
再问一下这个问题,还没有解决。我手工把基类改成了CATMMUIPanelStateCmd,编译也没有问题,可是 BuildGraph()写的还是不能满足我的要求,如下:
void pointCmd::BuildGraph()
{
  
  pi=new pointBox();
  pi->Build();
  pi->SetVisibility(CATDlgShow);
  
  _daPathElement = new CATPathElementAgent("GetSurface");
  _daPathElement->AddElementType("CATSurface");
  _daPathElement2 = new CATPathElementAgent("GetCurve");
  _daPathElement2->AddElementType("CATSurface");
  _daPathElement3 = new CATPathElementAgent("GetSurface");
  _daPathElement3->AddElementType("CATCurve");
  
  _daPathElement->SetBehavior(CATDlgEngWithPSOHSO |  
    CATDlgEngWithPrevaluation);  
  _daPathElement2->SetBehavior(CATDlgEngWithPSOHSO |  
    CATDlgEngWithPrevaluation);
  _daPathElement3->SetBehavior(CATDlgEngWithPSOHSO |  
    CATDlgEngWithPrevaluation);
  
  CATDialogState *MainState = GetInitialState("stPointId");
  
  
  MainState->AddDialogAgent(_daPathElement);
  MainState->AddDialogAgent(_daPathElement2);
  MainState->AddDialogAgent(_daPathElement3);
    
  _daPathElement->InitializeAcquisition();  
  _daPathElement2->InitializeAcquisition();  
  _daPathElement3->InitializeAcquisition();  
  
  CATDialogTransition *pThirdTransition =AddTransition
    (
    MainState,
    MainState,
    IsOutputSetCondition(_daPathElement),
    Action((ActionMethod) & pointCmd::GetpointCoordination)
    ) ;   
  
  CATDialogTransition *p4thTransition =AddTransition
    (
    MainState,
    MainState,
    IsOutputSetCondition(_daPathElement2),
    Action((ActionMethod) & pointCmd::Action2)
    ) ;   
  
  CATDialogTransition *p5thTransition =AddTransition
    (
    MainState,
    MainState,
    IsOutputSetCondition(_daPathElement3),
    Action((ActionMethod) & pointCmd::Action3)
    ) ;   
  
}
改成了只有一个MainState,3个agnet,3个Transition。目的是要这个对话框接收3个输入:两个曲面,1个曲线。运行以后发现只能选第1个曲面和曲线,第2个曲面选择不了,在对话框中表示曲面选择的CATDlgEditor上点了也不行。对话框的定义和布局(见图3)如下:
//CAA2 WIZARD WIDGET DECLARATION SECTION
  CATDlgLabel*      _Label001;
  CATDlgEditor*      _Editor002;
  CATDlgLabel*      _Label002;
  CATDlgEditor*      _Editor004;
  CATDlgLabel*      _Label005;
  CATDlgEditor*      _Editor006;
//END CAA2 WIZARD WIDGET DECLARATION SECTION
请高手们继续指点,多谢了。

本帖子中包含更多资源

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

x
13
发表于 2005-1-9 00:36:43 | 只看该作者
当你点了1个曲面的时候,按你AddDialogAgent
的顺序来定优先级别的,所以daPathElement2 抢不过daPathElement,实际是无效的
  
解决方法
  
1)用multi-state,state-switch也是DS推荐的编程方式,回到3或2state,添加panel的selectorlist被点击的agent来实现state的来回切换
  
2)不过因为你的命令选项少,如果用个flag来简单切换也是可以的
设curve和surface的agent各1个,加个 int _Flag = 1 or 2, 在surface-agent的action里如果 _Flag==1 , 就赋值给 _面1,然后 _Flag -= 3, 反之亦然。当然这种编程方式不是太好,不过你可以改几行就实现要的功能
  
3)各个选择只能选一次,不许改选了话最简单(不过这样功能太差), 用过agent后把它从state里RemoveAgent掉就好,你在各个action里最后加1行就好
  
multi-state的效果可以参考catia的draft命令的样式
14
发表于 2005-1-9 11:36:50 | 只看该作者
谢谢高手继续予以指点。解决办法(1)应该可以实现改选吧?那像我这个对话框应该有3个state吧?请问这句话 “添加panel的selectorlist被点击的agent来实现state的来回切换“具体应该怎么做呢?怎么样在state之间来回切换呢?能不能给出代码示例?:)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

GMT+8, 2024-12-24 02:21 , Processed in 0.034843 second(s), 13 queries , Gzip On, Redis On.

Powered by Discuz! X3.3

© 2002-2024 www.iCAx.org

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