老师好,问题如下:
我拟在一个命令中实现先选择一个元素,然后选点的操作。
实现:Class A派生自DgnElementSetTool, Class B派生自DgnPrimitiveTool;
A.InstallTool,A.OnDataButton函数中(1、接受选择,2、A.ExitTool, 3、启动B.InstallTool() )
发现可以进入B.OnPostInstall(), 但就直接退出了,不能选择点。求指导。
不能这么设计。一个工具的所有操作最好都要在一个DgnTool类中实现。选择元素和点选都要在OnDataButton中去做,可通过判断当前的ElementAgenda中是否有元素来推断当前是选中了一个元素还是没有选中。请多读一下SDK例子中有关DgnTool类的相关例子。
Answer Verified By: xiaoping xia
符老师,再问一下,ElementAgenda怎么用的?GetCount始终为0。.
DgnElementSetTool::LocateOneElement可以在鼠标点附近搜寻元素,搜到的元素会被添加到DgnElementSetTool::ElementAgenda中
xiaoping xia said:ElementAgenda怎么用的?GetCount始终为0
学习某个函数如何调用的最佳方法是找一个例子,你到SDK的examples下搜索一下能找到大量的例子在用GetCount()。其用法是:
GetElementAgenda().GetCount()。您试一下这个方法。
如果仍然是0,说明你工具中目前确实没有选中任何元素。
需要重写LocateOneElement方法吗?我这边显示找不到元素
您重写一些该函数:
protected override void LocateOneElement(DgnButtonEvent ev, bool newSearch) { base.LocateOneElement(ev, newSearch); }
您好,我重写以后,在OnDataButton中调用,还是为0,是不是我的调用方式有问题,我刚刚接触DgnElementSetTool
OnDataButton函数是鼠标在视图中点击左键时被调用的,在基类DgnElementSetTool的OnDataButton实现中会调用LocateOneElement去定位元素并添加到ElementAgenda中,如果您重写了OnDataButton函数,在重写的OnDataButton函数中如果没有调用LocateOneElement后者调用基类DgnElementSetTool的OnDataButton函数,那ElementAgenda中肯定没有元素了