�
�Xi9S � � � d Z ddlmZmZ ddlmZ ddlmZmZm Z m
Z
mZmZm
Z
mZmZmZmZmZmZmZmZmZmZmZmZ ddlmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0 ed� � Z1e1�2 � � dFd
e3de4dee4e4e4f d
e3fd�� � Z5e1�2 � � dGd
e3de6de6de4de7de7de3dee4e4e4f dee4e4e4f dee4e4e4f d
e3fd�� � Z8e1�2 � � d
e3dee4e4e4f d
e3fd�� � Z9e1�2 � � d
e3fd �� � Z:e1�2 � � d
e3d
e3fd!�� � Z;e1�2 � � d
e3d
e3fd"�� � Z<e1�2 � � dHd
e3d$ee4e4e4f d
e3fd%�� � Z=e1�2 � � d&e3d'e3d
e3fd(�� � Z>e1�2 � � d
e3dee4e4e4f d
e3fd)�� � Z?e1�2 � � d
e3dee4e4e4f d
e3fd*�� � Z@e1�2 � � d
e3d
e3fd+�� � ZAe1�2 � � dId
e3dee4e4e4f dee4e4e4f d
e3fd-�� � ZBe1�2 � � dJd
e3d0e3dee4e4e4f d1e4d
e3f
d2�� � ZCe1�2 � � dKd5e3d6e6d7e6d
e3fd8�� � ZDe1�2 � � d
e3fd9�� � ZEe1�2 � � dLd
e3d;e3deee4e4e4f d
e3fd<�� � ZFe1�2 � � d=e3d
e3fd>�� � ZGe1�2 � � dMd
e3de4d?e4dee4e4e4f d@e6d
e3fdA�� � ZHe1�2 � � dFd
e3de4dee4e4e4f d
e3fdB�� � ZIe1�2 � � d
e3fdC�� � ZJe1�2 � � d5e3d
e3fdD�� � ZKe1�2 � � d5e3d
e3fdE�� � ZLd:S )Nz+MCP tools - thin wrappers around operations� )�Tuple�Optional)�FastMCP� )�CreateCubeInput�CreateSphereInput�MoveObjectInput�DeleteObjectInput�SelectObjectInput�CreateMaterialInput�AssignMaterialInput�RotateObjectInput�ScaleObjectInput�GetObjectInfoInput�CreateCameraInput�CreateLightInput�RenderSceneInput�CreateCylinderInput�CreatePlaneInput�DuplicateObjectInput�SetActiveCameraInput�
SaveFileInput�
OpenFileInput)�create_cube�
create_sphere�move_object�list_objects�
delete_object�
select_object�create_material�assign_material�
rotate_object�scale_object�get_object_info�
create_camera�create_light�render_scene�clear_scene�duplicate_object�set_active_camera�create_cylinder�create_plane�get_scene_filepath� save_file� open_file�blender_server� @�� r3 r3 �name�size�location�returnc � � K � t | ||�� � }t |� � S # t $ r}dt |� � � �cY d}~S d}~ww xY w)a=
Create a cube primitive in the Blender scene.
This is useful for building basic 3D structures. Cubes are fundamental
building blocks in 3D modeling.
Args:
name: Name for the cube object (1-63 characters, no special chars)
size: Edge length of the cube (default: 2.0, must be > 0.001 and <= 1000.0)
location: Location in 3D space [x, y, z] (default: [0, 0, 0])
Returns:
Success message with cube details
Example:
Create a cube named "Table" with size 2.0 at position (0, 0, 1)
�r4 r5 r6 �Error: N)r r � Exception�str�r4 r5 r6 �input_model�es �\/Users/gajanmohanraj/Documents/afterquery/candidate-1767282743/blender_takehome/src/tools.py�create_cube_toolrA 7 so � � � �."�%�4�d�X�N�N�N���;�'�'�'��� "� "� "�!��Q���!�!�!�!�!�!�!�!�����"���� � % �
A�A� A�A� � � �?TF�WORLD�rE rE rE �segments�
ring_count�radius�calc_uvs�enter_editmode�align�rotation�scalec
� � K � t | ||||||||| ��
�
}
t |
� � S # t $ r}dt |� � � �cY d}~S d}~ww xY w)a�
Create a UV sphere primitive in the Blender scene.
Creates a spherical mesh with quad faces, except for triangle faces at the top and bottom.
Spheres are useful for creating round objects like balls, planets, or decorative elements.
Args:
name: Name for the sphere object (1-63 characters)
segments: Number of vertical segments (default: 32, range: 3-100000)
ring_count: Number of horizontal rings (default: 16, range: 3-100000)
radius: Radius of the sphere (default: 1.0, range: >= 0.0 and <= 1000.0)
calc_uvs: Generate a default UV map (default: True)
enter_editmode: Enter edit mode when adding (default: False)
align: Alignment mode - 'WORLD', 'VIEW', or 'CURSOR' (default: 'WORLD')
location: Location in 3D space [x, y, z] (default: [0, 0, 0])
rotation: Rotation in Euler angles [x, y, z] in radians (default: [0, 0, 0])
scale: Scale factors [x, y, z] (default: [1, 1, 1] for uniform scaling)
Returns:
Success message with sphere details
Example:
Create a sphere named "Ball" with radius 0.5, 32 segments, 16 rings at position (1, 2, 3)
)
r4 rH rI rJ rK rL rM r6 rN rO r: N)r r r; r<