I can use the GetRenderMaterials2 method of the model doc extension to get the number of appearances that are present in a model. I also get the actual colors associated with it.
However, I'm unable to modify/delete or add new appearances using this interface. I'm using C+/CLI. This is the code that I use. Note that modext is the extension property of IModelDoc2.
array<Object^>^ allRend = (array<Object^>^)modext->GetRenderMaterials2(1, tname);
for (int i = 0; i < allRend->Length; ++i)
RenderMaterial^ rend = (RenderMaterial^)allRend[i];
std::cout << "\n" << rend->PrimaryColor;
int id1, id2;
bool chk = modext->DeleteDisplayStateSpecificRenderMaterial(id1, id2);
std::cout << "\tdeleted " << chk;
1. The API examples simply delete using the material id but that does not work here. Am I doing something wrong in the deletion?
2. I tried to change the color property of the appearance as- rend->PrimaryColor = 100 (some shade of red). But this has no effect on the model. Are there other operations that need to be done prior to this?