[MSCE]C# 材质问题

符老师,有什么函数可以获取材质图片的地址吗?

还有当材质的颜色选择使用元素颜色时,怎么能得到元素的RGB值,之前找到的颜色都是一个uint或者double的值

Parents
  • 目前只找到C++部分,您可以参考下,其中最后通过DgnColorMap::ExtractElementColorInfo可以获得clrDef,clrDef.m_rgb.red就是R,clrDef.m_rgb.green就是G,clrDef.m_rgb.blue就是B:

    	UInt32       clrId, clrIdx;
        bool         isTrueClr;
        WString      bookName, clrName;
    	LevelId lvlID;
    	LevelCacheR lvlCache = eh.GetDgnModelP()->GetLevelCacheR();
    	LevelHandle lvlHandle = lvlCache.GetLevel(lvlID);
        clrId = lvlHandle.GetByLevelColor().GetColor();
        DgnColorMapP pClrMap = DgnColorMap::GetForDisplay(eh.GetDgnModelP());
        IntColorDef  clrDef = pClrMap->GetColor(clrId);
        pClrMap->ExtractElementColorInfo(&clrDef, &clrIdx, &isTrueClr, &bookName, &clrName, clrId, *eh.GetDgnFileP());

    Answer Verified By: xz h 

Reply
  • 目前只找到C++部分,您可以参考下,其中最后通过DgnColorMap::ExtractElementColorInfo可以获得clrDef,clrDef.m_rgb.red就是R,clrDef.m_rgb.green就是G,clrDef.m_rgb.blue就是B:

    	UInt32       clrId, clrIdx;
        bool         isTrueClr;
        WString      bookName, clrName;
    	LevelId lvlID;
    	LevelCacheR lvlCache = eh.GetDgnModelP()->GetLevelCacheR();
    	LevelHandle lvlHandle = lvlCache.GetLevel(lvlID);
        clrId = lvlHandle.GetByLevelColor().GetColor();
        DgnColorMapP pClrMap = DgnColorMap::GetForDisplay(eh.GetDgnModelP());
        IntColorDef  clrDef = pClrMap->GetColor(clrId);
        pClrMap->ExtractElementColorInfo(&clrDef, &clrIdx, &isTrueClr, &bookName, &clrName, clrId, *eh.GetDgnFileP());

    Answer Verified By: xz h 

Children
No Data