Получение пользовательских материалов из цехов

В первую очередь у меня нет встроенных фейерверков, установленных на моем компьютере, но используйте файлы для проекта.

Solidworks имеет возможность создать пользовательскую вкладку для свойств файла. На этой вкладке вы можете найти всю информацию о модели (части), созданной в SolidWorks.

Я прочитал всю эту информацию и сохранил ее в файле .txt, см. изображение. Внутри этой информации вы можете найти материальный тип детали, в который входит мой вопрос. enter image description here

Я знаю тип материала, однако в SolidWorks пользователь может также назначить custom materials для материала, определенного в пользовательских свойствах. Например, материал является обычным деревом, но пользователь хочет, чтобы это дерево было розовым.

Можно ли зачитать custom materials, прикрепленные к материалу в пользовательских свойствах?

Ответ 1

Чтобы прочитать свойства материала, попробуйте:

ModelDoc2 swModel = (ModelDoc2)swApp.ActiveDoc;
PartDoc swPart = (PartDoc)swModel;
double[] propertyValues = swPart.MaterialPropertyValues;

Согласно Документация SOLIDWORKS:

Значения материала включают в себя цвет (значения R, G, B), отражательную способность (окружающая, диффузная, зеркальная, блеск), прозрачность и эмиссия.

Формат параметров или возвращаемых значений представляет собой массив удвоений следующим образом: [R, G, B, Ambient, Diffuse, Specular, Shininess, Transparency, Emission]

Все элементы должны находиться в диапазоне от 0 до 1.

Ответ 2

Если у вас нет установленных SOLIDWORKS, вы можете использовать document manager (требуется активная подписка SOLIDWORKS, чтобы получить ключ) для доступа к пользовательским свойствам

String sLicenseKey = "Your key from SOLIDWORKS";
SwDmDocumentOpenError nRetVal = 0;
SwDmCustomInfoType customInfoType;
SwDMClassFactory swClassFact = new SwDMClassFactory();
SwDMApplication swDocMgr = (SwDMApplication)swClassFact.GetApplication(sLicenseKey);
SwDMDocument17 swDoc = (SwDMDocument17)swDocMgr.GetDocument("C:\Filepath", SwDmDocumentType.swDmDocumentPart, false, out nRetVal);
SwDMConfigurationMgr swCfgMgr = swDoc.ConfigurationManager;
SwDMConfiguration14 swCfg = (SwDMConfiguration14)swCfgMgr.GetConfigurationByName("Config Name");
String materialProperty = swCfg.GetCustomProperty2("Property Name", out customInfoType);