各位老师好,我写了一个函数用来给创建的level分配材质:
但是实际运行发现并没有分配材质成功。经过调试发现获取到的materialid的elementid为一个很大的数字:
这是否表示获取材质失败?请问要如何解决?
创建Level或改变Level的属性后需要重写LevelTable。请在你代码最后调用一下myCache.Write();试一下。
你好,付老师,还是不行。
不知道是不是因为我选择这个材质的代码不对?
var materialId = new MaterialId("Concrete");
我用如下c/c++代码测试是可以的,c#的MaterialId封装不全,缺少一个参数为Material类型的构造函数。
EditLevelHandle editLvlHandle(ISessionMgr::GetActiveDgnFile()->GetLevelCacheR().GetLevelByName(L"myLvl")); MaterialId mateId(L"ImportedMaterial"); MaterialSearchStatus localSearchStatus; MaterialCP materialCP = MaterialManager::GetManagerR().FindMaterial(&localSearchStatus, mateId, *ISessionMgr::GetActiveDgnFile(), *ACTIVEMODEL, true); MaterialId mateId1(*materialCP); LevelDefinitionMaterial lvlDefMate(mateId1.GetElementId(), ISessionMgr::GetActiveDgnFile()); editLvlHandle.SetByLevelMaterial(lvlDefMate);
好的,我去试试C++接口。
你好,您这段代码我本机有报错: