DgnPrimitiveTool 详细说明文档

本文主要总结 DgnTool 的触发逻辑,同时介绍其中的参数设置。

它是所有 Tool 的基类,在使用过程中,不能直接派生于它,而是要从 DgnViewToolDgnPrimitiveTool 派生。

方法分类

dgnTool 中的方法按作用分类,分为:

  1. 事件回调

  2. 参数设置

    参数设置分为两种,一种是调用型,一种是重写型。

    调用型的方法无法重写,使用时需要主动调用;

    重写型的方法可以通过重写,来进行设置,工具会自动调用。

  3. 工具方法

    工具方法分为一般方法、虚方法、静态方法。这些都需要主动调用才产生效果。

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 中可以使用。 /

什么是工具设置窗体?

image-20220522072349830

每次启动一个工具时,都有这么一个窗体弹出,这就是工具的设置窗体。可以通过 PopulateToolSettings 返回 true 来关闭。

流程

由于DgnTool无法单独使用,所以此处不介绍其流程。每一个工具的流程详见子类相关文章。

说明

标记为 * 号的表示未弄明白其用途。

参考

《Microstation API Document》