CATIA二次开发:CAA实现状态机

来源:互联网 发布:快压 mac版 怎么用 编辑:程序博客网 时间:2024/04/25 15:50


1.Command初始化:Agent、CATDialogState、Transition实现状态机


Agent:CATPathElementAgent可获取元素;CATIndicationAgent可实现鼠标单击双击行为。
CATDialogState状态机
AddTransition状态机跳转条件:IsLastModifiedAgentCondition只要Agent变化就触发,Action可不短响应Agent变化;IsOutputSetCondition只要Agent值变化一次,就完成该Action。


2.Command初始化:BuildGraph中使用AndCondition实现跳转逻辑


下面两个Transition,按照顺序来执行,若执行了第一个Action,就不执行第二个Action;若第一个Action没有执行,则执行第二个Action。下面两行代码可实现pFirState到【pChangeAnnotationDirState或pSecState】的逻辑操作。
第一个Transition:
AddTransition( pFirState, pChangeAnnotationDirState,
AndCondition(IsOutputSetCondition(m_SelcAnnotationElmAgt),
Condition((ConditionMethod) & SteelBarGroupAnnotationCmd::GetAnnoDirMode)),
Action ((ActionMethod) &SteelBarGroupAnnotationCmd::AnnotationElmSelected));
说明:AndCondition中的两个条件,IsOutputSetCondition(m_SelcAnnotationElmAgt)和Condition((ConditionMethod) & SteelBarGroupAnnotationCmd::GetAnnoDirMode),都为真时,执行Action ((ActionMethod) &SteelBarGroupAnnotationCmd::AnnotationElmSelected);若Condition((ConditionMethod) & SteelBarGroupAnnotationCmd::GetAnnoDirMode)返回false,则不执行Action,跳转到下面的Transition。

第二个Transition:
AddTransition( pFirState, pSecState,
IsOutputSetCondition (m_SelcAnnotationElmAgt),
Action ((ActionMethod) &SteelBarGroupAnnotationCmd::AnnotationElmSelected));
说明:从pFirState跳转到pSecState

1.Command初始化:Agent、CATDialogState、Transition实现状态机


Agent:CATPathElementAgent可获取元素;CATIndicationAgent可实现鼠标单击双击行为。
CATDialogState状态机
AddTransition状态机跳转条件:IsLastModifiedAgentCondition只要Agent变化就触发,Action可不短响应Agent变化;IsOutputSetCondition只要Agent值变化一次,就完成该Action。


2.Command初始化:BuildGraph中使用AndCondition实现跳转逻辑


下面两个Transition,按照顺序来执行,若执行了第一个Action,就不执行第二个Action;若第一个Action没有执行,则执行第二个Action。下面两行代码可实现pFirState到【pChangeAnnotationDirState或pSecState】的逻辑操作。
第一个Transition:
AddTransition( pFirState, pChangeAnnotationDirState,
AndCondition(IsOutputSetCondition(m_SelcAnnotationElmAgt),
Condition((ConditionMethod) & SteelBarGroupAnnotationCmd::GetAnnoDirMode)),
Action ((ActionMethod) &SteelBarGroupAnnotationCmd::AnnotationElmSelected));
说明:AndCondition中的两个条件,IsOutputSetCondition(m_SelcAnnotationElmAgt)和Condition((ConditionMethod) & SteelBarGroupAnnotationCmd::GetAnnoDirMode),都为真时,执行Action ((ActionMethod) &SteelBarGroupAnnotationCmd::AnnotationElmSelected);若Condition((ConditionMethod) & SteelBarGroupAnnotationCmd::GetAnnoDirMode)返回false,则不执行Action,跳转到下面的Transition。

第二个Transition:
AddTransition( pFirState, pSecState,
IsOutputSetCondition (m_SelcAnnotationElmAgt),
Action ((ActionMethod) &SteelBarGroupAnnotationCmd::AnnotationElmSelected));
说明:从pFirState跳转到pSecState

0 0
原创粉丝点击