PipingSystemType

Просмотр 15 сообщений - с 1 по 15 (из 33 всего)
  • Автор
    Сообщения
  • #5729 Score: 0
    txt
    Модератор
    86 pts

    как в питоне получить PipingSystemType для выбранного элемента (Select Model Element) или списка элементов ?

    как например, нодами список всех типов , но нужно для выбранного элемента(ов):

    пробовал как то так:

     

    def U(elem): # короткая функция, чтобы каждый раз не писать UnwrapElement(), вместо этого достаточно U()
    a = UnwrapElement(elem)
    return a
    pipetypes=[]
    if isinstance(IN[0], list): # если на входе лист
    for i in IN[0]:
    pipetypes.append(U(i.Plumbing.PipingSystemType))
    else: # в противном случае (это означает, что на входе 1 элемент)

    pipetypes=(U(IN[0])).Plumbing.PipingSystemType

    OUT = pipetypes

     

     

    #5730 Score: 1
    Legantmar
    Хранитель
    474 pts

    для выбранной трубы

    import clr
    clr.AddReference('RevitAPI')
    from Autodesk.Revit.DB import *
    
    clr.AddReference("RevitServices")
    from RevitServices.Persistence import DocumentManager
    doc = DocumentManager.Instance.CurrentDBDocument
    
    #OUT = UnwrapElement(IN[0]).get_Parameter(BuiltInParameter.RBS_PIPING_SYSTEM_TYPE_PARAM).AsValueString() # имя системы
    Id = UnwrapElement(IN[0]).get_Parameter(BuiltInParameter.RBS_PIPING_SYSTEM_TYPE_PARAM).AsElementId()
    OUT = doc.GetElement(Id) # pipingsystemtype
    #5731 Score: 0
    txt
    Модератор
    86 pts

    Спасибо!

    а где можно почитать о данном методе?

    если можно ссылку?

    #5732 Score: 2
    Legantmar
    Хранитель
    474 pts

    я смотрю через Revit LookUp
    Специально для тебя сделал видеопример

    воспользуйся поиском по форуму: BuiltInParameter

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

    Здорово, очень полезная информация

    Спасибо за труды!

    Буду изучать)

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

    Почему не получается аналогичным способом вытащить другой параметр для выбранной трубы , например длина:

     

    #5792 Score: 0
    Legantmar
    Хранитель
    474 pts

    doc.GetElement лишнее (эта команда получает элемент по его Id)
    напиши OUT = Value (и получишь 1840)  (или OUT = list)

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

    Ок, получилось, спасибо )

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

    а как извлечь Location.Curve ?

    #5795 Score: 1
    Legantmar
    Хранитель
    474 pts

    примерно так OUT = UnwrapElement(IN[0]).Location.Curve.ToProtoType()
    но выше должно быть
    clr.AddReference("RevitNodes")
    import Revit
    from Revit.Elements import *
    clr.ImportExtensions(Revit.GeometryConversion)

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

    Я получил линию, как теперь получить ее  start point (X,Y,Z), отдельно координату Х start point  здесь же  в коде?

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

    для получения start point :
    OUT = UnwrapElement(IN[0]).Location.Curve.GetEndPoint(0).ToPoint()

    GetEndPoint(0)  – получаем Start Point

    GetEndPoint(1) – получаем End Point
    как далее получить:
    1) координату Х
    2.) вектор

    #5798 Score: 1
    Legantmar
    Хранитель
    474 pts

    OUT = UnwrapElement(IN[0]).Location.Curve.ToProtoType().StartPoint.X
    OUT = UnwrapElement(IN[0]).Location.Curve.ToProtoType().Direction

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

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

    1.) Element.Geometry

    2.) Bounding.Box

    #5800 Score: -1
    Legantmar
    Хранитель
    474 pts

    видимо так
    OUT = IN[0].Geometry()
    OUT = IN[0].BoundingBox

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