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

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

  • В этой теме 13 ответов, 12 участников, последнее обновление 2 года назад сделано Almaz.
Просмотр 14 сообщений - с 1 по 14 (из 14 всего)
  • Автор
    Сообщения
  • #4193 Score: 13
    Legantmar
    Хранитель
    475 pts

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

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

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

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

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

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

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

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

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

    #4577 Score: 3
    Legantmar
    Хранитель
    475 pts

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

    #6473 Score: 0
    Gleb
    Участник

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

    #6489 Score: 0
    Legantmar
    Хранитель
    475 pts

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

    #7700 Score: 0
    Ренат Я.
    Модератор
    79 pts

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

     

    #7918 Score: 0
    Antoni
    Участник
    1 pt

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

    #7965 Score: 0
    Евгений
    Участник
    11 pts

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

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

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

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

     

    #7968 Score: 0
    ИваСерж
    Хранитель
    134 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

    #10367 Score: 0
    Ruben Petrosyan
    Участник

    Всем привет, подскажите пожалуйста, как заполнять столбец своими данными и возможно ли это через динамо PyS?

    #10382 Score: 0
    Андрей
    Участник
    2 pts

    *****Всем привет, подскажите пожалуйста, как заполнять столбец своими данными и возможно ли это через динамо PyS?*****

    Вам нужно общий параметр в параметры проекта той категории для которой спецификация. Тогда его можно будет добавить в спецификацию в виде дополнительного столбца (добавить поле).

    Ну а заполнить своими данными появившийся у элементов данной категории параметр в Dynamo не трудно.

    #10457 Score: 0
    Dmitry
    Участник

    Доброе время суток.

    Не подскажите, есть ли метод, выбирающий элементы напрямую через строку спецификации?

    (т.е. я понимаю, что можно выбрать все элементы категории, а затем их фильтрануть через такой же, как в спецификации, фильтр. Но хотелось бы в 1 кнопку, типа: выбрал строку – получил список элементов).

    #10960 Score: 0
    Almaz
    Участник

    Добрый день. А как можно измненить зоголовок столбца спецификации. Например, чтобы вместо “Длина” было “Длина стены” и тп. ?

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