Параметры по типоразмеру

Автор Тема: Параметры по типоразмеру  (Прочитано 23898 раз)

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

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

  • Administrator
  • *****
  • Сообщений: 694
  • Карма: 111
  • Skype: chekalin-v
Re: Параметры по типоразмеру
« Ответ #15 : 03-04-2015, 11:07:48 »
В проекте нет типоразмеров с таким именем и не будет.
Любое семейство, даже вложенное, загружается в проект в любом случае. На сколько мне известно, вложенные семейства могут не отображаться в диспетчере проекта, но они в любом случае в проекте. Вам ведь удалось присвоить типоразмер по идентификатору, значит оно есть в проекте.
А при загрузке семейства "основной надписи" в разные проекты Id вложеного елемента будет оставатся таким же???
Нет, будут разными. Id является уникальным, в рамках одного проекта. При вставке семейства, в проекте уже может существовать другой объект с этим же идентификатоом. Именно поэтому он меняется.

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

  • ADN OPEN
  • **
  • Сообщений: 82
  • Карма: 1
Re: Параметры по типоразмеру
« Ответ #16 : 03-04-2015, 11:13:25 »
Вот и по этому надо по имени, так как оно будет для каждого проекта одинаковое.
А то прийдется в каждом проекте находить все параметры и  елементы типа ElementId. а с моими знаниями ето нереально!!!

Может каким то способом можно найти все имена этих елементов и их назначить?

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

  • Administrator
  • *****
  • Сообщений: 694
  • Карма: 111
  • Skype: chekalin-v
Re: Параметры по типоразмеру
« Ответ #17 : 03-04-2015, 11:48:19 »
Ярослав, не понял, имена каких элементов нужно найти?

В чем проблема, найти типоразмер по имени семейства и типоразмера? Это легко делается с помощью FilteredElementCollector. Находите типоразмер, берете его ElementId, присваиваете значение параметра.

А то прийдется в каждом проекте находить все параметры и  елементы типа ElementId
Это зачем?

Попробуйте лучше сформулировать задачу. Тогда я смогу дать направление как нужно ее решить.

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

  • ADN OPEN
  • **
  • Сообщений: 82
  • Карма: 1
Re: Параметры по типоразмеру
« Ответ #18 : 03-04-2015, 12:03:11 »
Извините не могу конкретнее сформулировать не хватает слов!!
Я опишу всю задачу!
У меня есть семейство "основной надписи" у которого есть параметр "Строка 1 подпись". Значение этого параметра это загруженые в это семейство семейства подписей(типовые аннотации). При выборе нужного значения в нужном поле появляется подпись.
Цель: чтоб при вводе фамилии выбиралась нужная подпись. Фамилии выбираются из строго указаного списка, значения точно такие же как и типоразмеры подписей.

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

  • ADN OPEN
  • **
  • Сообщений: 82
  • Карма: 1
Re: Параметры по типоразмеру
« Ответ #19 : 03-04-2015, 15:23:25 »
Виктор Чекалин,  как можно через FilteredElementCollector получить доступ к вложеным семействам если они не общие???
Здесь Вы получали доступ к общим семействам http://adn-cis.org/api-dlya-raboty-s-semeystvami-part-3.html
что нужно добавить чтоб получить доступ к вложеным не общим?

Я нашол что эти семейства хранятся у Family Document но получить доступ к Family Document у меня не получается!!!

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

  • Administrator
  • *****
  • Сообщений: 694
  • Карма: 111
  • Skype: chekalin-v
Re: Параметры по типоразмеру
« Ответ #20 : 03-04-2015, 15:47:40 »
Ярослав, Пока проверить возможности нет, но на сколько я помню, работа с общими семействами не отличается от работы с не общими вложенными семействами с точки зрения API.
Откройте RevitLookup и попробуйте там найти семейство, которое вас интересует. Есть оно вообще, нет?

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

  • ADN OPEN
  • **
  • Сообщений: 82
  • Карма: 1
Re: Параметры по типоразмеру
« Ответ #21 : 03-04-2015, 16:08:09 »
Ну через FilteredElementCollector в категории типовые аннотации выдает тоько те что загружены непосредственно в проект, вложеных оно не видит.

В RevitLookup эти елементы есть.
Но они находятся в Family Document того семейства в которое они загружены, во вкладке Family.
Как через API туда попасть?

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

  • Administrator
  • *****
  • Сообщений: 694
  • Карма: 111
  • Skype: chekalin-v
