Как разделить переменную между двумя скриптами pyRevit?

Я использую последнюю версию pyRevit v45. Я пишу информацию во временные файлы с

myTempFile = script.get_instance_data_file("id")

Это создает файл с именем pyRevit_2018_xxxx_id.tmp, в котором я храню полезную информацию. Если я не ошибаюсь, часть «xxxx» меняется каждый раз, когда я перезагружаю Revit. Теперь мне нужно получить доступ к этой информации из другого скрипта pyRevit.

Как я могу получить имя временного файла, который мне нужно прочитать? Другими словами, как мне получить доступ к «myTempFile» из второго скрипта, который не знает имени «myTempFile»?

Думаю, я могу каким-то образом разделить эту переменную между своими скриптами, но как правильно это сделать? Я знаю, что это должен быть очень простой вопрос программирования, но я действительно не программист;)

Большое спасибо, Арно.


person Arnaud    schedule 07.02.2018    source источник


Ответы (2)


Хорошо, теперь я понимаю, что мои переменные в первом скрипте перестают существовать после его выполнения. Так что пока я написал имя файла в другом файле, имя которого я знаю .. Это работает.

Но если есть более чистый способ сделать это, я был бы рад узнать;)

Арно

person Arnaud    schedule 08.02.2018
comment
Вы правы в своем предположении. Переменные существуют в течение всего объема, в котором они выполняются. Вы можете использовать механизм под названием Extensible Storage, чтобы хранить их в модели и повторно использовать позже, если это ваш вариант использования. См. Здесь для получения дополнительной информации об ES archi-lab. net / что-почему-и-как-из-расширяемого-хранилища - person konrad; 08.02.2018

Модуль pyrevit.script предоставляет 4 различных метода для создания временных файлов в зависимости от их варианта использования:

get_instance_data_file: для файлов данных, отмеченных идентификатором экземпляра Revit. Это означает, что скрипты, запущенные на другом экземпляре, не увидят этот временный файл. http://pyrevit.readthedocs.io/en/latest/pyrevit/script.html#pyrevit.script.get_instance_data_file

get_universal_data_file: для временных файлов, доступных для всех экземпляров и версий Revit http://pyrevit.readthedocs.io/en/latest/pyrevit/script.html#pyrevit.script.get_universal_data_file

get_data_file: базовый метод получения стандартного временного файла для текущей версии Revit http://pyrevit.readthedocs.io/en/latest/pyrevit/script.html#pyrevit.script.get_data_file

get_document_data_file: временный файл, отмеченный активным документом (поэтому скрипты, работающие с другим документом, этого не увидят) http://pyrevit.readthedocs.io/en/latest/pyrevit/script.html#pyrevit.script.get_document_data_file

Каждый метод использует шаблон для создания имени временного файла. Таким образом, пока вызов метода является одним и тем же для разных скриптов, метод генерирует одно и то же имя файла.

Пример:

Скрипт 1:

from pyrevit import script
tfile = script.get_data_file('mydata')

Скрипт 2:

from pyrevit import script
tempfile = script.get_data_file('mydata')

В этом примере tempfile = tfile, поскольку идентификатор файла такой же.

По каждому из них есть документация, поэтому обязательно ознакомьтесь с ними и выберите тот, который соответствует вашим целям.

person Ehsan Iran-Nejad    schedule 09.03.2018