Значение параметра внутри семейства

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

  • В этой теме 6 ответов, 2 участника, последнее обновление 7 лет назад сделано txt.
Просмотр 7 сообщений - с 1 по 7 (из 7 всего)
  • Автор
    Сообщения
  • #7193 Score: 0
    txt
    Модератор
    86 pts

    Пытаюсь питоном получить значение параметра внутри семейства тройника:

    Тройник

    UnwrapElement(i).LookupParameters(“Тип детали”).AsValueString() – не работает
    в лукапе ничего не нашел

    #7194 Score: 0
    ИваСерж
    Хранитель
    134 pts

    Скорей всего, параметр не экземпляра, а типа. Соответственно, для начала надо получить FamilySynbol (тип). С него и брать нужный параметр.

    #7196 Score: 0
    txt
    Модератор
    86 pts

    Мда, я то же пробовал что то вроде i.Type … Спасибо за подсказку, будем как-то попробовать

    #7201 Score: 1
    ИваСерж
    Хранитель
    134 pts

    нет. Не так.

    elemTypeId = elem.GetTypeId() #получаем ИДшник Типа из инстанса
    elemType = doc.GetElement(elemTypeId) #получаем  Тип из документа по ИД

    А вот с типа можно Лукапить параметры

    #7231 Score: 0
    txt
    Модератор
    86 pts

    для списка:
    import clr
    clr.AddReference("RevitServices")
    import RevitServices
    from RevitServices.Persistence import DocumentManager
    doc = DocumentManager.Instance.CurrentDBDocument
    elem=IN[0]
    elemTypeId = UnwrapElement(elem).GetTypeId() #получаем ИДшник Типа из инстанса
    elemType = doc.GetElement(elemTypeId) #получаем Тип из документа по ИД
    OUT = elemType.LookupParameter("Имя параметра типа семейства").AsString()

    #или
    OUT=[doc.GetElement(i.GetTypeId()).LookupParameter("Имя параметра типа семейства").AsString() for i in UE(IN[0])]

    #удобнее
    def type_param(x,y):
    return doc.GetElement(x.GetTypeId()).LookupParameter(y)
    OUT=[type_param(i, "Имя параметра типа семейства").AsString() for i in UE(IN[0])]

    если на входе один элемент , то можно так:
    UnwrapElement(IN[0].Type).LookupParameter("Имя параметра типа семейства").AsString()

    #7232 Score: 0
    txt
    Модератор
    86 pts

    Но указанные в скрине параметры не определяет

    #7233 Score: 1
    txt
    Модератор
    86 pts

    Чтобы добраться до параметров на скрине, необходимо получить семейство выбранного элемента, затем залукапить:

    OUT = UnwrapElement(IN[0].Type).Family.LookupParameter("Тип детали").AsValueString()

    Примечание:
    нужно помнить, что необходимо верно указать тип данных : AsValueString(),AsString(),AsDouble()
    т.е. например:
    OUT = UnwrapElement(IN[0].Type).Family.LookupParameter("Тип детали").AsString()
    выдаст значение null

    Для того чтобы посмотреть значения всех параметров для одного из типа данных:
    #набор параметров
    parameters_set=UnwrapElement(IN[0].Type).Family.Parameters
    #значения параметров в наборе
    values=[i.AsValueString() for i in parameters_set]
    OUT = values

Просмотр 7 сообщений - с 1 по 7 (из 7 всего)
  • Для ответа в этой теме необходимо авторизоваться.