Результаты поиска для 'list'

Главная Форумы Поиск Результаты поиска для 'list'

Просмотр 15 результатов — с 76 по 90 (из 325)
  • Автор
    Результаты поиска
  • #8642

    В ответ на: Dynamo Python списки

    Denis
    Участник

    Нашел, где встречал это – Квартирография RVT17 (строка 27) для шаблона АР Autodesk

    Если делаю аналог кода упрощенно, то питон выдает ошибку, что объект list не содержит атрибута IndexOf, хотя в скрипте квартирографии это работает.

    буду рад любому объяснению

    #8641
    Denis
    Участник

    Здравствуйте !

    что означает в выпадающем меню метод IndexOf(…) у списков в питоне ?

    например, создаю пустой список

    list1 = []

    далее пишу “list.” и выпадает меню с возможностью выбора (часто выбираю append, т.к. с ним научился работать и есть описание на питонворлд), а про IndexOf описания нет.

    К тому же питон ругается, что такого метода нет (хотя в выпадающем списке он есть и где-то в чьем то коде я это встречал)

    если возможно с примером.

    заранее спасибо !

     

    Дмитрий
    Участник

    Задача: создать армирование по площади с вырезанным участком (два прямоугольника; один в другом)

    Пытаюсь сделать с помощью метода AreaReinforcement Create Method (Document, Element, IList(Curve), XYZ, ElementId, ElementId, ElementId)

    Получаю сообщение, что линии не смежны (По отдельности прямоугольники создаются).

    Метода, чтобы добавить отверстия в имеющейся области не нашёл (NewOpening для армирования не работает).

    Прошу помощи

    Александр
    Участник

    Пару строк добавил, получилось один из параметров созданного экземпляра семейства изменить. Но почему-то оный параметр, который должен был задаваться входным параметром в строке p.Set(IN[2]), принимает какие-то непредсказуемые значения. Попробовал задавать значение числом (p.Set(400.0) ) , – почему-то в модели получаю значение параметра Диаметр сваи = 121920..

     

    import clr
    clr.AddReference(‘RevitAPI’)
    from Autodesk.Revit.DB import *
    clr.AddReference(“RevitNodes”)
    import Revit
    clr.ImportExtensions(Revit.Elements)
    clr.ImportExtensions(Revit.GeometryConversion)
    clr.AddReference(“RevitServices”)
    import RevitServices
    from RevitServices.Persistence import DocumentManager
    from RevitServices.Transactions import TransactionManager
    from Autodesk.Revit.DB.Structure import *
    clr.AddReference(‘RevitAPIUI’)
    from Autodesk.Revit.UI import *
    clr.AddReference(‘RevitNodes’)
    # импорт и работа с геометрией Dynamo
    clr.AddReference(‘ProtoGeometry’)
    from Autodesk.DesignScript.Geometry import *
    doc = DocumentManager.Instance.CurrentDBDocument
    point = UnwrapElement(IN[0])
    famtype = UnwrapElement(IN[1])
    elementlist = list()
    ST = StructuralType.NonStructural
    TransactionManager.Instance.EnsureInTransaction(doc)
    newobj = doc.Create.NewFamilyInstance(point.ToXyz(),famtype,ST)
    p=newobj.LookupParameter(“Диаметр сваи”)
    p.Set(IN[2])
    newobj.ToDSType(True)
    elementlist.append(newobj)
    TransactionManager.Instance.TransactionTaskDone()
    OUT = elementlist[0]

    Александр
    Участник

    Здравствуйте! Пытаюсь сделать первые шаги (как в динамо, так и в пайтоне..). Методом тыка/копипаста создал код (вроде рабочий), получающий на входе Family Types, точку вставки и несколько числовых значений и создающий экземпляр семейства. Подскажите, пожалуйста, как для свежерожденного newobj получить/изменить свойства экземпляра? Ну то бишь, через пайтон сделать примерно то, что делает в  динамо “Element.SetParameterByName”?

    import clr
    clr.AddReference(‘RevitAPI’)
    from Autodesk.Revit.DB import *
    clr.AddReference(“RevitNodes”)
    import Revit
    clr.ImportExtensions(Revit.Elements)
    clr.ImportExtensions(Revit.GeometryConversion)
    clr.AddReference(“RevitServices”)
    import RevitServices
    from RevitServices.Persistence import DocumentManager
    from RevitServices.Transactions import TransactionManager
    from Autodesk.Revit.DB.Structure import *
    clr.AddReference(‘RevitAPIUI’)
    from Autodesk.Revit.UI import *
    clr.AddReference(‘RevitNodes’)
    # импорт и работа с геометрией Dynamo
    clr.AddReference(‘ProtoGeometry’)
    from Autodesk.DesignScript.Geometry import *
    doc = DocumentManager.Instance.CurrentDBDocument
    point = UnwrapElement(IN[0])
    famtype = UnwrapElement(IN[1])
    elementlist = list()
    ST = StructuralType.NonStructural
    TransactionManager.Instance.EnsureInTransaction(doc)
    newobj = doc.Create.NewFamilyInstance(point.ToXyz(),famtype,ST)
    newobj.ToDSType(True)
    elementlist.append(newobj)
    TransactionManager.Instance.TransactionTaskDone()
    OUT = elementlist[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

    #8573
    Александр
    Участник
    16 pts

    Получилось через List.AllIndicesOf,но не могу отчисть от пустых списков,если надо сохранить структуру вложений первого списка.

    #8572
    Александр
    Участник
    16 pts

    Пытался

    сделать используя нод List.AllIndicesOf, не получилось с уровнями разобраться.

    А вот так получилось,проверяй.Не вижу кнопки загрузить файл.Поэтому скрин.

    n1k01a
    Участник

    Здравствуйте.
    В скрипте получены значения параметров в зависимости от имени типа.
    Подскажите, пожалуйста, как просуммировать эти значения параметров, так что бы суммы были внутри соответствующих подсписков?
    Возможно непонятно объяснил, потому прикладываю рисунок с желаемым результатом (выделено красным + показано стрелочками).
    Спасибо.

    Скрипт:

    import clr
    clr.AddReference(‘ProtoGeometry’)
    from Autodesk.DesignScript.Geometry import *
    from Autodesk.DesignScript.Geometry import *
    clr.AddReference(“RevitAPI”)
    import Autodesk
    from Autodesk.Revit.DB import *
    clr.AddReference(“RevitServices”)
    import RevitServices
    from RevitServices.Persistence import DocumentManager

    doc = DocumentManager.Instance.CurrentDBDocument

    Elems = UnwrapElement(IN[0])
    listElems = []

    for i in Elems:
    sublistElems = []
    for k in i:
    if “12 A500” in doc.GetElement((k).GetTypeId()).get_Parameter(BuiltInParameter.SYMBOL_NAME_PARAM).AsString():
    sublistElems.append((k).LookupParameter(“Объем арматуры”).AsDouble())
    if “8 A240” in doc.GetElement((k).GetTypeId()).get_Parameter(BuiltInParameter.SYMBOL_NAME_PARAM).AsString():
    sublistElems.append((k).LookupParameter(“Объем арматуры”).AsDouble())
    if “Подготовка” in doc.GetElement((k).GetTypeId()).get_Parameter(BuiltInParameter.SYMBOL_NAME_PARAM).AsString():
    sublistElems.append((k).LookupParameter(“Объем”).AsDouble())
    if “Монолитная” in doc.GetElement((k).GetTypeId()).get_Parameter(BuiltInParameter.SYMBOL_NAME_PARAM).AsString():
    sublistElems.append((k).LookupParameter(“Объем”).AsDouble())

    listElems.append(sublistElems)

    OUT = listElems

    #8551
    владимир
    Участник

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

    Пытаюсь получить в результате сгруппированные списки, в виде … 0 List (все перекрытия 0 этажа); 1 List (все перекрытия 1 этажа) … и.т.д.

    На Питон пока нет времени, да и не очень он мне дается. Забил вручную, те кода на питоне, что вы ответили. Забил английские аналоги параметров (у меня английский Ревит). Выдает ошибку.

     

    #8539
    Анатолий
    Участник
    37 pts

    1.

    2.`import clr
    clr.AddReference(“RevitAPI”)
    import Autodesk
    from Autodesk.Revit.DB import *
    clr.AddReference(“RevitServices”)
    import RevitServices
    from RevitServices.Persistence import DocumentManager
    doc = DocumentManager.Instance.CurrentDBDocument
    from operator import itemgetter
    wall=FilteredElementCollector(doc).OfCategory(BuiltInCategory.OST_Walls).WhereElementIsNotElementType().ToElements()
    column=FilteredElementCollector(doc).OfCategory(BuiltInCategory.OST_StructuralColumns).WhereElementIsNotElementType().ToElements()
    floor=FilteredElementCollector(doc).OfCategory(BuiltInCategory.OST_Floors).WhereElementIsNotElementType().ToElements()
    lk,ll,lm = [],[],[]
    for k in wall:
    r = k.LookupParameter(“Базовая зависимость”).AsValueString()
    lk.append(r)
    for l in column:
    s = l.LookupParameter(“Базовый уровень”).AsValueString()
    ll.append(s)
    for m in floor:
    t = m.LookupParameter(“Уровень”).AsValueString()
    lm.append(t)
    OUT = lk,wall,ll,column,lm,floor`
    3. `import clr
    clr.AddReference(‘ProtoGeometry’)
    from Autodesk.DesignScript.Geometry import *
    a = IN[0]
    list1,list2 = [],[]
    for k,l in zip(range(len(a)),a):
    ul = UnwrapElement(l)
    if k%2:
    list1.append(l)
    else:
    list2.append(l)
    OUT = dir(ul)
    OUT = list1,list2`

    #8406
    Serge
    Участник

    попробовал вставить код, получаю ошибку NameError: name ‘LegendComponent’ is not defined. если написать LegendComponentS , то выдает: AttributeError: ‘List[Element]’ object has no attribute ‘get_Parameter’.

    есть подозрения по поводу 4 пункта, скорее всего type Id  у типа семейства и компонента легенды разные

    #8403
    Legantmar
    Хранитель
    475 pts

    Как я себе вижу
    1) Собираешь список всех окон в проекте (через Filtered .. .WhereElementIsNotElementType().ToElements())
    2) Определяешь ID семейств типов этих окон (через doc.GetElement(window.GetTypeId()).Id  (через Set(list) оставляешь уникальные)
    3) Собираешь список всех компонентов легенды с одновременным определением ID типа элемента внутри (см.8392 и (2))  – соединяешь 2 списка через zip
    4) в циклах проходишь по списку из (2) и из (3) при совпадении их Id типов, получаешь компонент легенды (или его Id)

    Анатолий
    Участник
    37 pts

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

     

    tip = IN[0]
    polus = IN[1]
    sechen = IN[2]
    elem = IN[3]
    d, list = [],[]
    for t,p,s,el in zip(tip,polus,sechen,elem):
    	e = round(s,1)
    	ke = t.Name
    	c = ke+" "+str(p)+"х"+str(e)
    	d.append(c)
    	uel=UnwrapElement(el)
    	uel.LookupParameter("MS_марка провода").Set(c)
    	mark1=uel.LookupParameter("MS_марка провода").AsString()
    	list.append(mark1)
    OUT = list

    Немного изменил.

    #8288
    Анатолий
    Участник
    37 pts

    Будто-бы получилось все сделать. Единственное, нужно добавить фильтр по стадиям помещений, если они у вас различаются.
    import clr
    clr.AddReference('ProtoGeometry')
    from Autodesk.DesignScript.Geometry import *

    W = IN[0]
    L = IN[1]
    a = IN[2]
    b = IN[3]
    c = IN[4]
    d = IN[5]
    pointX = IN[6]
    pointY = IN[7]
    pointZ = IN[8]
    l1,i1 = [],[]
    k = []
    n = []
    xlev = []
    kkk = []
    for l,w,pX in zip(L,W,pointX):
    k1 = (l-c*2)//a #узнаём количество вставляемых семейств по х
    if k1>0:
    k2 = k1
    n1 = (l-k2*a)/2 #новый отступ от стен
    xlev1 = pX - l/2 + n1 #координата по Х первого вставляемого семейства
    k.append(k2)
    n.append(n1)
    xlev.append(xlev1)
    kn = range(1,int(k2)+1)
    kkk.append(kn)
    else:
    k2 = 0
    k.append(k2)
    kn = range(1,int(k2)+1)
    #kkk.append(kn)
    listX,listY,listZ = [],[],[]
    for kk,xl,y,z in zip(kkk,xlev,pointY,pointZ):
    listX1,listY1,listZ1 = [],[],[]
    for ks in kk:
    xx = ks*a+xl
    yy = y
    zz = z
    listX1.append(xx)
    listY1.append(yy)
    listZ1.append(zz)
    listX.append(listX1)
    listY.append(listY1)
    listZ.append(listZ1)
    OUT = listX,listY,listZ

Просмотр 15 результатов — с 76 по 90 (из 325)