Как развернуть созданное семейство и поменять параметры?

Главная Форумы Python Revit Library (API) Как развернуть созданное семейство и поменять параметры?

В этой теме 7 ответов, 3 участника, последнее обновление  KhonVlad 2 года/лет, 2 мес. назад.

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

    KhonVlad
    Участник

    Пишу часть кода

    d2 = doc.Create.NewFamilyInstance(point,fam1,view)
    w=d2.Parameter[число].AsString()
    w=etagi
    k=etagi

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

    #3878 Score: 0

    Khasan Mamaev
    Хранитель
    176 pts

    Параметры меняются так parameter.Set(x) и нужно открывать транзакцию. Посмотри мой скрипт для ренумерации листов, там все это есть https://www.youtube.com/watch?v=JxeDYtNqlHI

    #3885 Score: 0

    KhonVlad
    Участник

    у меня открыта транзакция. я не понимаю почему допустим я могу в помещения таким же примерно кодом поменять информацию а в созданных таблицах нет

     

    #3886 Score: 0

    KhonVlad
    Участник

    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)
    clr.ImportExtensions(Revit.Elements)
    doc = DocumentManager.Instance.CurrentDBDocument
    #—————-ВСЁ ЧТО ВЫШЕ ПРОСТО КОПИРУЕТСЯ———————-
    #___________________________________________________________________
    #—————-ВВОД ДАННЫХ————————————–

    view = UnwrapElement(IN[0])
    fam = UnwrapElement(IN[1])
    fam1=UnwrapElement(IN[5])
    rooms=IN[2]
    number=IN[3]#”Номер квартиры”
    lvlroom=IN[4]#”Этаж”
    l=[]
    n=[]
    w=[]
    число=IN[6]
    #……………………транзакция вкл……………………
    TransactionManager.Instance.EnsureInTransaction(doc)
    #__________________________________________________________________
    #——————-Удаление всех аннотаций на виде—————–
    a = FilteredElementCollector(doc,UnwrapElement(view).Id).OfCategory(BuiltInCategory.OST_GenericAnnotation)
    for q in a:
    b=UnwrapElement(q).Id
    doc.Delete(b)
    #——————Создание новых аннотаций на виде—————–
    b=len(rooms)
    i=0
    x=0
    z=0
    k=0
    for room in rooms:
    uroom = UnwrapElement(room)
    etagi=uroom.Parameter[lvlroom].AsInteger()
    nomer=uroom.Parameter[number].AsString()
    nomer=int(nomer)
    y=nomer*(-7.84)
    x=etagi*40
    point=XYZ(x,y,z)
    dl = doc.Create.NewFamilyInstance(point,fam,view)
    l.append(etagi)
    n.append(nomer)
    if etagi>1 and etagi>k:
    y=len(n)*(-7.84)-6.6
    x=(etagi-1)*40
    point=XYZ(x,y,z)
    d2 = doc.Create.NewFamilyInstance(point,fam1,view)
    w=d2.Parameter[число].AsString()
    w=etagi
    k=etagi
    else:
    k=etagi
    p=len(n)
    q=len(l)
    if nomer>=p and nomer>1:
    y=(len(n)+1)*(-7.84)-6.6
    x=(etagi)*40
    point=XYZ(x,y,z)
    d2 = doc.Create.NewFamilyInstance(point,fam1,view)
    k=etagi
    #……………………транзакция выкл……………………
    TransactionManager.Instance.TransactionTaskDone()
    #__________________________________________________________________
    #————–ВЫВОД ДАННЫХ—————————————-
    OUT = rooms

    у меня вот такой код и параметры не подменяются пчмуто…..

    #3889 Score: 2

    Alexandr Popov
    Модератор
    44 pts

    Вместо:

    w=d2.Parameter[число].AsString()
    w=etagi

    Надо:

    w = d2.LookupParameter(“число”).Set(etagi)

    #3890 Score: 0

    KhonVlad
    Участник

    спасибо !!

     

    #3892 Score: 0

    KhonVlad
    Участник

    и еще вопрос по коду…. вроде бы все правильно прописал но на выходе список из нулей, хотя площади в помещениях имеют значения не 0

    rooms=IN[0]#Массив помещений
    a=IN[1]#имя площади
    lvlroom=IN[2]# номер уровня
    q=[]
    for room in rooms:
    uroom = UnwrapElement(room)
    plowad=uroom.Parameter[a].AsInteger()
    q.append(plowad)

    OUT = q

    #3893 Score: 0

    KhonVlad
    Участник

    а все понял

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

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