Работа со встроенными семействами

Автор Тема: Работа со встроенными семействами  (Прочитано 4680 раз)

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

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

  • ADN Club
  • ***
  • Сообщений: 101
  • Карма: 4
Как можно вытащить экземпляры встроенных семейств в проекте?
Есть варианты с Floor, Ceiling, Wall, но такие способы не выполняются к классу Арматура.
Добраться до необходимых семейств смогла только через
Код - C# [Выбрать]
  1. var filteredElementCollector = new FilteredElementCollector(document).WhereElementIsElementType().OfCategory(BuiltInCategory.OST_FabricReinforcement);

Как перейти к конкретным экземплярам в проекте?

Оффлайн Александр Пекшев aka Modis

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Re: Работа со встроенными семействами
« Ответ #1 : 03-04-2018, 18:09:18 »
У одиночного арматурного стержня категория OST_Rebar. Также вы можете указывать для FilteredElementCollector конкретный класс
Код - C# [Выбрать]
  1. new FilteredElementCollector(document).OfClass(typeof(Rebar))
  2. //или
  3. new FilteredElementCollector(document).OfClass(typeof(RebarInSystem))

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

  • ADN Club
  • ***
  • Сообщений: 101
  • Карма: 4
Re: Работа со встроенными семействами
« Ответ #2 : 04-04-2018, 09:17:04 »
Александр Пекшев aka Modis, не было такого в том то и дело... А надо было подрубить библиотечку Autodesk.Revit.DB.Structure; И тогда все магическим образом отображается и работает.
Спасибо, как всегда выручаете!

Оффлайн Александр Пекшев aka Modis

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Re: Работа со встроенными семействами
« Ответ #3 : 04-04-2018, 12:35:50 »
Вы плаваете в понятиях и поэтому не все ваши вопросы удается сразу понять.
Например, в своём вопросе вы пишите - Как перейти к конкретным экземплярам в проекте? - но при этом прикладываете такой пример кода:
Код - C# [Выбрать]
  1. var filteredElementCollector = new FilteredElementCollector(document).WhereElementIsElementType().OfCategory(BuiltInCategory.OST_FabricReinforcement);
Уясните для себя раз и навсегда что такое типоразмер! Если вы хотите найти все экземпляры, то ваш код ошибочен, так как вы указали в нём WhereElementIsElementType - что по-русски прям так и переводится "только типоразмеры". Т.е. ваш код никак не сможет найти экземпляры.
Дальше вы пишите:
А надо было подрубить библиотечку Autodesk.Revit.DB.Structure
Опять неверно. Подключить к проекту вам нужно лишь две библиотеки - RevitAPI.dll и RevitAPIUI.dll - это минимальный необходимый набор. А вот строка using Autodesk.Revit.DB; просто позволяет использовать указанное пространство имён, чтобы в коде писать меньше букв)). Вот, например, почитайте. При этом, если вы используете Visual Studio, то IntelleSense должна вам помогать все это делать

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

  • ADN Club
  • ***
  • Сообщений: 101
  • Карма: 4
Re: Работа со встроенными семействами
« Ответ #4 : 09-04-2018, 11:56:36 »
Александр Пекшев aka Modis, от любого типоразмера можно перейти к конкретным его экземплярам в проекте. Код, который привела, делала по типу примера.