调用rmtl文件赋予给选取对象如何写?

我试了试的确不行,虽然 rs.Command("_RenderLoadMaterialFromFile F:\test.rmtl") 能把材质放到 Rhino 的材质库中,但是 不管是 python script 还是 RhinoCommon SDK 都不能对材质库中从未赋值的材质直接进行操作,能够操作的只有已经做过赋值操作的材质

材质库中的材质都存放在 scriptcontext.doc.RenderMaterials 中,而场景中物件所具有的材质是在 scriptcontext.doc.Materials,如果材质库中的材质未赋给任何物件,强行操作就会报错。最多只能做到读取材质材质库中材质的数量和材质的名称。

ObjectMaterialIndex 函数也只能把 scriptcontext.doc.Materials 中的材质再赋予给其他物件,不能操作 RenderMaterials。换句话说就是 只能操作你用代码自定义的材质和已经为物件赋值过的材质。

RhinoObject 这个类有 RenderMaterial 属性,但这个属性是只读的,可以看出来这是做了一些保护,不能够随意操作的。

包括下面这个帖子中,该楼主所提出的第二个问题,需求和你是一样的, Dale 给出的建议也不包含任何需要用代码来实现的操作:

如果非要用 rmtl 的话,看来只能自己解析 XML 了。