Синтаксис Revit API. Режим траектории электрической цепи

Главная Форумы Задать вопрос Синтаксис Revit API. Режим траектории электрической цепи

Просмотр 9 сообщений - с 1 по 9 (из 9 всего)
  • Автор
    Сообщения
  • #7715 Score: 1
    Семен
    Участник
    5 pts

    Добрый день, господа.

    Прошу научить синтаксису общения со свойством ElectricalSystem.CircuitPathMode (http://www.revitapidocs.com/2018/78b13087-63d8-090e-92ab-024d06717903.htm). Это появилось в 18 ревите и по сути это переключатель двух режимов расчета длины цепи: “Наиболее удалённое устройство” и “Все устройства”. Желаю прописать всем моим цепям “Все устройства”.

    Уважаемый Хасан Мамаев учил исследовать мир функцией dir(), но я не втащил:

    dir демонстрирует наличие сущностей (в виде гномиков?) 0) AllDevices и 4) FarthestDevice.

    попробовал  .CircuitPathMode.Set(“AllDevices”)), получил AttributeError: ‘ElectricalCircuitPathMode’ object has no attribute ‘Set’

    Да, нужно создать и открыть транзакцию. Но вопрос вроде бы не в этом.

    #7716 Score: 1
    ИваСерж
    Хранитель
    134 pts

    Как исследовать – РевитАпи Докс. ДИР -ни разу не пользовался ))
    Метод Set реализуется через обычное присвоение =
    elCircuit.CircuitPathMode = AllDevices #должно по идее работать.

    Ну и естественно, изменения в проект надо вносить через транзакции – поэтому у вас и не работает.

    #7717 Score: 0
    Семен
    Участник
    5 pts

    Спасибо, но не сработало(

    http://www.revitapidocs.com/2018.1/ee98a836-6a40-db03-ef1e-655424d04a9a.htm – вероятно, нужно присваивать значение, приведенное к типу ElectricalCircuitPathMode Enumeration? Как это сделать? Или я выдумываю?

    #7718 Score: 1
    Иван
    Участник
    4 pts

    Да, Вы верно понимаете. Попробуйте так:

    cir.CircuitPathMode = ElectricalCircuitPathMode.AllDevices

     

    К сожалению, на домашнем компе не установлен Revit 2018, не могу сам попробовать.

    #7719 Score: 0
    Семен
    Участник
    5 pts

    То же самое: expected name

    #7723 Score: 1
    ИваСерж
    Хранитель
    134 pts

    У Вас в скрипте полный бардак.
    Поскольку задача мне интересна, сейчас протестирую её в Динамо и выложу результаты

    #7727 Score: 2
    ИваСерж
    Хранитель
    134 pts

    У меня все получилось и работает.
    Прошу применять.
    https://pastebin.com/yYgsaaZF

    #7730 Score: 0
    Семен
    Участник
    5 pts

    Спасибо, ИваСерж. Изучив ваш код имею следующее.
    Разобрался с ошибкой expected name – возникала из-за того, что я аппендил в свой список результат присваивания.
    Способ транзакции, взятый мной из уроков по RPS, срабатывает один раз, после чего выдаёт:

    “Предупреждение:IronPythonEvaluator.EvaluateIronPythonScript операция не выполнена.
    Traceback (most recent call last):
    File “<string>”, line 19, in <module>
    Exception: Starting a new transaction is not permitted. It could be because another transaction already started and has not been completed yet, or the document is in a state in which it cannot start a new transaction (e.g. during failure handling or a read-only mode, which could be either permanent or temporary).”

    Такой способ показался мне прикольным из-за возможности видеть в списке Ctrl+Z именованную операцию:

    Традиционный способ через TransactionManager (его можно аналогично именовать?) у меня сработал, причём вне цикла

    Скажите, ваша проверка на 28 строке – это перфекционизм или необходимость?

    #7732 Score: 0
    ИваСерж
    Хранитель
    134 pts

    По транзакциям ничего не могу посоветовать.
    Надо проэксперементировать с subtransaction и TransactionGroup

    Проверка проводится для попытки облегчить работу с большим количеством сетей.
    Я проверил на своем текущем проекте – у меня всего 300 цепей – без проверки справляется.
    Что будет, если сетей будет больше 1000?
    Скрипт изначально должен разрабатываться с учетом оптимизации работы памяти.

    А, забыл. UnwrapElement не работает со списками – будет проблема.
    Правильнее анврапать элемент уже в теле цикла, а не в начале весь список.

    for cir in cirs:
    cirUnw = UnwrapElement(cir)

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