bentley二次开发新人一枚。
继承DgnElementSetTool实现一个工具,想框选Text类型的元素,然后把这些元素全部插入到ElementAgenda中,进行后续操作。
目前点选元素是可以调用BuildLocateAgenda函数的,但框选元素则不会调用这个函数。
想问各路大神,如何框选元素,把它们全部插入到ElementAgenda中。
在此提前感谢。
Bentley::DgnPlatform::ElementAgenda agenda; Bentley::DgnPlatform::SelectionSetManager::GetManager().BuildAgenda(agenda); for (auto i = agenda.begin(); i != agenda.end(); ++i) { if (i 是text类型){ } }
刘工你好,谢谢你提供了选择text类型的思路。 你这个是创建了一个自定义的agenda吧,我希望的是框选后直接调用系统的ElemetnAgenda...
建议您看看一下上边张老师发的那篇违章,详细讲解了DgnElementSetTool的流程。
没法编辑过。
试着使用for 也不行。。。
下图这样编译也不行?
请您先将如下教程从浅入深地学习一遍,这个DgnTool交互工具确实非常复杂。
还有就是利用VS的全文件搜索功能到SDK的所有例子中去搜索_FilterAgendaEntries就能找到如下一个现成的例子:
bool CheckShapeTool::_FilterAgendaEntries() { bool changed = false; EditElementHandleP curr = GetElementAgenda ().GetFirstP (); EditElementHandleP end = curr + GetElementAgenda ().GetCount (); for (; curr < end ; curr++) { if (_OnFilterElement (*curr, NULL)) { curr->Invalidate (); changed = true; } } return changed; }