Как установить атрибут «Граница комнаты» для всех элементов Revit API - PullRequest
0 голосов
/ 13 апреля 2020

Я хочу go для всех элементов в документе и установить их атрибут «Граничная комната» положительным, если у них есть атрибут Граничная комната.

Перебирая стены, я могу сделать это:

Parameter param = e.get_Parameter(BuiltInParameter.WALL_ATTR_ROOM_BOUNDING).Set("Yes");

Но как мне это сделать для столбцов? Или любой другой элемент, который имеет этот атрибут?

Я пытался просмотреть все элементы и получить их параметры, используя:

IList<Parameter> ps = e.GetOrderedParameters();

, но какой атрибут я смотрю за? это "Ограничение комнаты"? Я установил для него «Да» или что-то еще?

Редактировать: я впервые начал с этого: https://thebuildingcoder.typepad.com/blog/2008/09/selecting-all-w.html настройка кода для получения параметра «Граничная комната».

Затем изменив код для поддержки всех элементов, как уже упоминалось в моем вопросе, используя: https://thebuildingcoder.typepad.com/blog/2018/05/getting-all-parameter-values.html

И я использовал его для печати всех имен параметров и их значений, однако я не удается найти параметр «Граница помещения» в столбцах. Я мог бы легко сделать это в стенах.

Я пытался использовать https://forums.autodesk.com/t5/revit-api-forum/get-the-value-of-shared-a-parameter-of-a-structural-column/td-p/8249860 и

mycolumnList[i].LookupParameter("Room Bounding").AsInteger() != 1)

, но это также не сработало .

Должен ли я искать "Ограничение комнаты" в параметре экземпляра или в параметре типа?

Ответы [ 2 ]

0 голосов
/ 23 апреля 2020

Думаю, я опубликую решение, чтобы помочь другим, у которых была похожая проблема.

Учитывая столбец e, следующий код изменяет параметр "Ограничение комнаты" на True. (Обратите внимание, этот код не обрабатывает исключения)

FamilyInstance famInst = e as FamilyInstance;
Parameter family_bound_param = famInst.LookupParameter("Room Bounding");
if (family_bound_param.AsValueString() == "No")
{                           
    using (Transaction t = new Transaction(doc, "param"))
    {
        t.Start();
        family_bound_param.Set(1);
        t.Commit();
    }
}

Спасибо Джереми за руководство!

0 голосов
/ 13 апреля 2020

Пожалуйста, следуйте стандартному подходу для исследования и решения задачи программирования Revit API :

  1. Определите оптимальное решение вручную через интерфейс конечного пользователя. Обязательно следуйте рекомендациям и используйте существующие встроенные функции Revit. Если вы пропустите этот шаг или не проведете достаточно глубокие исследования, вы рискуете запрограммировать что-то, что будет болезненно как для реализации, обслуживания, отладки, так и для использования.
  2. Определите имена классов, методов Revit и свойства, которые помогут вам достичь вашей задачи. Например, создайте соответствующую ситуацию и пример BIM через пользовательский интерфейс и проанализируйте его до и после внесения необходимых изменений, например, используя:
  3. Как только вы узнаете, какие объекты Revit API требуются, узнайте, как обращаться к ним, управлять ими и управлять ими, их отношениями и как они взаимодействуют друг с другом:
    • Файл справки Revit API RevitAPI.chm установлен локально или онлайн на revitapidocs.com предоставляет подробную информацию о классах, свойствах и методах.
    • Электронная справка Revit > Разработчики > Руководство для разработчиков Revit API объясняет использование Revit API гораздо глубже и предоставляет бесценную справочную информацию.
    • Коллекция образцов Revit SDK установлена ​​локально и управляется Visual Studio через SDKSamples.sln показывает, как объекты Revit API работают вместе для решения определенных c задач.
    • Примеры Building Coder предоставляют еще один большой набор примеров внешних команд, реализующих множество различных задач .

После того, как вы исчерпали эти опции, найдите в Inte rnet слово «revit api» или «thebuildingcoder» плюс имена Revit API, которые вас интересуют.

Я очень надеюсь, что это полностью решит ваш вопрос и не только подпитывает вас на данный момент, но и поддерживает вас в процессе превращения в компетентного будущего рыбака.

...