Blender обрабатывает все параметры, передаваемые при запуске через командную строку. Однако некоторое скрипты и аддоны при запуске Blender из консоли для правильной работы могут требовать указания своих уникальных аргументов. Если указать такие нестандартные параметры в командной строке, Blender попытается обработать и их, что скорее всего приведет к ошибке. Однако в Blender предусмотрен специальный способ отсечения подобных аргументов от обработки программой.
Если при составлении командной строки после блока с основными параметрами добавить двойное тире без указания аргумента, последующие параметры при запуске Blender проигнорирует.
Если задать командную строку в виде:
1 |
blender -b scene.blend -- -param1 xxx -param2 yyy |
параметры param1 и param2 не будут обработаны Blender.
Рассмотрим, как это работает на примере:
Напишем простейший скрипт, выводящий параметры, переданные через командную строку специально для него.
Полный перечень входных параметров доступен скриптам и аддонам Blender через стандартную переменную python sys.argv. Сделаем проверку на наличие в параметрах двойного тире и сохраним последующие параметры для использования в скрипте.
1 2 3 4 |
import sys if '--' in sys.argv: argv = sys.argv[sys.argv.index('--') + 1:] |
Для того, чтобы получить переданные скрипту параметры в удобном виде, воспользуемся модулем обработки аргументов argparse.
1 2 3 4 5 6 |
import argparse parser = argparse.ArgumentParser() parser.add_argument('-s1', '--sample_1', dest='sample_1', metavar='FILE') parser.add_argument('-s2', '--sample_2', dest='sample_2', type=int, required=False) args = parser.parse_known_args(argv)[0] |
Здесь мы задали два параметра -s1 (путь к файлу) и -s2 (целое число), значения которых могут быть переданы в командной строке. Внутри скрипта параметры становятся доступны через объект args: args.sample_1 и args.sample_2.
Полный код скрипта для вывода переданных ему в командной строке параметров:
1 2 3 4 5 6 7 8 9 10 11 12 |
import sys import argparse if '--' in sys.argv: argv = sys.argv[sys.argv.index('--') + 1:] parser = argparse.ArgumentParser() parser.add_argument('-s1', '--sample_1', dest='sample_1', metavar='FILE') parser.add_argument('-s2', '--sample_2', dest='sample_2', type=int, required=False) args = parser.parse_known_args(argv)[0] # print parameters print('sample_1: ', args.sample_1) print('sample_2: ', args.sample_2) |
Сохраним скрипт в файл с именем param_script.py.
Вызов определенного скрипта при запуске Blender задается через параметр -P с указанием полного пути.
Командная строка для вызова подготовленного нами скрипта с передачей ему двух необходимых параметров имеет следующий вид:
для ОС Windows (все нужные файлы размещены в корне диска D):
1 |
"c:\Program Files\blender-2.79-windows64\blender.exe" -b -P d:/param_script.py -- -s1 d:/1.txt -s2 1234 |
После выполнения команды в консоль будут выведены параметры:
1 2 |
sample_1: d:/1.txt sample_2: 1234 |
для ОС Linux (все нужные файлы расположены в директории /tmp):
1 |
blender -b -P /tmp/param_script.py -- -s1 /tmp/1.txt -s2 1234 |
После выполнения команды в консоль будут выведены параметры:
1 2 |
sample_1: /tmp/1.txt sample_2: 1234 |