[Решено] Вытащить имена помещений и записать в параметр

Главная Форумы Python Помогите с питон кодом [Решено] Вытащить имена помещений и записать в параметр

Помечено: 

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

    Добрый день! Помогите отредактировать код скрипта Александра Попова “Экспликация полов в Revit по ГОСТ автоматически”.
    Питона я не знаю.
    Нужно вместо номеров помещений, нужно имена помещений записать.

    Как я понял, нужно вместо BuiltInParameter.ROOM_NUMBER изменить на BuiltInParameter.ROOM_NAME.
    Также после ошибки изменил num1=int(float(num1)) на num1=num1
    Но тут вышла ошибка:

    <span style=”font-size: 80%;”>Предупреждение:IronPythonEvaluator.EvaluateIronPythonScript операция не выполнена.</span>
    <span style=”font-size: 80%;”>Traceback (most recent call last):</span>
    <span style=”font-size: 80%;”>File “”, line 77, in</span>
    <span style=”font-size: 80%;”>UnicodeEncodeError: (‘unknown’, ‘\x00’, 0, 1, ”)</span>

    `import clr
    clr.AddReference(‘ProtoGeometry’)
    from Autodesk.DesignScript.Geometry import *
    clr.AddReference(‘RevitAPI’)
    from Autodesk.Revit.DB import *
    clr.AddReference(“RevitServices”)
    import RevitServices
    from RevitServices.Persistence import DocumentManager
    from RevitServices.Transactions import TransactionManager
    doc = DocumentManager.Instance.CurrentDBDocument
    rooms = FilteredElementCollector(doc).OfCategory(BuiltInCategory.OST_Rooms).WhereElementIsNotElementType().ToElements()
    #———–ВХОДНЫЕ ДАННЫЕ——————
    par1=IN[1]
    setpar=IN[2]
    tire = IN[3]
    zap = IN[4]
    #———-ФУНКЦИИ——————
    def get3p(room):
    try:
    val1 = room.LookupParameter(par1).AsValueString()
    except:
    val1=””
    if val1 is None:
    val1=””
    valob=val1
    return valob
    #———-СОРТИРОВКА ПОМЕЩЕНИЙ ПО НОМЕРУ————–
    r1=[]
    list1=[]
    for room in rooms:
    if room.Area>0:
    r1.append(room)
    num1=room.get_Parameter(BuiltInParameter.ROOM_NUMBER).AsString()
    num2=””
    num3=””
    num4=””
    num5=””
    num6=””
    if “.” in num1:
    c1=num1.find(“.”)
    num2=num1[c1+1:]
    num1=num1[:c1]
    if “.” in num2:
    c2=num2.find(“.”)
    num3=num2[c2+1:]
    num2=num2[:c2]
    if “.” in num3:
    c3=num3.find(“.”)
    num4=num3[c3+1:]
    num3=num3[:c3]
    if “.” in num4:
    c4=num4.find(“.”)
    num5=num4[c4+1:]
    num4=num4[:c4]
    if “.” in num5:
    c5=num5.find(“.”)
    num6=num5[c5+1:]
    num5=num5[:c5]
    if num1!=””:
    num1=int(float(num1))
    if num2!=””:
    num2=int(float(num2))
    if num3!=””:
    num3=int(float(num3))
    if num4!=””:
    num4=int(float(num4))
    if num5!=””:
    num5=int(float(num5))
    if num6!=””:
    num6=int(float(num6))
    list1.append([room,num1,num2,num3,num4,num5,num6])
    #list1.append(UnwrapElement(room).get_Parameter(BuiltInParameter.ROOM_NUMBER).AsString())
    from operator import itemgetter
    b = sorted(list1,key = itemgetter(1,2,3,4,5,6))
    list2=[]
    for b1 in b:
    nm1 = str(b1[1])
    if b1[2]!=””:
    nm1=nm1+”.”+str(b1[2])
    if b1[3]!=””:
    nm1=nm1+”.”+str(b1[3])
    if b1[4]!=””:
    nm1=nm1+”.”+str(b1[4])
    if b1[5]!=””:
    nm1=nm1+”.”+str(b1[5])
    if b1[6]!=””:
    nm1=nm1+”.”+str(b1[6])
    list2.append([b1[0],nm1])
    #—————БЕРЕМ ПАРАМЕТРЫ———————–
    uniq=[]
    for room1 in list2:
    room = room1[0]
    valob = get3p(room)
    if valob not in uniq:
    uniq.append(valob)
    numlist=[]
    roomlist=[]
    roomtxt=[]
    for val in uniq:
    list=[]
    text=[]
    txt=””
    for room1 in list2:
    room=room1[0]
    num = room1[1]
    valob = get3p(room)
    if valob==val:
    list.append(room)
    text.append(num)
    txt=txt+num+zap
    roomtxt.append(txt[:len(txt)-1])
    numlist.append(text)
    roomlist.append(list)
    “””
    i=0
    list3=[]
    list4=[]
    for num in numlist:
    i=0
    list5=[]
    for n in num:
    num1=n
    num2=””
    num3=””
    num4=””
    num5=””
    num6=””
    if “.” in num1:
    c1=num1.find(“.”)
    num2=num1[c1+1:]
    num1=num1[:c1]
    if “.” in num2:
    c2=num2.find(“.”)
    num3=num2[c2+1:]
    num2=num2[:c2]
    if “.” in num3:
    c3=num3.find(“.”)
    num4=num3[c3+1:]
    num3=num3[:c3]
    if “.” in num4:
    c4=num4.find(“.”)
    num5=num4[c4+1:]
    num4=num4[:c4]
    if “.” in num5:
    c5=num5.find(“.”)
    num6=num5[c5+1:]
    num5=num5[:c5]
    if num1!=””:
    num1=int(float(num1))
    if num2!=””:
    num2=int(float(num2))
    if num3!=””:
    num3=int(float(num3))
    if num4!=””:
    num4=int(float(num4))
    if num5!=””:
    num5=int(float(num5))
    if num6!=””:
    num6=int(float(num6))
    list5.append([num1,num2,num3,num4,num5,num6,n])
    #———Вносим в группы номера, идущие подряд———–
    j=0
    gr=[]
    gr1=[]
    while j2:
    txt=k[0]+tire+k[k.Count-1]+zap
    list4.append(txt[:len(txt)-1])
    i=i+1″””
    TransactionManager.Instance.EnsureInTransaction(doc)
    i=0
    for rooms in roomlist:
    for room in rooms:
    room.LookupParameter(setpar).Set(roomtxt[i])
    i=i+1
    TransactionManager.Instance.TransactionTaskDone()
    OUT = roomlist`

    Спасибо!

    #9035 Score: 0
    Askar
    Участник

    Извините! я нашел решение.

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