delete_elements
Remove Revit elements in bulk using JSON-RPC 2.0 compliant requests. Automatically handle integer and string element IDs, ensure transactional data consistency, and provide detailed error logging.
Instructions
批量删除Revit元素,支持字典格式参数,支持批量操作并遵循JSON-RPC 2.0规范。 mcp_tool使用时params不要有任何注释信息
特性:
完全匹配服务器参数处理逻辑
支持字典列表格式参数,每个字典包含elementId键
自动处理整数和字符串格式的elementId
事务化操作确保数据一致性
详细的错误处理和日志记录
参数: ctx (Context): FastMCP上下文对象 method (str): JSON-RPC方法名,默认为"DeleteElements" params (List[Dict[str, Union[int, str]]]): 删除参数列表,每个字典必须包含: - elementId (Union[int, str]): 要删除的元素ID
返回: dict: JSON-RPC 2.0格式的响应,结构为: 成功时: { "jsonrpc": "2.0", "result": [ { "elementId": "删除的元素ID", "name": "元素名称", "familyName": "族名称" }, ... ], "id": request_id } 失败时: { "jsonrpc": "2.0", "error": { "code": int, "message": str, "data": any }, "id": request_id }
示例: >>> # 删除多个元素(混合格式) >>> response = delete_elements(ctx, params=[ ... {"elementId": 5943}, ... {"elementId": "5913"}, ... {"elementId": 212831} ... ]) >>> print(response) { "jsonrpc": "2.0", "result": [ {"elementId": "5943", "name": "Wall 1", "familyName": "Basic Wall"}, {"elementId": "5913", "name": "Door 1", "familyName": "Single-Flush"}, {"elementId": "212831", "name": "Window 1", "familyName": "Fixed"} ], "id": 1 }
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| method | No | DeleteElements | |
| params | No |
Implementation Reference
- xml_revit_mcp/server.py:51-55 (registration)'delete_elements' is included in the GENERAL_TOOLS list used to register MCP tools via server.tool()get_commands, execute_commands, call_func, find_elements, update_elements, delete_elements, parameter_elements, get_locations, move_elements, show_elements, active_view, get_selected_elements, link_dwg_and_activate_view, get_view_data ]
- xml_revit_mcp/server.py:145-147 (registration)Loop that registers each tool in GENERAL_TOOLS, including delete_elements, as an MCP toolfor tool in GENERAL_TOOLS: server.tool()(tool)
- xml_revit_mcp/prompts.py:53-53 (helper)Prompt documentation mentioning usage of delete_elements tool- 使用delete_elements()移除不需要的元素
- tests/DeleteElements.py:6-21 (helper)Test/example showing parameters for DeleteElements RPC call (note camel case matching Revit method)data = [ {"elementId": 5943, }, {"elementId": "5913", }, {"elementId": 212831} ] # 构造 JSON-RPC 请求 json_rpc_request = { "jsonrpc": "2.0", "method": "DeleteElements", "params": data, } # 发送更新元素数据 send_tcp_data(json_rpc_request)
- The send_command method in RevitConnection executes the RPC call to Revit for tool methods like 'delete_elements', serving as the core handler logic for all proxy tools# 确保连接 if not self.sock and not self.connect(): raise ConnectionError("无法连接到Revit") try: logger.info(f"发送命令: {command_type}") logger.debug(f"命令参数: {params}") # 导入并创建请求对象 from .rpc import JsonRPCRequest, JsonRPCResponse command = JsonRPCRequest(method=command_type, params=params) command_json = json.dumps(command.__dict__) # 发送命令 self.sock.sendall(command_json.encode('utf-8')) logger.debug("命令已发送,等待响应...") # 使用 receive_full_response 接收完整数据流 response_data = self.receive_full_response() logger.debug(f"已接收 {len(response_data)} 字节数据") # 解析响应 try: response_dict = json.loads(response_data.decode('utf-8')) response = JsonRPCResponse( id=response_dict.get("id"), result=response_dict.get("result"), error=response_dict.get("error") ) except json.JSONDecodeError as e: logger.error(f"无法解析Revit响应: {str(e)}") if response_data: logger.error(f"原始响应 (前200字节): {response_data[:200]}") raise ValueError(f"无效的Revit响应: {str(e)}") # 处理错误 if response.error: error_message = response.error.get("message", "未知错误") error_code = response.error.get("code", -1) error_data = response.error.get("data") logger.error(f"Revit错误 (代码: {error_code}): {error_message}") if error_data: logger.error(f"错误数据: {error_data}") raise Exception(f"Revit错误: {error_message}") return response.result or {}