Размещение на виде семейства

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

Просмотр 2 сообщений - с 1 по 2 (из 2 всего)
  • Автор
    Сообщения
  • #9630 Score: 0
    Alexandr
    Участник

    Размещение семейства 2D «Элементы узлов» на основе линии (Line) на виде (View)

    При помощи метода NewFamilyInstance.Overloads[Line, FamilySymbol, View] не получается разместить семейство. Выдает ошибку Exception: The line is not in the plane of view. Parameter name: line

    Подскажите как исправить?

    import clr
    clr.AddReference(‘ProtoGeometry’)
    from Autodesk.DesignScript.Geometry import *
    clr.AddReference(‘RevitAPI’)
    from Autodesk.Revit.DB import *
    clr.AddReference(“RevitNodes”)
    import Revit
    clr.ImportExtensions(Revit.GeometryConversion)
    clr.AddReference(“RevitServices”)
    import RevitServices
    from RevitServices.Persistence import DocumentManager
    from RevitServices.Transactions import TransactionManager
    clr.AddReference(“RevitNodes”)
    import Revit
    clr.ImportExtensions(Revit.Elements)
    doc = DocumentManager.Instance.CurrentDBDocument
    #—————-ВСЁ ЧТО ВЫШЕ ПРОСТО КОПИРУЕТСЯ———————-
    #___________________________________________________________________
    #—————-ВВОД ДАННЫХ————————————–
    #StartPoint = XYZ(35, 60, 0)
    #EndPoint = XYZ(20, 60, 0)
    view = UnwrapElement(IN[0])
    fam = UnwrapElement(IN[1])
    curve = UnwrapElement(IN[2])
    st_pt = curve.StartPoint
    end_pt = curve.EndPoint
    line = Line.CreateBound(st_pt.ToXyz(), end_pt.ToXyz())
    #line = Line.CreateBound(XYZ(-23, 45, 0), XYZ(-37, 45, 0))

    #……………………транзакция вкл……………………
    TransactionManager.Instance.EnsureInTransaction(doc)
    #__________________________________________________________________
    #——————-Удаление всех аннотаций на виде—————–
    a = FilteredElementCollector(doc,UnwrapElement(view).Id).OfCategory(BuiltInCategory.OST_GenericAnnotation)
    for k in a:
    b=UnwrapElement(k).Id
    doc.Delete(b)
    #——————Создание новых аннотаций на виде—————–

    dl = doc.Create.NewFamilyInstance.Overloads[Line, FamilySymbol, View](line,fam,view)
    #__________________________________________________________________
    #……………………транзакция выкл……………………
    TransactionManager.Instance.TransactionTaskDone()
    #__________________________________________________________________
    #————–ВЫВОД ДАННЫХ—————————————-
    OUT = dl

    https://yadi.sk/d/Dy3xlvrLeekxDw

    #9631 Score: 0
    ИваСерж
    Модератор
    125 pts

    Первый раз вижу такой странный синтаксис. Разве надо вызывать Оверлоадс?
    Само перезагружается в зависимости от подаваемых в метод параметров.
    Т.е. принцип, как я понимаю, такой, в метод поочереди засовываются
    данные. Если данные вызывают ошибку, вызывается другой метод.
    И так до тех пор, пока не закончатся перезаписываемые методы.
    Если ни один результат не подошел – выдаст ошибку.

    Т.е. запись должна выглядеть так
    dl = doc.Create.NewFamilyInstance(line,fam,view)

    Заодно увидел ошибку – анврапать элементы, вытянутые из Ревита коллектором не нужно.
    Врап, т.е. обертка, нужна для Динамо. Т.е. Динамо работает не совсем с объектами Ревита.
    Динамо “оборачивает” объект ревита в обёртку, добавляя к объекту дополнительные методы,
    которых нет в чистом РевитАпи. Врезультате этот самый чистый РевитАпи больше не может
    работать с обёрнутым объектом.

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