Таблица поиска импортируется(обновляется), но не применяется(Типоразмеры в семействе -> Применить). Пробую через doc.Save() сохранять, но не применяется.
UIDocument uidoc=this.ActiveUIDocument;
Document doc=uidoc.Document;
Family family = doc.OwnerFamily;
string filepath=@"C:\Users\Desktop\table.csv";
FamilySizeTableManager manager=FamilySizeTableManager.GetFamilySizeTableManager(doc,family.Id);
FamilySizeTableErrorInfo error=new FamilySizeTableErrorInfo();
using (Transaction tr = new Transaction(doc,"Update Table")) {
tr.Start();
try
{
manager.ImportSizeTable(doc,filepath,error);
TaskDialog.Show("Work", "Таблица обновлена");
}
catch (Exception er)
{
TaskDialog.Show("Error",er.Message);
}
tr.Commit();
doc.Save(); // Наверное не так
}
Решено! Перейти к решению.
Решено: talalaevd. Перейти к решению.
Пока что удалось решить через имитацию внесения изменений в параметр Изготовитель. Хотя по идее должно работать через суб транзакцию... но не работает. По логике - после указания файла таблицы поиска для загрузки и закрытия диалогового окна данные проходят через суб транзакцию, потому как возвращаемся в диалоговое окно редактирования типоразмеров и можем отменить даже загрузку таблицы).
UIDocument uidoc= this.ActiveUIDocument; Document doc=uidoc.Document; Family family = doc.OwnerFamily; string filepath=@"D:\test.csv"; string erroText =""; FamilySizeTableManager manager = FamilySizeTableManager.GetFamilySizeTableManager(doc,family.Id); FamilySizeTableErrorInfo errorInfo = new FamilySizeTableErrorInfo(); FamilyType ftype = doc.FamilyManager.CurrentType; FamilyParameter fp = doc.FamilyManager.get_Parameter(BuiltInParameter.ALL_MODEL_MANUFACTURER); string manString = ftype.AsString(fp); using (Transaction tr = new Transaction(doc,"Update Table")) { tr.Start(); doc.FamilyManager.Set(fp,"some data123"); if (null == manager) { FamilySizeTableManager.CreateFamilySizeTableManager(doc,family.Id); manager = FamilySizeTableManager.GetFamilySizeTableManager(doc,family.Id); } try { if (!manager.ImportSizeTable(doc,filepath,errorInfo)) { switch (errorInfo.FamilySizeTableErrorType) { case FamilySizeTableErrorType.Undefined: erroText = "Неизвестная ошибка"; break; case FamilySizeTableErrorType.FileNotFound: erroText = "Файл таблицы не найден"; break; case FamilySizeTableErrorType.CannotOpenFile: erroText = "Невозможно открыть файл таблицы"; break; case FamilySizeTableErrorType.CannotReadFile: erroText = "Невозможно прочитать содержимое таблицы"; break; case FamilySizeTableErrorType.InvalidHeaderSeparator: erroText = "Файл таблицы содержит неверные символы разделителя заголовка"; break; case FamilySizeTableErrorType.CannotParseColumnHeader: erroText = "Таблица содержит неверный заголовок"; break; case FamilySizeTableErrorType.IncorrectNumberOfColumns: erroText = "Таблица содержит неверное количество столбцов"; break; default: throw new Exception("Invalid value for FamilySizeTableErrorType"); } } } catch (Exception er) { TaskDialog.Show("Error",er.Message); } doc.FamilyManager.Set(fp,null == manString? "":manString); tr.Commit(); if (erroText == "") { TaskDialog.Show("Info",String.Format("Таблица {0} загружена в семейство {1}",filepath,family.Name)); } else { TaskDialog.Show("Info",String.Format("Таблица {0} не была загружена в семейство {1}\nОшибка: {2}",filepath,family.Name,erroText)); } }
Не нашли то, что искали? Задайте вопросы в сообществе или поделитесь своими знаниями.