У документа T-Flex есть метод GetProductStructures, который позволяет получить коллекцию всех его структур (составов), т. е. коллекцию объектов ProductStructure. Можно ли как-то получить текущую структуру (т. е. выбранную в окне состава изделия в самом T-Flex) в этой коллекции?
ainis, класс "ProductStructure" содержит свойство "IsShownInProductStructureWindow", но оно будет работать только при открытом окне "Состав изделия". По большому счету не важно, какая схема является активной в окне "Состав изделия". Вы можете определить целевую колонку по идентификатору. И если колонка существует, то можно получить данные. Например,
Код
foreach (var ps in document.GetProductStructures())
{
var schemeId = new Guid("0971322f-b6bb-46ae-891e-1abb26e0a252"); // идентификатор схемы по умолчанию
if (schemeId != ps.SchemeId)
continue;
var scheme = ps.GetScheme();
var paramId = new Guid("65a997a7-d897-45f8-9723-501243b4ecf7"); // целевой идентификатор пользовательского параметра
var descriptor = scheme.GetParameterDescriptor(paramId);
if (descriptor == null)
continue;
// последующая обработка данных ...
}
Идентификатор параметра создается автоматически на момент добавления колонки. Получить его можно после выгрузки схемы. Для этого нужно нажать в левой области окна "Параметры состава изделия" на кнопку "Сохранить свойства как тип". Обратите внимание, привязка параметра к переменной модели осуществляется на уровне детали. Выгруженная схема должна быть включена как на уровне детали, так и на уровне сборки (дополнительную информацию см. в разделе Состав изделия, отчеты, спецификация).