Revit и Navisworks – Русский – только для чтения
В разделе вы можете обсудить любые вопросы, касающиеся Revit, Navisworks и других продуктов коллекции AEC, за исключением BIM 360. Делитесь знаниями, своими проектами и наработками. Станьте частью BIM-сообщества Autodesk.
отмена
Отображаются результаты для 
Показать  только  | Вместо этого искать 
Вы имели в виду: 

Сохранение таблицы поиска API

1 ОТВЕТ 1
РЕШЕНО
Ответить
Сообщение 1 из 2
pykin.vladik2
757 просмотров, 1 ответ

Сохранение таблицы поиска API

Таблица поиска импортируется(обновляется), но не применяется(Типоразмеры в семействе -> Применить). Пробую через 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(); // Наверное не так
                }    

1 ОТВЕТ 1
Сообщение 2 из 2
talalaevd
в ответ: pykin.vladik2

Пока что удалось решить через имитацию внесения изменений в параметр Изготовитель. Хотя по идее должно работать через суб транзакцию... но не работает. По логике  - после указания файла таблицы поиска для загрузки и закрытия диалогового окна данные проходят через суб транзакцию, потому как возвращаемся в диалоговое окно редактирования типоразмеров и можем отменить даже загрузку таблицы).

	                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));
				}	
			}


Дмитрий Талалаев
Эксперт BIM2B
Блог
Facebook | Twitter | LinkedIn

Не нашли то, что искали? Задайте вопросы в сообществе или поделитесь своими знаниями.

Новая тема  

Autodesk Design & Make Report