比如,我的有些工具,只有新建的项目,才能让它可用,我用代码怎么实现呢?
工具的可用性在定义时是可以通过一个Named Expression(命名表达式)来控制的。
如果你用现有的NamedExpression能表达你的新建项目状态时,问题还算简单。否则问题就比较复杂了,你需要写一个自己的NamedExpression Provider。
请问有NamedExpressionProvider的示例吗?
我记得老版本的V8i SDK中曾经带有过,不过,这个东东比较底层,写不好就会导致MS崩溃,所以,新的SDK中将该例子移去了。
您要根据什么条件来控制你的工具的可用性?
我测试了一下,不需要自己写NamedExpression Provider,用现有的机制也是能实现您的需求的。
1、自定义一个MS的配置变量,比如就叫NewProject;
2、在您的DGNLIB中定义一个NamedExpression如下:
3、在您的DGNLIB中定义一个Ribbon按钮如下:
4、如果是新建项目状态,就用代码创建一个NewProject配置变量,其值无所谓,只要改变量存在即可。如果是非新建项目状态,就把该变量删除。
5、用代码发送任意一个系统的命令,比如Place Line;Choose None,只要改变了基本命令状态,就相当于满足了Sync Item Event中指定的Active Primitive Tool Changed这个事件,我们定义的命名表达式IsNewProject就会被重新计算,从而我们的Ribbon按钮的可见性就会被更新。
Answer Verified By: lingwei liu