符老师 ,如何获得隔离集里面所有元素(这些元素不一定选中,SelectionSetManager这个不能用) 求符老师指导
可以调用mdlScanCritera_xxx这套函数来扫描。其中有mdlScanCritera_setDisplaySetTest (pScanCriteria, true)来控制对显示集里面的元素的过滤。
顺便问一下符老师 如何判断view存不存在隔离集?
我 后理论没有隔离集了 但还有这个标签 有这个标签 我用函数 mdlView_getDisplayControl 就一直判断有隔离集 这就尬尴了
这个标签仅仅表示View Attributes中的DisplaySet这个开关是On的,并不表明某些元素被隐藏了(隔离了)
mdlScanCritera_setDisplaySetTest true与false 都搜索不到元素
public ref class ScanEle { private: ScanCriteriaP m_sc; static int ScanCallback(ElementRefP eleRef, void* userData, ScanCriteriaP scP); private: static SCG::List<BMElements::Element^>^ m_eles; public: ScanEle() { m_sc = mdlScanCriteria_create(); m_eles = gcnew SCG::List<BMElements::Element^>(); } ~ScanEle() { if(m_sc!=NULL) { mdlScanCriteria_scan(m_sc, nullptr, nullptr, nullptr); mdlScanCriteria_free(m_sc); } } public: void ScanIoslate(bool includeDisplaySet); SCG::List<BMElements::Element^>^ GetScanEles(); }; void ScanEle::ScanIoslate(bool includeDisplaySet) { mdlScanCriteria_setDisplaySetTest(m_sc, includeDisplaySet); } int ScanEle::ScanCallback(ElementRefP eleRef, void* userData, ScanCriteriaP scP) { EditElementHandle eeh(eleRef, scP->GetModelRef());//这里就不会进 BMElements::Element^ scE = ...... m_eles->Add(scE); return 0; } SCG::List<BMElements::Element^>^ ScanEle::GetScanEles() { PFScanElemRefCallback callb = reinterpret_cast<PFScanElemRefCallback>(ScanEle::ScanCallback); mdlScanCriteria_setElemRefCallback(m_sc, callb, NULL); return m_eles; }
您可以试试这个函数elementRef_isInDisplaySet