网站开发怎样验收,英德网络推广,国际电子商务网站建设,学ui设计难不难不就是类似blender-mcp的东西吗
ai blender流水线制作mod第一步#xff0c;画个立方体_哔哩哔哩_bilibili
blender 开放exec接口的插件 连接ide vscode-CSDN博客
ai流水线式调用命令-CSDN博客
{tools: [{name: get_all_objects,画个立方体_哔哩哔哩_bilibiliblender 开放exec接口的插件 连接ide vscode-CSDN博客ai流水线式调用命令-CSDN博客{ tools: [ { name: get_all_objects, path: blender_cline/blender_api_tool.py, description: 获取Blender当前场景中的所有物体, parameters: [], examples: [ [TOOL:get_all_objects] ] }, { name: delete_all_objects, path: blender_cline/blender_api_tool.py, description: 删除Blender当前场景中的所有物体, parameters: [], examples: [ [TOOL:delete_all_objects] ] }, { name: create_cube, path: blender_cline/blender_api_tool.py, description: 在Blender场景中创建一个立方体, parameters: [], examples: [ [TOOL:create_cube] ] }, { name: activate_blender, path: blender_cline/blender_api_tool.py, description: 激活Blender窗口将Blender应用带到前台, parameters: [], examples: [ [TOOL:activate_blender] ] } ] }import sys import os import requests import json import subprocess import platform def call_blender_api(endpoint, code): 调用Blender API执行代码 url fhttp://localhost:8080{endpoint} payload { code: code } try: response requests.post(url, jsonpayload) return response.json() except requests.exceptions.RequestException as e: print(f请求错误: {e}) return None def activate_blender_window(): 激活Blender窗口精确匹配窗口标题 try: import pygetwindow as gw except ImportError: print(pygetwindow未安装请运行: pip install pygetwindow) return False try: # 获取所有窗口 all_windows gw.getAllWindows() blender_window None for window in all_windows: window_title window.title.strip() # 多种可能的Blender标题格式 if (window_title Blender or # 基础标题 window_title.startswith(Blender) and not any(exclude in window_title.lower() for exclude in [vscode, visual studio, code])): # 额外检查确保不是VSCode或其他编辑器 if - not in window_title or blender.exe in window_title.lower(): blender_window window break if blender_window: print(f激活窗口: {blender_window.title}) try: import win32gui import win32con hwnd blender_window._hWnd win32gui.ShowWindow(hwnd, win32con.SW_RESTORE) win32gui.SetForegroundWindow(hwnd) print(f窗口已放到最前端: {blender_window.title}) return True except ImportError: print(pywin32未安装请运行: pip install pywin32) if blender_window.isMinimized: blender_window.restore() blender_window.activate() print(Blender窗口已激活使用pygetwindow方法) return True else: print(未找到Blender窗口) # 显示所有窗口标题用于调试 all_titles gw.getAllTitles() print(所有窗口标题前10个:) for i, title in enumerate(all_titles[:10]): if title.strip(): print(f {i1}. {title}) return False except Exception as e: print(f激活Blender窗口时出错: {e}) return False def main(): if len(sys.argv) 2: print(错误: 缺少工具名称参数) return tool_name sys.argv[1] if tool_name get_all_objects: code import bpy # 获取当前场景中的所有物体 all_objects bpy.context.scene.objects # 打印每个物体的名称 result [] for obj in all_objects: obj_info fobj: {obj.name} result.append(obj_info) print(obj_info) result response call_blender_api(/api/exec, code) elif tool_name delete_all_objects: code import bpy # 选择所有对象 bpy.ops.object.select_all(actionSELECT) # 删除选中的对象 bpy.ops.object.delete() 所有物体已删除 response call_blender_api(/api/exec, code) elif tool_name create_cube: code import bpy # 添加一个立方体 bpy.ops.mesh.primitive_cube_add( location(0, 0, 0) # 设置立方体的位置 ) # 获取新创建的立方体对象 cube bpy.context.active_object cube.name MyCube # 重命名立方体 f立方体已创建名称: {cube.name} response call_blender_api(/api/exec, code) elif tool_name activate_blender: activate_blender_window() return else: print(f错误: 未知的Blender工具 {tool_name}) return if response: if response[status] success: print(f{tool_name} 执行成功!) print(f返回结果: {response[result]}) else: print(f{tool_name} 执行失败: {response[message]}) else: print(无法连接到Blender服务器) if __name__ __main__: main()