Re: Параметры по типоразмеру
« Ответ #22 : 03-04-2015, 16:26:20 »
В RevitLookup эти елементы есть.
Но они находятся в Family Document того семейства в которое они загружены, во вкладке Family.
Я имел ввиду просмотреть аннтации с помощью RеvitLookup непосредственно в проекте. ТО что они видны в FamilyDocument - это понятно

Элемент с Id 100445 это что? Идентификатор типоразмера аннотации?

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

  • ADN OPEN
  • **
  • Сообщений: 82
  • Карма: 1
Re: Параметры по типоразмеру
« Ответ #23 : 03-04-2015, 16:39:31 »
В RеvitLookup  в аннотациях его нет.
элемент с Id 100445 это семейство  типа "Типовые аннотации", но оно вложено в другое семейство с меткой паметра "Строка 1 подпись".

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

  • Administrator
  • *****
  • Сообщений: 694
  • Карма: 111
  • Skype: chekalin-v
Re: Параметры по типоразмеру
« Ответ #24 : 03-04-2015, 16:44:40 »
элемент с Id 100445 это семейство  типа "Типовые аннотации"
Это значит, что семейство действительно есть в проекте, не смотря на то, что оно является вложенным.

В коде получите элемент по Id:
Код - C# [Выбрать]
  1. var element = doc.GetElement(new ElementId(100445));

Посмотрите что у него за тип:
Код - C# [Выбрать]
  1. var type = element.GetType();

Мне кажется что просто неправильно используете FilteredElementCollector

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

  • ADN OPEN
  • **
  • Сообщений: 82
  • Карма: 1
Re: Параметры по типоразмеру
« Ответ #25 : 03-04-2015, 17:07:14 »
Значение type : Name Element, FullName Autodesk.Revit.DB.Element.

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

  • Administrator
  • *****
  • Сообщений: 694
  • Карма: 111
  • Skype: chekalin-v
Re: Параметры по типоразмеру
« Ответ #26 : 03-04-2015, 17:10:32 »
Ярослав, уже интересней, т.е. он не как семейство, а как элемент.
А как вынашли его идентификатор тогда?
Можете выслать семейство (или другое, с таким же поведением), я потестирую.

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

  • ADN OPEN
  • **
  • Сообщений: 82
  • Карма: 1
Re: Параметры по типоразмеру
« Ответ #27 : 03-04-2015, 17:37:00 »
Все делал в строгости как вы говорили.
Вот Вам файл проекта в который загружено семейство основной надписи "Листы (рус)", в которое загружены семейства типовых аннотаций "Билоус Я" и "Пусто".
В проекте при изминении параметра "Строка 1 подпись" семейства "Листы (рус)" отображается или "Билоус Я" или "Пусто".


[вложение удалено администратором]

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

  • Administrator
  • *****
  • Сообщений: 694
  • Карма: 111
  • Skype: chekalin-v
Re: Параметры по типоразмеру
« Ответ #28 : 07-04-2015, 14:49:35 »
Ярослав, Только сейчас удалось посмотреть.

В принципе все не так уж плохо.

Параметр Строка 1 подпись имеет тип Типовые аннотации. Вам нужно, найти все элементы категории "Типовые аннотации" в проекте, затем найти по имени нужное вам и присвоить ид.
Код примерно такой:
Код - C# [Выбрать]
  1. FilteredElementCollector collector =
  2.    new FilteredElementCollector(doc);
  3. // ищем все экзепмпляры типовых аннотаций
  4. var genericAnnotations = collector
  5.                  // категории типовые аннотации
  6.                 .OfCategory(BuiltInCategory.OST_GenericAnnotation)
  7.                  // экземпляры, а не типы
  8.                 .WhereElementIsNotElementType()
  9.                 .ToElements();
  10.  
  11. var valueElement = genericAnnotations.FirstOrDefault(x=>x.Name == "Билоус Я");
  12. if (valueElement!=null){
  13.     parameter.SetValue(valueElement.Id);
  14. })
« Последнее редактирование: 07-04-2015, 15:05:48 от Виктор Чекалин »

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

  • ADN OPEN
  • **
  • Сообщений: 82
  • Карма: 1
Re: Параметры по типоразмеру
« Ответ #29 : 07-04-2015, 19:22:16 »
Здравствуйте Виктор!
К сожалению при данном поиске находит только "выноска с текстом" это если брать по тому файлу что я сбрасывал.
И ого ищет только в тех семействах типовых аннотаций что отображаются в Диспетчере проектов!