如何获取当前所用的tool,或者有没有监听tool切换的接口?
一般来说,每个工具都会和一个命令相关联,可以用如下方法获得这个命令名称:
using BIM = Bentley.Interop.MicroStationDGN; using BMI = Bentley.MstnPlatformNET.InteropServices; ...... BIM.Application app = BMI.Utilities.ComApp; MessageBox.Show(app.CommandState.CommandName);
我自己的DgnPrimitiveTool在执行时,当用户点击了鼠标中键,我的工具会暂停,变成移动视图工具,我如何知道当前视图是在用我的工具,还是在用系统的移动视图工具呢?
你知道这个的目的是什么?我们设计自己的DgnPrimitiveTool放置工具时一般来说是不需要考虑这个因素的。视图移动工具优先级是比放置类工具和修改类工具低的(类似于AutoCAD中的透明命令),执行完视图移动(压住中键拖拽)后自动就会回到你的放置工具中,或者,按一下鼠标Reset键(默认为右键)就能返回你的放置工具中。
我在自己的Tool中显示了一个参数界面,我希望在用户使用其他工具时,能把这个窗口隐藏起来
就像OpenRoads和OpenRail中好多工具那样,在绘图时显示参数界面,不绘图时就自动隐藏起来
自己工具的参数界面一定要做到系统的ToolSettings里,不要写成单独的对话框。这样,当系统切换到其他工具时,其他工具的参数界面就会自动顶替掉你的工具参数界面。
我现在做的是参数窗口可以跟随我的鼠标移动,基本其他的都处理好了,唯独在临时使用其他工具是我的参数窗口不消失
启动其他工具(非视图操作工具,即从DgnViewTool派生的工具)时,当前工具就会退出,此时OnCleanup函数会被调用,在这个函数里边关闭掉你的窗口。