此帖
如何遍历模型包括外部引用在内的所有元素 - 技术资料库 - Bentley 中国优先社区 - Bentley Communities
使用的是mdlfence函数,但是我用的是fencemanager,fence范围正确,但是只返回的当前模型的元素,代码见下
FenceManagerR manager = FenceManager::GetManager(); ViewportP vpActive = IViewManager::GetActiveViewSet().GetSelectedViewport(); manager.DefineByPoints(&pts[0], 5, vpActive);//pts为测试点 FenceParamsP fenceParams = FenceParams::Create(ACTIVEMODEL); fenceParams->SetClipMode(FenceClipMode::None); fenceParams->SetOverlapMode(true); fenceParams->SetLocateInteriors(LocateSurfacesPref::Always); manager.InitFromActiveFence(*fenceParams, true, false, FenceClipMode::None); DgnModelRefList searchList; for (const DgnModelRefP& modelP : models)//models 包含当前model和参考文件里的model searchList.push_back(modelP); ElementAgenda agenda; manager.BuildAgenda(*fenceParams, agenda, &searchList, false, false, false); FenceParams::Delete(fenceParams);
请问哪里需要改进?
将BuildAgenda中的参数&searchList直接改成tcb->searchModelList试一下。
Answer Verified By: Chao Cheng
这个tcb结构的作用是什么,文档里没看懂...
TCB=Terminal Control Block(终端控制块)。它是一个全局结构体。里面保存了大量系统当前参数,可以直接使用。比如tcb->lstvw表示当前视图号。lstvw = last view
感谢解惑!
这个问题提得非常好,估计后续还会有用户问到这类问题。为此专门写了一个Wiki文章留存。