Пакетное добавление параметров

Главная Форумы Python Revit Library (API) Пакетное добавление параметров

В этой теме 36 ответов, 11 участников, последнее обновление  Шпилька 2 мес., 1 неделя назад.

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

    Сергей Кривой
    Модератор
    13 pts

    Здравствуйте, уважаемые динамовцы.

    Хочу поделиться наработкой, позволяющей пакетно создавать и добавлять в проект Общие параметры. Схема состоит из XLSX файла, в который заложены необходимые списки свойств, связанных с Общими параметрами, и скрипта, основанного на пакете от Arch-Lab “Add Shared Parameter to Project”. Сам скрипт доработан по части добавления нескольких категорий семейств одновременно, а также реализована возможность его исполнения на 2016 ревите.

    Ссылка на скрипт

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

    Список групп начинается со стандартных, которые можно выбрать при обычном добавлении параметра, но в него входят и группирования от системных семейств. Стоит отметить, что они также могут быть использованы для добавления параметров. Единственное пока найденное ограничение — если попытаться параметр с таким наименованием группы открыть через вкладку управления, параметр попадёт в группу “Прочее”, т. е. добавленная ранее группа слетает. Список форматов представлен стандартными форматами, которые можно выбрать при обычном добавлении параметров.

    При подгружении таблицы в Dynamo скрипт не существующие ранее параметры добавляет как в файл общих параметров, так и в проект, а уже существующие — только в проект (выбранный формат в данном случае не влияет).

    Зачем нужно пакетное добавление? Чтобы не делать по десять кликов для того, чтобы добавить один параметр ) Если возникнут замечания/предложения по доработке схемы, с удовольствием обсудим.

    P.S. По замечанию Александра Попова, подобная схема пригодится при внесении в существующий проект параметров из единого “общего” файла Общих параметров, основанного на BIM стандарте.

    P.P.S. Сейчас очень актуальной является возможность пакетного добавления параметров проекта (не общих). Если есть идеи или примеры, где можно посмотреть, подскажите, пожалуйста.

    #3492 Score: 0

    Khasan Mamaev
    Хранитель
    176 pts

    Сергей спасибо большое. Интересный скрипт

    #3819 Score: 0

    kulkul
    Участник
    48 pts

    Hi Friends,

    I am getting error while using this script. Any help!

    #3820 Score: 0

    Сергей Кривой
    Модератор
    13 pts

    Hi, kulkul.

    What version of Revit are you using?

    #3821 Score: 0

    kulkul
    Участник
    48 pts

    Hi Sergey,

    Thanks for replying. I am using Revit 2015 dynamo version 0.9.1.

     

    #3822 Score: 0

    Сергей Кривой
    Модератор
    13 pts

    In this case, you need a previous version of this method: “Autodesk.Revit.DB.Definitions.Create(string, Autodesk.Revit.DB.ParameterType, bool)”

    http://dynamobim.org/forums/topic/shared-parameter-creation-from-list/#post-42001

    #3823 Score: 0

    kulkul
    Участник
    48 pts

    Thanks sergey,

    Do you have script for Revit 2015? I saw that link before  but it didn’t work. Can you please give Script for Revit 2015.

     

    #3824 Score: 0

    Сергей Кривой
    Модератор
    13 pts

    Unfortunately I have no opportunity test this at 2015 version now. Use “Add Shared Parameter to Project” node for 2015 version by Konrad, copy of it lines with method “Definitions.Create(string, Autodesk.Revit.DB.ParameterType, bool)”.

    #3825 Score: 0

    kulkul
    Участник
    48 pts

    Thanks i solved It!

    Thank you so much ))))

    #4484 Score: 0

    Zyado
    Участник

    hi,

    i can not speak Russian. I am keeping following your blog with google translator. so i am not understanding all of the text, but imostly i understand it so far. i have two questions.

    how didyou solved it for Revit 2015? can you share the screen shot of the modified script?

    how can i bid one parameter for different categories

    thanx

    #4491 Score: 0

    Сергей Кривой
    Модератор
    13 pts

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

    Для того, чтобы использовать скрипт на 2015 версии, необходимо использовать метод Definitions.Create(string, ParameterType, bool) вместо ExternalDefinitionCreationOptions(string, ParameterType). Просто замените эти строки:

    opt = ExternalDefinitionCreationOptions(_paramName[k], _paramType[k])
    opt.Visible = _visible[k]

    на эту:

    Definitions.Create(_paramName[k], _paramType[k], _visible[k])

    Категорию, для которой назначается параметр, определяет эта строка:

    cats.Insert(category)

    Если таких строк несколько с разными категориями в скобках, то параметр назначается всем перечисленным категориям. Другими словами, нужно запустить цикл по списку из категорий, в которые нужно добавить параметры:

    for category in categories:
    cats.Insert(category)

    Список категорий предварительно нужно создать. Можно сделать так, чтобы он создавался, обрабатывая все строки таблицы и находя одинаковые параметры с разными категориями.

    Позже я выложу доработанный скрипт.

    #4516 Score: 0

    kulkul
    Участник
    48 pts

    Hi Sergey,

    How do you set the parameters to type?

    #4522 Score: 0

    Сергей Кривой
    Модератор
    13 pts

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

    За способ создания отвечают разные методы: NewInstanceBinding и NewTypeBinding. Выбор метода зависит от того, что указано в параметре _instance[k] (True или False, т. е. 1 или 0):

    В случае использования файла XLSX эти значения задаются в этом столбце (0 это тип, 1 это экземпляр):

    #4523 Score: 0

    kulkul
    Участник
    48 pts

    Thanks Sergey,

    I am already using True or False from excel but it is not working?

     

    #4527 Score: 0

    Сергей Кривой
    Модератор
    13 pts

    kulkul, а что у вас подаётся? В Python нужно подавать непосредственно 0 или 1. Не нужно подавать True или False.

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

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