Получение пользовательских материалов из цехов
В первую очередь у меня нет встроенных фейерверков, установленных на моем компьютере, но используйте файлы для проекта.
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);