3DsMax通过CLI运行Python脚本时如何传入自定义参数
3ds Max 2018 Python脚本CLI传参解决方案
3ds Max的PythonHost启动器默认不会将脚本路径之后的额外参数传递到Python的sys.argv列表中,所以直接追加参数无法被识别,可通过以下三种方式实现自定义参数传递:
方案1:环境变量传参(最常用,适合参数较少场景)
- 执行命令前先在CLI中设置自定义环境变量,示例命令如下:
set INPUT_PATH=C:\test\input.max set OUTPUT_PATH=C:\test\output.fbx 3dsmax.exe -U PythonHost C:\Users\user\Desktop\Script.py
- 脚本内通过
os模块读取环境变量即可:
import os input_path = os.environ.get("INPUT_PATH") output_path = os.environ.get("OUTPUT_PATH")
方案2:参数拼接至脚本路径后解析
将参数用特殊分隔符(建议用#,不会和Windows路径规则冲突)拼接在脚本路径末尾,示例命令:3dsmax.exe -U PythonHost "C:\Users\user\Desktop\Script.py#C:\test\input.max#C:\test\output.fbx"
脚本内拆分sys.argv[0]获取参数:
import sys all_args = sys.argv[0].split("#") # all_args[0] 是原脚本路径,all_args[1]、all_args[2] 为传入的自定义参数 input_path = all_args[1] output_path = all_args[2]
方案3:临时参数文件传参(适合多参数、复杂参数场景)
- 执行3ds Max命令前,先把所有参数写入临时JSON/TXT文件,比如写入
C:\temp\args.json - 启动3ds Max执行脚本,脚本内读取该临时文件内容,读取完成后可删除临时文件避免残留
示例脚本代码:
import json import os with open(r"C:\temp\args.json", "r", encoding="utf-8") as f: args = json.load(f) input_path = args.get("input_path") output_path = args.get("output_path") # 可选:读取完成后删除临时文件 os.remove(r"C:\temp\args.json")
内容的提问来源于stack exchange,提问作者KreutzerCode
相关产品推荐
相关产品推荐

