Здравствуйте! Возникла следующая ситуация, может кто сталкивался.
Сделал кнопку в плагине, которая получает определенные аттрибуты из выделенных элементов.
Элемент модели может содержать вкладку "Process" и аттрибут "OID"
Элемент модели может содержать вкладку "AECOSim" и аттрибут "uid"
Элемент не содержит ни одной из этих вкладок.
Пользователь выделяет элементы, нажимает кнопку и если в элементах есть каой нибудь из этих аттрибутов записывает их значения в комментарий.
Тестировал на нескольких машинах, все работает.
Отдаю заказчику, он тестирует у себя и говорит, что если он выделяет элементы, которые содержат вкладку "process". все работае и заполняется нормально, но при попытке взять аттрибут со вкладки "AECOSim", Navis крашится с ошибкой об отправке отчета и закрывается. Я не могу понять в чем причина, я обернул все в блок try-catch, по идее он должен ловить исключения и не крашится...
Может ли это быть связано с тем, что заказчик венгерский и винда и все языковые настройки у него на венгерском? Или же в коде что делаю не так?
Вот метод, который вызывается при нажатии на кнопку:
private void OID_Click(object sender, RoutedEventArgs e)
{
try
{
DocumentParts.DocumentCurrentSelection curSel = Application.ActiveDocument.CurrentSelection;
if (curSel.SelectedItems.Count > 0)
{
ModelItemCollection selectedItems = curSel.SelectedItems;
string val = String.Empty;
int i = 1;
foreach (ModelItem modelItem in selectedItems)
{
if (modelItem == null) continue;
if (GetValueFromModelItem(modelItem, "General", "OID") != null)
val += $"\nItem {i}: {GetValueFromModelItem(modelItem, "General", "OID")}";
if (GetValueFromModelItem(modelItem, "AECOsimID", "uid") != null)
val += $"\nItem {i}: {GetValueFromModelItem(modelItem, "AECOsimID", "uid")}";
i++;
}
NoteText.AppendText(val);
}
}
catch (Exception exception)
{
//ignore
}
}
private string GetValueFromModelItem(ModelItem modelItem, string categoryName, string propertyName)
{
if (modelItem.PropertyCategories.FindCategoryByDisplayName(categoryName) == null)
{
if (modelItem.Parent != null)
{
var parent = modelItem.Parent;
if (parent.PropertyCategories.FindCategoryByDisplayName(categoryName) == null)
else
{
DataProperty getValParent = parent.PropertyCategories.FindPropertyByDisplayName(categoryName, propertyName);
if (getValParent != null)
{
return getValParent.Value.ToDisplayString();
}
}
}
}
else
{
DataProperty getVal = modelItem.PropertyCategories.FindPropertyByDisplayName(categoryName, propertyName);
if (getVal == null)
MessageBox.Show($"Элемент {modelItem.DisplayName}. {categoryName} Найдена, но нет параметра {propertyName}.Запись не произведена")
else
{
return getVal.Value.ToDisplayString();
}
}
return null;
}