Revit Table Lookup.

Автор Тема: Revit Table Lookup.  (Прочитано 3683 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн HohilАвтор темы

  • ADN OPEN
  • Сообщений: 3
  • Карма: 0
Revit Table Lookup.
« : 07-11-2016, 18:44:48 »
Уважаемые программисты, прошу помощи в написании макроса.
Необходимо в активном проекте REVIT, у семейства (загруженного в данный проект) выполнить обновление таблиц выбора(manage lookup tables - табличные базы данных в формате *.csv), без редактирования самого семейства.
Иными словами,написать макрос, который бы, при выборе семейства в текущем проекте, обновлял выбранную таблицу из имеющихся в семействе табличных форм( lookup tables ).

Оффлайн Виктор Чекалин

  • Administrator
  • *****
  • Сообщений: 694
  • Карма: 111
  • Skype: chekalin-v
Re: Revit Table Lookup.
« Ответ #1 : 07-11-2016, 23:19:13 »
Hohil, доброго времени суток. Прошу уточнить, вы ищете человека, который вам напишет такой макрос, или вы хотите сами написать, но не знаете в каком направлении двигаться и с чего начать?

Оффлайн HohilАвтор темы

  • ADN OPEN
  • Сообщений: 3
  • Карма: 0
Re: Revit Table Lookup.
« Ответ #2 : 08-11-2016, 08:55:34 »
Добрый день, Виктор. Хотелось бы в идеале разобраться самому (очень поверхностно знаком с Revit API), ну или позаимствовать похожий код, если когда-нибудь, кто-либо сталкивался с данной необходимостью.

Если же все таки данная просьба - вопрос частного характера, то можем обсудить рабочие моменты и условия с человеком, готовым взяться за эту работу.

Оффлайн HohilАвтор темы

  • ADN OPEN
  • Сообщений: 3
  • Карма: 0
Re: Revit Table Lookup.
« Ответ #3 : 23-12-2016, 17:38:41 »
Вообщем и целом, не получив ни одного ответа и ни одного комментария по данному вопросу, пришлось решать данную проблему самому, и в процессе изучения C#, Revit API и написания самого макроса, возникли следующие проблемы и вопросы, прошу всех небезразличных прокомментировать сие творение) Строго не судите, мое самообразование началось с момента написания первого сообщения:
Мои рассуждения и комментирование кода:
1)Первом делом нужно выбрать семейство, загруженное в текущий проект REVIT для дальнейший работы с ним:
Код - C# [Выбрать]
  1.                        
  2.                         UIDocument uidoc=this.ActiveUIDocument;
  3.                         Document doc=uidoc.Document;
  4.                         Selection sel=uidoc.Selection;
  5.                         Reference hasPickOne = sel.PickObject(ObjectType.Element);
  6.                         ElementId el=hasPickOne.ElementId;
  7.                         Element element=doc.GetElement(el);
  8.                         FamilyInstance familyinstance=element as FamilyInstance;
  9.                         Family family=familyinstance.Symbol.Family;
  10.  
2)Экземпляр семейства мы выбрали, далее возникает вопрос: как получить метод ImportSizeTable класса FamilySizeTableManager, не имея в нем никаких членов ссылающихся на семейство       загруженное в проект(которое мы получили в пунтком 1), кроме как метода GetFamilySizeTableManager()- как работает этот метод я так и не понял.
Но не останавливаясь на достигнутом я решил продолжить, родился этот код:
Код - C# [Выбрать]
  1.                            
  2.                         Document fd=doc.EditFamily(family);
  3.                         string path=@"";
  4.                         FamilySizeTableManager manager=FamilySizeTableManager.GetFamilySizeTableManager(fd,el);
  5.                         FamilySizeTableErrorInfo error=new FamilySizeTableErrorInfo();
  6.                         manager.ImportSizeTable(fd,path,error);
  7.  
При выполении макроса в REVIT выскакивает ошибка"System.NullReferenceException:Object reference not set to an instance of an object"

В чем я ошибся и как реализовать 2 часть кода?
« Последнее редактирование: 23-12-2016, 20:26:46 от Виктор Чекалин »

Оффлайн butthead

  • ADN OPEN
  • Сообщений: 1
  • Карма: 0
Re: Revit Table Lookup.
« Ответ #4 : 15-03-2019, 13:40:33 »
Hohil, Вы решили проблему с System.NullReferenceException? Или может быть кто-то знает, как её решить?
« Последнее редактирование: 15-03-2019, 14:50:58 от butthead »