LearnDgnTool-03_DgnPrimitiveTool的使用_交互式放置线串


我们再通过一个交互式画线的工具来看一下DgnPrimitiveTool稍微复杂点的用法。

communities.bentley.com/.../6758.LearnDgnTool_5F00_Ver2.7z

上面的链接实现了交互式画线工具,编译完成后,打开任意Dgn文件,执行Key-in命令:mdl load LearnDgnTool;LearnDgnTool DrawLineString,激活我们的工具。现在在视图中通过单击鼠标左键输入若干点后,会看到在输入的点之间会显示一条线串,线串的终点还会随着光标的位置动态的改变。键盘 输入“Ctrl+Z”后,会撤销最后输入的一个点。单击鼠标右键后,结束放置,会在鼠标左键输入的点之间真正生成一条线串。

接下来看一下我们的工具是如何实现的,我们这里在_OnPostInstall函数里边启动了撤销功能,随后用户输入“Ctrl+Z”时_OnUndoPreviousStep函数就会被调用,这样用户在输入有误的情况下可以撤销一些输入。_OnPostInstall执行完后我们的工具就真正被激活了,接下来用户在视图中单击鼠标左键时我们重写的_OnDataButton函数就会被调用。在这个函数里边,我们把用户输入的点保存到成员变量“bvector<DPoint3d> m_ptVcr”中,之后判断如果是输入的第一个点就要启动动态绘制的功能了。动态绘制功能启动后,我们在这里临时绘制用户如果输入确认点后放置出来的效果。在_OnUndoPreviousStep函数中我们把用户最近输入的点清除,如果所有输入的点都被清除的话,就关闭动态绘制。在_OnResetButton函数中我们通过用户输入的点生成一条LineString并添加到Model中,最后调用_OnReinitialize函数。