Список Excel и список элементов – как сравнить.

Главная Форумы Python Помогите с питон кодом Список Excel и список элементов – как сравнить.

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

    Всем, доброго дня!

    Исходные данные:

    • файл Excel в котором прописаны замечания к модели Revit;
    • в этом файле есть марка элемента к которому относится замечание
    • в семействе элемента есть параметр “Замечание”;
    • элементы – категории “Каркас несущий”

    Задача:

    • из файла Excel считать марку элемента
    • по марке найти элемент в модели
    • заполнить параметр “Замечание” (замечание относится к соответствующему элементу)

    Все, что необходимо, из файла Excel вытащил нодами Dynamo (марки, замечания). Марки элементов модели тоже с помощью нодов.

    А вот дальше….. Не все элементы модели замаркированы (элементы, у которых параметр “Марка” не заполнен, в данном случае не нужны).

    И вот у меня вопрос (даже не один)))

    1. Как отфильтровать элементы с заполненным параметром “Марка”.
    2. Как заполнить параметр “Замечание” у этих элементов.

    Прошу помочь с решением этих вопросов.

    С Dynamo я на “ВЫ”. С Python всё никак не могу подружиться (но очень хочу. Так как и с RevitAPI).

    #8594 Score: 0
    Анатолий
    Участник
    37 pts

    Вот что получилось у меня.


    import clr
    clr.AddReference('RevitAPI')
    from Autodesk.Revit.DB import *
    clr.AddReference('System.Core')
    import System
    clr.ImportExtensions(System.Linq)
    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

    kns = IN[0]
    list,list1,list2 = [],[],[]
    kns1=kns.Where(lambda x: UnwrapElement(x).LookupParameter("Марка").AsString()> 0)
    kns2=kns.Where(lambda x: UnwrapElement(x).LookupParameter("Марка").AsString()< 0)

    for k in kns1:
    k1=UnwrapElement(k).LookupParameter("Марка").AsString()
    list1.append(k1)

    a = IN[1][0]
    c = IN[1][2]
    S,T = [],[]
    for i in range(len(a)):
    for j in range(len(list1)):
    if a[i]==list1[j]:
    S.append(c[i])
    TransactionManager.Instance.EnsureInTransaction(doc)
    for s,t in zip(S,kns1):
    UnwrapElement(t).LookupParameter("Комментарии").Set(s)
    s1=UnwrapElement(t).LookupParameter("Комментарии").AsString()
    T.append(s1)
    TransactionManager.Instance.TransactionTaskDone()
    OUT = list1,kns2,T

    #8600 Score: 0
    Sche
    Участник
    34 pts

    Нодами вот так:

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