如上图 我使用代码获取上述图层的id获取不到 这是为啥 ?我之前是可以获取的,但是不知道做了什么操作之后就获取不到了
LevelId level; level = dgnModelPtr->GetLevelCache().GetLevelByName(LevelName).GetLevelId();
试试ISessionMgr::GetActiveDgnFile()->GetLevelCacheR,如果不行,请 上传一下您的测试文件。
尝试了 获取到的id都是0
我用如下层遍历代码测试了,没有问题,各个层都是可以获得到的。推测是您给的LevelName不正确导致的。
StatusInt lvlIteratorFunc(LevelHandle lvlHandle, CallbackArgP arg) { if (!lvlHandle.IsValid()) { mdlDialog_dmsgsPrint(L"Invalid LevelHandle"); return SUCCESS; } LevelId levelID = lvlHandle.GetLevelId(); LevelCode lvlCode; WChar tsLevelName[MAX_LEVEL_NAME_LENGTH]; mdlLevel_getCode(&lvlCode, MASTERFILE, levelID); mdlLevel_getName(tsLevelName, MAX_LEVEL_NAME_LENGTH, MASTERFILE, levelID); WPrintfString wStr(L"LvlName=%s, lvlId=%d, lvlCode=%d", tsLevelName, levelID, lvlCode); mdlDialog_dmsgsPrint(wStr); return SUCCESS; } void levelIteratorTest() { FileLevelCacheR levelCache = ISessionMgr::GetActiveDgnFile()->GetLevelCacheR(); for (LevelHandle lvlHandle = levelCache.begin(); lvlHandle != levelCache.end(); ++lvlHandle) { lvlIteratorFunc(lvlHandle, nullptr); } }
输出结果如下:
我这种带中文的是不是得做什么处理
chenyu said:我这种带中文的是不是得做什么处理
是的。应该是在工作空间中配置了层名显示格式。这不是真实的层名。