Сообщество программистов Autodesk в СНГ

ADN Club => AutoCAD .NET API => Тема начата: avc от 19-05-2016, 15:36:46

Название: Название материала солида
Отправлено: avc от 19-05-2016, 15:36:46
Нужно получить имя материала, присвоенного солиду. Свойство Material всегда пустое (вообще не понятно зачем оно). Свойство MaterialId указывает на нужный материал, но есть засада: как правило там "странные" материалы с именами Global, ByLayer, ByBlock. Не предоставляю как понять, что это не настоящее имя материала - ведь эти названия зависят от локализации. У слоев есть MaterialId - наверно разберусь. ByBlock для объекта вне блока наверно всегда будет присваивать Global, так? А сам Global - может быть переименован? Может есть какой-то универсальный способ находить действующий материал? Интересует только имя материала, текстуры всякие не имеют значения.
Спасибо.
Название: Re: Название материала солида
Отправлено: Александр Пекшев aka Modis от 19-05-2016, 15:42:11
http://adndevblog.typepad.com/autocad/2012/03/getting-material-name-associated-with-a-face.html
Название: Re: Название материала солида
Отправлено: Александр Ривилис от 19-05-2016, 16:24:01
Свойство MaterialId указывает на нужный материал, но есть засада: как правило там "странные" материалы с именами Global, ByLayer, ByBlock. Не предоставляю как понять, что это не настоящее имя материала - ведь эти названия зависят от локализации.
Зависят. Но сравнить полученное имя и "локализованное имя" для ByBlock и ByLayer - не проблема. Для этого есть метод:
Код - C# [Выбрать]
  1. Autodesk.AutoCAD.Runtime.Utilities.GetReservedString(ReservedStringEnumType reservedType,  bool bGetLocalized);
передаёшь ему reservedType == ReservedStringEnumType.ByBlock (или ReservedStringEnumType.ByLayer) и bGetLocalized == true и получаешь соответствующее локализованное имя.
Название: Re: Название материала солида
Отправлено: avc от 19-05-2016, 16:39:28
Александр Пекшев aka Modis, не-а. Там просто материал грани извлекается. У меня правда не получилось так извлечь - ругается что IsDeleted при получении MaterialId, но даже если получится - наверняка на выходе будет тот же "ByLayer"
Александр Ривилис, а вот это уже очень даже пригодится. Тут и стили ячеек таблицы есть! Спасибо!