Автоматическая расстановка элементов

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

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

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

    elt2
    Участник

    Столкнулась с проблемой при работе скрипта. Пытаюсь расставить элементы (осветительные приборы) с размещением на грани в центре какого-либо помещения на потолке (в моем случае на перекрытие). Я определяю необходимую мне surfase из всего списка поверхностей перекрытия. Точку размещения определяю как центр помещения (пока рассматриваю помещения прямоугольной формы).

    import clr
    clr.AddReference(‘ProtoGeometry’)
    from Autodesk.DesignScript.Geometry import *
    clr.AddReference(‘RevitServices’)
    import RevitServices
    from RevitServices.Persistence import DocumentManager
    from RevitServices.Transactions import TransactionManager
    doc = DocumentManager.Instance.CurrentDBDocument
    clr.AddReference(‘RevitNodes’)
    import Revit
    clr.ImportExtensions(Revit.Elements)
    clr.ImportExtensions(Revit.GeometryConversion)
    host = IN[0]
    ftype = UnwrapElement(IN[1])
    pts =IN[2]
    ref1=[]
    tt = []
    TransactionManager.Instance.EnsureInTransaction(doc)
    for i in xrange(len(pts) ):
    ref1 = host[i].Tags.LookupTag(“RevitFaceReference”)
    uv1 = host[i].UVParameterAtPoint(pts[i])
    dir1 = host[i].TangentAtUParameter(uv1.U,uv1.V).ToXyz()
    try:
    inst1 = doc.Create.NewFamilyInstance(ref1,pts[i].ToXyz(),dir1,ftype)
    tt.append(inst1.ToDSType(False) )
    except: tt.append(None)
    TransactionManager.Instance.TransactionTaskDone()
    OUT=tt

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

    Элементы я получаю из линкового файла через Element.GetFromLinkedFile. Возникает вопрос возможно ли в принципе подобное действие?

    Или же все действия по выбору и определению поверхности перекрытия нужно делать внутри этого же  питон скрипта в котором осуществляется размещение элементов. Чтобы ревит понимал, что поверхность берется из линкового файла. Если так то тогда как можно определить  внутри питона surfase перекрытия?    face.append(i.Faces) не работает. AttributeError: ‘Floor’ object has no attribute ‘Faces’

    #8088 Score: 0

    Legantmar
    Хранитель
    423 pts

    все в кучу намешал
    заголовок о расстановке элементов
    в теме о вычислении центра помещения
    а концовка так и вовсе о работе с линк объектами
    для информации http://dynamobim.ru/forums/topic/работа-с-link-файлом/

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

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