public void BOMQuery()
{
if (assemblyDocument.ComponentDefinition.IsiAssemblyMember)
{
iAssemblyFactory assemblyFactory = assemblyDocument.ComponentDefinition.iAssemblyMember.ParentFactory;
iAssemblyTableRows tableRows = assemblyFactory.TableRows;
string str = "";
foreach (iAssemblyTableRow tableRow in tableRows)
{
//iAssemblyMember member = ....
//BOM oBOM = member.Parent.BOM; <-- интересно можно ли перейти от iAssemblyFactory к каждому iAssemblyMember, а затем к его BOM
BOM oBOM = assemblyFactory.Parent.BOM;
oBOM.StructuredViewFirstLevelOnly = true;
oBOM.StructuredViewEnabled = true;
BOMView oBOMView = oBOM.BOMViews[2];
assemblyFactory.DefaultRow = tableRow; // <-- можно ли здесь по-другому реализовать
oBOMView.iAssemblyMemberName = tableRow.MemberName;
//Пока выводим только PartNumber и количество для каждой конфигурации
string str3 = "";
foreach (BOMRow oRow in oBOMView.BOMRows)
{
Document oDoc = (Document)oRow.ComponentDefinitions[1].Document;
string str1 = oDoc.PropertySets["Design Tracking Properties"]["Part Number"].Value.ToString();
string str2 = oRow.ItemQuantity.ToString();
str3 += str1 + "\t:" + str2 + "\n";
}
str += str3 + "\n";
}
MessageBox.Show(str);
}
}