Написала в техподдержку, но они молчат

20.12.2018 14:37:31
Анна, пример рекурсивной обработки документа и всех вложенных фрагментов, с последовательным выводом метаданных в файл "asm_info.log".
T-FLEX CAD 17.1.21.0
|
|||
|
|
21.12.2018 11:13:09
vite, Благодарю, все работает!
|
|
|
|
18.12.2024 15:20:15
Если Вы хотите узнать включен ли фрагмент в конкретный состав изделия, то можно сделать так, например foreach (var i in document.GetFragments3D()) { string result = string.Empty; var bom = document.GetProductStructures().FirstOrDefault(x => x.SchemeId.ToString() == "0971322f-b6bb-46ae-891e-1abb26e0a252"); //guid вашей спецификации var rows = bom?.GetAllRowElements(); if(rows != null) { foreach (var row in rows) { if (row.SourceFragment3DFirstLevel != null && row.SourceFragment3DFirstLevel.ObjectId == i.ObjectId) { result = row.IncludeInDoc.Value.ToString(); } } } string[] contents = { "Документ:\t\t" + document.FileName, "Кол-во фрагментов:\t" + document.GetFragments3D().Count, " Индекс фрагмента:\t" + index, " Имя файла:\t\t" + i.FilePath, " Имя объкта:\t\t" + i.Name, " *** :\t" + i.ObjectId, " Полный путь:\t\t" + i.FullFilePath, " Включение в спецификацию:\t\t" + result, "========================================================" };
Изменено: |
|||
|
|
18.12.2024 15:37:30
|
|
|
|
18.12.2024 16:39:09
|
|
|
|
18.12.2024 17:09:51
К сожалению не работает первый способ, ошибку выдает "Ошибка компилятора CS1545"
При проверке переменной по shift F9 свойство "IncludeInSpecificBom" отсутствует, есть только свойство
Изменено: |
|
|
|
18.12.2024 17:44:03
string bomStatus = i.get_IncludeInSpecificBom("Спецификация").ToString(); |
|
|
|
18.12.2024 18:08:54
Получилось! private static void MetadataOutput(Document document) { int index = 0; foreach (var i in document.GetFragments3D()) { string bomStatus = i.get_IncludeInSpecificBom("Структура изделия").ToString(); if (i.Visible == true&& i.TopLevel==true) { string[] contents = { "Документ:\t\t" + document.FileName, "Кол-во фрагментов:\t" + document.GetFragments3D().Count, " Индекс фрагмента:\t" + index, " Имя файла:\t\t" + i.FilePath, " Имя объкта:\t\t" + i.Name, " Идентификатор:\t" + i.ObjectId, " Полный путь:\t\t" + i.FullFilePath, " Тело в которое входит в фрагмент:\t\t" + i.Body.Name, " Получить тип объекта:\t\t" + i.GroupType.ToString(), " Объект в сцене:\t\t" + i.InScene, " Уровень:\t\t" + i.Level.Value, " Guid:\t\t" + i.LinkedDocumentGuid.ToString(), " Видимость :\t\t" + i.Visible, " Видимость :\t\t" + i.VisibleInScene, " Имя на дисплее :\t\t" + i.DisplayName, " Количество элементов :\t\t" + i.Document.Bodies.Count, " Управление прозрачностью :\t\t" + i.IsTransparencyOn, " Свойство подавленности операции :\t\t" + i.Suppression.Suppress, " Признак верхней операции :\t\t" + i.TopLevel, " Верхняя операция в теле :\t\t" + i.TopOperation.Name, " Включение в спецификацию :\t\t" + bomStatus, "========================================================" }; File.AppendAllLines(path, contents); index++; if (TFlex.Application.OpenFragmentDocument(i.FullFilePath) is Document fragment) MetadataOutput(fragment); } } |
||||
|
|
|||