根据郭老师之前相关帖子的回复,如下代码 但是执行图层SetOverrideMaterial 返回值为False
var levelCache = Session.Instance.GetActiveDgnModel().GetFileLevelCache(); var handles = levelCache.GetHandles(); EditLevelHandle newLevel; if (handles.Contains(t => t.Name == LevelName)) { var temp = levelCache.GetLevelByName(LevelName); newLevel = temp.GetEditHandle(); } else { newLevel = levelCache.CreateLevel(LevelName); } //设置图层颜色 newLevel.SetByLevelColor(new LevelDefinitionColor(color.To_Uint(), Session.Instance.GetActiveDgnModel().GetDgnFile())); var materialId = new MaterialId("Concrete_3"); var result = newLevel.SetOverrideMaterial(new LevelDefinitionMaterial(materialId.ElementId, Session.Instance.GetActiveDgnModel().GetDgnFile())); levelCache.Write();
其中LevelName 为新建图层名称,可替换任意字符串
若图层材质设置成功之后,请问一下老师,这个属性对应的API是?
先用现有图层测试一下。如果可行的话,新建图层后写一下层表再做这个动作。
还有,我不太了解为何要用代码来操作层属性。按照标准的设计工作流程,应该由管理员事先创建好供各个专业使用的图层库,真实的工程师仅需要引用合适的图层使用即可。
现有业务场景是要 将已有的Json文件数据转化为相关模型,其中图层和图层属性都是通过Json数据来的,也就是对于我来说,这个得搞成动态创建分配属性。
我刚测试了现有图层,也不能给图层属性赋值
颜色是可以赋值上去的
1、含有材质Concrete_3的调色板是否实现导入到了当前文件中?
2、检查一下materialId.ElementId返回的值是否有效?
名称存在
应该是创建ID异常,{18446744073709551615},那请问符老师,已知材质名称如何获取到对应MaterialId ?