Работа со спецификацией

Главная Форумы Python Синтаксис и родные библиотеки Python Работа со спецификацией

В этой теме 9 ответов, 8 участников, последнее обновление  Иван Волощенко 1 неделя, 5 дн. назад.

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

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

    Создание спецификации (на примере, спецификации стен),

    удаление строк (также удаляются элементы),

    работа с фильтром,

    добавление или удаление параметров (столбцов),

    перестановка столбцов,

    изменение размеров столбцов,

    размещение спецификации на листе

    Скачать можно в разделе download

    Не забываем лайкать!

    #4577 Score: 1

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

    в некоторых случаях, при получении данных из ячеек с помощью команды TableSectiondata.GetCellText(row, col), может возвращаться пустое значение
    в этом случае лучше воспользоваться нодом Schedule.GetCalculatedValues из пакета SteamNodes

    #6473 Score: 0

    Gleb
    Участник

    Вопрос, как через питон скрыть или показать столбцы?

    #6489 Score: 0

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

    скачать
    внутри файла добавил комментарии.

    #7700 Score: 0

    Ренат Я.
    Модератор
    79 pts

    задался вопросом как можно поменять значение в фильтре спецификации
    вот мое решение данного вопроса

     

    #7918 Score: 0

    Antoni
    Участник
    1 pt

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

    #7965 Score: 0

    Евгений
    Участник
    10 pts

    отличное видео.

    Подскажите, как в спецификацию добавить фильтр с уровнем.

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

    Есть варианты?

     

    #7968 Score: 0

    ИваСерж
    Модератор
    118 pts

    Каким образом вы бы реализовали это вручную?
    Я бы добавил доп-параметр, по которому таки можно фильровать. Записал бы в этот параметр значение уровня и только потом фильтровал по этому параметру.

    Тогда алгоритм по скрипту:
    1. Добавить в проект нужный параметр к нужным категориям.
    2. найти все семейства.
    3. Считать уровень семейства как текст
    4. Сохранить текс уровня в параметр.

    Как по мне, выглядит хорошо.

    #8250 Score: 0

    Dmitry
    Участник

    Отличное видео.

    А как можно добавить столбец с формулой через API?

    #9148 Score: 0

    Иван Волощенко
    Участник

    Для ведомости расхода стали нужно скрыть пустые и нулевые столбцы, подкорректировал код, но как то не очень стабильно работает, проблема обнаружил если ранее был скрыт столбец со значением > 0 (как мне кажется), можно ли просканировать еще и скрытые столбцы. Или может что-то не так в коде?

    import clr
    clr.AddReference(‘RevitAPI’)
    import Autodesk
    from Autodesk.Revit.DB import *
    import sys
    #sys.path.append(r”C:\Program Files\Dynamo 0.8″)
    pyt_path = r’C:\Program Files (x86)\IronPython 2.7\Lib’
    sys.path.append(pyt_path)
    import os.path
    import math
    from operator import itemgetter, attrgetter
    import string
    import re
    clr.AddReference(‘ProtoGeometry’)
    from Autodesk.DesignScript.Geometry import *
    import System
    from System import Array
    from System.Collections.Generic import *
    import Autodesk.DesignScript as ds
    clr.AddReferenceByName(‘Microsoft.Office.Interop.Excel, Version=11.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c’)
    from Microsoft.Office.Interop import Excel
    System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo(“en-US”)
    from System.Runtime.InteropServices import Marshal
    clr.AddReference(“RevitNodes”)
    import Revit
    clr.ImportExtensions(Revit.Elements)
    from Revit.Elements import *
    clr.ImportExtensions(Revit.GeometryConversion)
    clr.ImportExtensions(Revit.GeometryReferences)
    clr.AddReference(“RevitServices”)
    import RevitServices
    from RevitServices.Persistence import DocumentManager
    from RevitServices.Transactions import TransactionManager

    doc = DocumentManager.Instance.CurrentDBDocument
    uidoc=DocumentManager.Instance.CurrentUIApplication.ActiveUIDocument
    uiapp=DocumentManager.Instance.CurrentUIApplication
    app = uiapp.Application

    view = doc.ActiveView

    def U(elem):
    a = UnwrapElement(elem)
    return a

    schedule = UnwrapElement(IN[0])
    #nameCol = IN[1]

    # Работа с полем спецификации (то, что мы видим на экране)
    # Если столбец скрыт, то он не будет найден
    secdata= schedule.GetTableData().GetSectionData(SectionType.Body)
    lstCol = secdata.LastColumnNumber # количество столбцов в спецификации
    lstRow = secdata.LastRowNumber # количество строк в спецификации
    TransactionManager.Instance.EnsureInTransaction(doc)
    mass = []
    s0 = []
    s1 = []
    j = lstCol
    while j > 1:
    i=5
    a=0
    f = secdata.GetCellText(4, j)
    while i <= lstRow:
    celldata = secdata.GetCellText(i, j) # получение данных из ячейки 0 – номер строки, 2 – номер столбца
    try:
    a = a + float(celldata.replace(‘,’,’.’))
    except:
    a = a
    i = i+1
    field = schedule.Definition.GetField(j) # schedule field

    if a > 0.1:
    field.IsHidden = 0 # 0 – показать
    s0.append(f)
    else:
    field.IsHidden = 1 # 1 – скрыть
    s1.append(f)
    j = j-1
    mass.append([s0,s1])
    TransactionManager.Instance.TransactionTaskDone()
    OUT = mass

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

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