Как получить Тип Параметры структурной балки

Может кто-нибудь сказать мне, как получить параметры типа структурной балки? Параметры, такие как высота сечения, ширина, площадь?

Я полагаю, я должен начать что-то вроде этого:

    Selection sel = uidoc.Selection;

    Reference pickedRef = null;

    pickedRef = sel.PickObject(ObjectType.Element, "Please select beam");

    Element e = doc.GetElement(pickedRef);

    ElementType type = doc.GetElement(e.GetTypeId()) as ElementType;

    BuiltInParameter height = BuiltInParameter.FAMILY_HEIGHT_PARAM;

    Parameter h = type.get_Parameter(height);

    //OR
    Parameter hh = type.LookupParameter("Height");

    //Then don't know what to do
    double h1 = h.AsDouble(); //Or what?

Но я не получаю обязательные параметры типа, я получаю нулевое исключение.

Может кто-нибудь сказать мне, что я делаю не так? Я использую неправильный BuiltInParamater, или что-то еще?

Спасибо! Милош

3 ответа

Решение

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

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

Как и говорит Аугусто, вы можете использовать RevitLookup для этого или посмотреть свойства типа в пользовательском интерфейсе. Вы также можете взглянуть на (довольно) новый StructuralSection учебный класс. Он был разработан специально для облегчения проблем, с которыми вы сейчас сталкиваетесь.

Спасибо за оба ответа. Мне нужно было потратить больше времени на поиск имени параметра типа.

Вот как должен выглядеть код:

    Element e = doc.GetElement(pickedRef);
    Element e = doc.GetElement(pickedRef);
    ElementType type = doc.GetElement(e.GetTypeId()) as ElementType;
    //to get height of section
    Parameter h = type.LookupParameter("h");
    double height = h.AsDouble();
    //to get width of section
    Parameter b = type.LookupParameter("b");
    double width = b.AsDouble();
    //and so on...

Спасибо!

Другие вопросы по тегам