DgnPrimitiveTool 详细说明文档
本文主要总结 DgnTool 的触发逻辑,同时介绍其中的参数设置。
它是所有 Tool 的基类,在使用过程中,不能直接派生于它,而是要从
DgnViewTool
和 DgnPrimitiveTool
派生。
方法分类
dgnTool 中的方法按作用分类,分为:
事件回调
参数设置
参数设置分为两种,一种是调用型,一种是重写型。
调用型的方法无法重写,使用时需要主动调用;
重写型的方法可以通过重写,来进行设置,工具会自动调用。
工具方法
工具方法分为一般方法、虚方法、静态方法。这些都需要主动调用才产生效果。
DgnTool 中的方法按功能分类大致可以分为以下几类:
- 修饰器
- 鼠标事件
- 鼠标滚轮和键盘事件
- 弹出菜单事件
- 手势相关
- 初始化化及资源释放
- 工具类
全局设置
在 Tool 中可以打开全局设置,比如启用精确绘图,捕捉等等。
名称 | 作用 |
---|---|
AccuSnap.SnapEnabled = true | 激活动态捕捉 |
AccuDraw.Active = true; | 激活精确绘图 |
全局设置必须在 Tool 初始化完成后调用,一般在 OnPostInstall 中调用。
修饰器*
这个功能只有一个函数:DecorateScreen(Viewport vp)
,它用于在
overlay 模式下显示非图形元素。
该函数只要鼠标有变动就会触发。
工具类
实例方法
名称 | 作用 | 类型 |
---|---|---|
GetCurrentDgnButtonEvent | 获取代表当前鼠标位置的事件 | 工具方法 |
*SetAdjustedDataPoint | 将调整后的点设置为最后一个数据点位置 | 工具方法 |
GetModifierKeyTransitionState | 获取键盘按键,按键值通过currentQualifierMask参数返回 | 工具方法 |
SetModifierKeyTransitionState | 设置键盘按键 | 工具方法 |
静态方法
名称 | 作用 | 类型 |
---|---|---|
GetActiveViewTool | 获取当前的 DgnViewTool 实例 | 工具方法 |
GetActivePrimitiveTool | 获取当前的 DgnPrimitiveTool 实例。有些遗留的工具没有使用 DgnTool,所以返回的会是空 | 工具方法 |
鼠标事件
在 Bentley 中,事件是按数据键和重置键来区分的,对应到鼠标的设备上就是左键和右键,当然这个对应关系可以设置。下方中就用左/右键来分别代表数据/重置键,方便理解。
名称 | 作用 | 作用 |
---|---|---|
OnResetButton | 右键单击时触发,默认返回 false | 事件回调 |
OnResetButtonUp | 右键弹起后触发 | 事件回调 |
OnDataButton | 左键单击时触发,默认返回 false | 事件回调 |
OnModelMotion | 当鼠标在视图中移动时触发,默认返回 false,移动时,会不断触发 | 事件回调 |
OnModelNoMotion | 当鼠标在视图中静止时触发,默认返回 false,静止后,会不断触发 | 事件回调 |
OnModelMotionStopped | 当鼠标在视图中停止移动后触发,默认返回
false,只在停止后触发一次,然后再触发OnModelNoMotion |
事件回调 |
OnModelStartDrag | 鼠鼠标开始拖拽,默认返回 false | 事件回调 |
OnModelEndDrag | 鼠标结束拖拽,默认返回 false | 事件回调 |
鼠标滚动和键盘事件
名称 | 作用 | 作用 |
---|---|---|
OnMouseWheel | 鼠标滚动时触发,默认返回 false | 事件回调 |
OnModifierKeyTransition | 当 Shift、Control 或 Alt 键被按下和释放时都会触发,它们的值分别是 4、8 和 16。返回 true 时会更新视图 | 事件回调 |
*On3DInputEvent | 未知 | 事件回调 |
弹出菜单
名称 | 作用 | 类型 |
---|---|---|
DisableEditAction | 在按下右键后,OnResetButton前执行。 用于阻止按下右键时弹出菜单,默认为 false,禁止弹出。 | 参数设置 |
StatusInt PerformEditAction(int index) | 重写右键弹出菜单,index
代表菜单编号,-1代表不显示。当成功设置后,应返回
StatusInt.Success |
参数设置 |
手势相关
手势相关 API 名称中一般包含 Gesture
字符。
手势相关的 API 在日常开发中几乎不使用,此处不进行介绍。
加载与资源释放
名称 | 作用 | 类型 |
---|---|---|
OnInstall | 被 InstallTool 调用,返回 false 时,取消工具初始化。可以用于限制仅在 3d 模型中生效 | 事件回调 |
GetToolName | 设置工具名称 | 参数设置 |
PopulateToolSettings | 生成工具设置窗体。如果为 true,由当前工具决定显示内容,表现为不显示。 | 参数设置 |
OnPostInstall | 当工具加载完成后调用 | 事件回调 |
ExitTool | 调用后,退出当前工具 | 工具方法 |
OnCleanup | 当前工具结束时调用,不论什么原因结束,最后都会调用 | 事件回调 |
OnReinitialize | 重置工具到初始化状态,是为了方便操作,仅在 DgnElementSetTool 中可以使用。 | / |
什么是工具设置窗体?
每次启动一个工具时,都有这么一个窗体弹出,这就是工具的设置窗体。可以通过
PopulateToolSettings
返回 true 来关闭。
流程
由于DgnTool无法单独使用,所以此处不介绍其流程。每一个工具的流程详见子类相关文章。
说明
标记为 * 号的表示未弄明白其用途。
参考
《Microstation API Document》