# process.blender 库模块帮助文档

## process.blender 成员列表 <a id="process.blender" href="#process.blender">&#x23;</a>

用 Blender 内置 Python 执行 bpy 脚本；不依赖 Autos、MCP、外部 Python 或插件。

### process.blender.checkPath() <a id="process.blender.checkPath" href="#process.blender.checkPath">&#x23;</a>
找不到 Blender 时读取官网下载页并调用 inet.installer.asInvoker 安装；失败返回 null,错误信息。

### process.blender.connect(sessionOrInfo,timeoutMs=30000) <a id="process.blender.connect" href="#process.blender.connect">&#x23;</a>
仅连接已存在会话。参数为会话名称（默认 default）或客户端的 connection 纯表。  
在新线程/执行上下文中重新创建客户端；不传递客户端实例。  

[返回对象:processBlenderClientObject](#processBlenderClientObject)

### process.blender.exec(code,options) <a id="process.blender.exec" href="#process.blender.exec">&#x23;</a>
新建后台 Blender 执行 Python 代码，返回 process.popen 对象。  
options：blendFile、factoryStartup=false、args；默认不载入用户启动配置、禁止 .blend 内嵌自动脚本。  
args 经 JSON 传入，Python 中用全局变量 args 读取（省略为 None）；路径等数据放 args，不拼进代码。  
脚本通过 stdin 完整传入，脚本错误退出码为 1。用 readAll 读取输出并等待结束。  

[返回对象:processPopenObject](https://www.aardio.com/zh-cn/docs/library-reference/process/popen.html#processPopenObject)

### process.blender.execfile(file,options) <a id="process.blender.execfile" href="#process.blender.execfile">&#x23;</a>
新建后台 Blender 执行 Python 文件。options 与 exec 相同。  
指定 args 时经 runpy 运行（保留 __file__、__name__=='__main__'），脚本用全局变量 args 读取。  

[返回对象:processPopenObject](https://www.aardio.com/zh-cn/docs/library-reference/process/popen.html#processPopenObject)

### process.blender.findPath() <a id="process.blender.findPath" href="#process.blender.findPath">&#x23;</a>
只查找 blender.exe，不下载安装。成功返回完整路径。

### process.blender.findPythonPath() <a id="process.blender.findPythonPath" href="#process.blender.findPythonPath">&#x23;</a>
只读查找当前 Blender 安装目录下的 python.exe，不硬编码版本、不安装 Python。  
找不到或有多个候选返回 null,错误信息。内置 python.exe 不是 bpy 宿主。

### process.blender.jsonRpc(options) <a id="process.blender.jsonRpc" href="#process.blender.jsonRpc">&#x23;</a>
启动或重连可见 Blender 会话。  
options：session（默认 default）、timeoutMs（默认30000）、startupTimeoutMs（默认30000）、blendFile、factoryStartup。  
已有描述时只尝试重连，失败不自动新建进程；需要新场景可显式使用另一个 session。  
只接管本库启动的实例。长时间 Python/渲染会占用 Blender 主线程。  

[返回对象:processBlenderClientObject](#processBlenderClientObject)

### process.blender.path <a id="process.blender.path" href="#process.blender.path">&#x23;</a>
可指定 blender.exe 路径；默认从运行进程、历史记录、App Paths、快捷方式发现。

### process.blender.python(arguments,startInfo) <a id="process.blender.python" href="#process.blender.python">&#x23;</a>
运行 Blender 自带的普通 Python 解释器，不启动 Blender GUI、不提供 bpy。  
适合纯 Python 测试、AST/JSON/文件处理。内部复用 process.python.start，自动使用 UTF-8、无缓冲输出、禁止 .pyc 写入。  
arguments 是命令行字符串或数组；startInfo 同 process.python.start。  
返回原生 process.popen，用 readAll 排空输出并等待；不重复设置 codepage，不修改 process.python.path。  

[返回对象:processPopenObject](https://www.aardio.com/zh-cn/docs/library-reference/process/popen.html#processPopenObject)

### process.blender.sessionPath(session="default") <a id="process.blender.sessionPath" href="#process.blender.sessionPath">&#x23;</a>
获取本机会话描述路径，不启动 Blender。描述含连接口令，不应共享到网络或发布包。

### process.blender.version <a id="process.blender.version" href="#process.blender.version">&#x23;</a>
库版本。

## processBlenderClientObject 成员列表 <a id="processBlenderClientObject" href="#processBlenderClientObject">&#x23;</a>

### processBlenderClientObject.bridgeInfo <a id="processBlenderClientObject.bridgeInfo" href="#processBlenderClientObject.bridgeInfo">&#x23;</a>
connect 握手时的 ping 结果，可检查 capabilities；场景摘要是连接时快照，实时状态请再调用 ping。

### processBlenderClientObject.call(method,args) <a id="processBlenderClientObject.call" href="#processBlenderClientObject.call">&#x23;</a>
调用公开方法 ping、exec、eval、quit；通常使用对应便捷方法。

### processBlenderClientObject.close() <a id="processBlenderClientObject.close" href="#processBlenderClientObject.close">&#x23;</a>
仅断开客户端，不关闭 Blender，不保存场景；可重复调用。

### processBlenderClientObject.connection <a id="processBlenderClientObject.connection" href="#processBlenderClientObject.connection">&#x23;</a>
可序列化的会话描述，含本机连接口令；跨线程传此表，不传客户端。

### processBlenderClientObject.eval(expression) <a id="processBlenderClientObject.eval" href="#processBlenderClientObject.eval">&#x23;</a>
在相同上下文求值。成功直接返回 JSON 值（可为 false、0、null）；失败返回 null,错误信息,detail。

### processBlenderClientObject.exec(code,args,options) <a id="processBlenderClientObject.exec" href="#processBlenderClientObject.exec">&#x23;</a>
在 Blender 主线程执行整段 Python，保留本进程 Python 全局变量。  
Python 中用 args 读取 JSON 参数，以 result 指定结果。  
bridge2 成功返回 {result,stdout,stderr,logs}；日志默认每流保留前1 MiB，options.logLimitBytes 可设0到1048576。  
logs 含 limitBytes 及 stdout/stderr 的 totalBytes、keptBytes、truncated；完整日志请显式写文件。业务结果不截断，超16 MiB帧明确报错。  
失败返回 null,错误信息,detail；Python 控制异常也返回错误，不代表回滚。  
旧会话基本调用仍支持，第三参数会在发送前拒绝。超时不代表取消，不自动重发；应显式 connect 后回读状态。

### processBlenderClientObject.ping() <a id="processBlenderClientObject.ping" href="#processBlenderClientObject.ping">&#x23;</a>
返回进程ID、版本、是否主线程、当前场景和对象数。  
bridge2 另含 bridgeRevision=2、capabilities、日志上限；bridgeVersion 仍为协议1。

### processBlenderClientObject.quit() <a id="processBlenderClientObject.quit" href="#processBlenderClientObject.quit">&#x23;</a>
明确退出此会话 Blender，不自动保存；请先用 bpy.ops.wm.save_as_mainfile 保存。

### processBlenderClientObject.rpc <a id="processBlenderClientObject.rpc" href="#processBlenderClientObject.rpc">&#x23;</a>
底层 rpc 对象，可调整 timeoutMs；勿并发使用。  

[返回对象:wsockRpcJsonClientObject.rpc](#wsockRpcJsonClientObject.rpc)
