Не работает макрос сделанный в 2015 версии

Главная Форумы Задать вопрос Не работает макрос сделанный в 2015 версии

В этой теме 2 ответа, 2 участника, последнее обновление  Alex 6 мес., 1 неделя назад.

Просмотр 3 сообщений - с 1 по 3 (из 3 всего)
  • Автор
    Сообщения
  • #7644 Score: 0

    Alex
    Участник

    Добрый день.

    Есть макрос для заполнения полей спецификации для revit 2015, но в 2016 он не работает. После поисков причины, выяснилось, что изменились методы get и set, но разобраться сам не могу, прошу помощи.

    часть макроса

    foreach (Element e in DuctCurves)
    {
    ElementType e_type = doc.GetElement( e.GetTypeId() ) as ElementType;//Получить экземпляр семейства
    m_duct = e_type.get_Parameter(BuiltInParameter.WINDOW_TYPE_ID).AsString();//Получить значение параметра типа семейства “Маркировка типоразмера”
    o_duct = e_type.get_Parameter(BuiltInParameter.ALL_MODEL_DESCRIPTION).AsString();//Получить значение параметра типа семейства “Описание”
    ds_name = e.get_Parameter(BuiltInParameter.RBS_SYSTEM_NAME_PARAM).AsString();//Получить значение  “Имя системы”
    err_name = e.get_Parameter(BuiltInParameter.ELEM_FAMILY_AND_TYPE_PARAM).AsValueString();
    Parameter is_round = e.get_Parameter(BuiltInParameter.RBS_CURVE_DIAMETER_PARAM);
    if (is_round!=null)
    {
    t_duct = “диаметр мм-“;
    }
    else
    {
    t_duct = “сечение мм-“;
    }
    duct_size = e.get_Parameter(BuiltInParameter.RBS_CALCULATED_SIZE).AsString();//Получить значение параметра типа экземпляра “Размер”
    dlina = e.get_Parameter(BuiltInParameter.CURVE_ELEM_LENGTH).AsDouble();//Получить значение параметра типа экземпляра “Длина”
    dlina = UnitUtils.ConvertFromInternalUnits(dlina, DisplayUnitType.DUT_METERS);
    e.get_Parameter(“SPКол-во”).Set(dlina);//Установить значение общего параметра экземпляра “Кол-во”
    e.get_Parameter(“SPЕдиница измерения”).Set(“м.”);//Установить значение общего параметра экземпляра “Единица измерения”
    e.get_Parameter(“SPИмяСистемы”).Set(ds_name);
    e.get_Parameter(“SPПодгруппаРаздела”).Set(“2.Воздуховоды”);
    ss_name = e.get_Parameter(BuiltInParameter.RBS_DUCT_PIPE_SYSTEM_ABBREVIATION_PARAM).AsString();//Получить значение  “Сокращение системы”
    switch (ss_name) {
    case “В”:
    e.get_Parameter(“SPРазделСпецификации”).Set(“Вентиляция. “+ds_name);
    break;
    case “П”:
    e.get_Parameter(“SPРазделСпецификации”).Set(“Вентиляция. “+ds_name);
    break;
    case “Р”:
    e.get_Parameter(“SPРазделСпецификации”).Set(“Вентиляция. “+ds_name);
    break;
    default:

    break;
    }

    #7647 Score: 1

    ИваСерж
    Модератор
    94 pts

    в строчках, в каких не используется BuiltInParameter, надо:
    e.get_Parameter надо заменить на e.LookupParameter(String)

    Насколько я понял, это надо сделать начиная с строки
    e.get_Parameter(“SPКол-во”) -> e.LookupParameter(“SPКол-во”)

    #7653 Score: 0

    Alex
    Участник

    спасибо, ценный совет, проблема решена

Просмотр 3 сообщений - с 1 по 3 (из 3 всего)

Для ответа в этой теме необходимо авторизоваться.