目前我的想法是这样,我想在自己的窗口中点击一个按键,点击后可通过tentative获取点云中点的坐标,若选中了点云中的点,则获取该点的坐标值添加到我的窗口内,tentative接口应该能判断是否选中了点,我在使用tentative工具时在选中点和没选中的时候会有两个状态这里或许我还可以再加一些限制条件,比如限定图层之类的;而后再点击该按键或其他设计一个按键会关闭选点工具,后续使用tentative时不会再添加数据到窗口内
目前问题有两个,一个是我不知道怎样通过编程调用函数获取tentative获取的点的坐标,我搜索sdk帮助文档时查到了一些内容,但不知道怎样创建最初的对象,需要哪些参数,怎样实现获取坐标的这个过程
第二个问题是我不知道怎样将按键工具和tentative进行关联,这几天学习了下dgntool的内容,我目前的想法是或许可以写一个dgntool,点击按键开启工具,在工具内重写tentative左右键选点的内容,添加获取点数据到窗口内的过程,但不知道dgntool能不能关联上tentative,或许有其他方法不用dgntool也可以,只要能实现点击按键后能将捕获的点坐标获取到后台并添加到窗口内就行,然后该工具可关闭
目前来看C++的编程是比较全的,能对tentative进行编辑,在C#内没找到相应内容,若有C#可实现相应功能的方法也可,请各位老师指点一下
DgnTool下有各种响应用户操作的事件回调函数,例如用户单击鼠标左键回调用_OnDataButton函数,单击鼠标右键会回调_OnResetButton函数,但是左右键一起按没有回调函数,这个操作被Mstn捕获处理了,用于拾取tentative点了,虽然左右键一起按不能被我们的DgnTool捕捉,但是左右键同时按下输入的tentative点,在用户按下左键时会被传递给_OnDataButton函数,在这个函数里边正常获取点就行了,系统的绘图工具也是这样,您可以试试,例如画线的工具,您启动后,先左右键同时按下定了一个tentative点,然后不管您在视图哪个位置单击鼠标左键线都是从之前的tentative点开始画的。
Answer Verified By: mengqi fu
哦哦哦!原来是这样,那我直接在OnDataButton内编辑内容就好了,后续就好办了,左右键同按后再点击左键是说这个参数会变成之前选中的点的坐标是吧?
是的,ev.GetPoint获取
好的好的,再多问一个问题,能否在OnDataButton中调用Tentative的一些属性?比如mdlTentPoint_isSnapped或者其他类似的属性,能判断tentative当前有没有选中元素,就如在软件中使用tentative时选中对象的十字是实线,未选中状态的是虚线?我还是想在选点前加一个判断,因为若把选点部分的内容写到OnDataButton中后,若Tentative没有选中点,则会返回鼠标光标所在的位置,但不一定是三维场景中元素的坐标,所以想只有tentative选中点云中点对象后,才执行操作
应该是可以的,但是选元素的交互式工具最好是从DgnElementSetTool派生自己的工具类来实现。