wrapper.cpython-312.pyc•15.1 kB
�
��g�, � �x � d dl Z d dlZd dlZd dlZd dlmZmZmZmZm Z ej e� Z G d� d� Z
y)� N)�Dict�Any�List�Tuple�Optionalc �H � e Zd ZdZdedefd�Zdedeeef defd�Zd edeeef defd
�Z ddede
eeef defd
�Z ddede
eeef dededef
d�Zdedefd�Z
deeef defd�Zdeeef defd�Zdeeef defd�Zdeeef defd�Zdeeef defd�Zy)�OpenSCADWrapperz�
Wrapper for OpenSCAD command-line interface.
Provides methods to generate SCAD code, STL files, and preview images.
�scad_dir�
output_dirc �� � || _ || _ t j j |d� | _ t j j |d� | _ t j | j d�� t j | j
d�� t j | j d�� | j | j | j | j | j d�| _
y)z�
Initialize the OpenSCAD wrapper.
Args:
scad_dir: Directory to store SCAD files
output_dir: Directory to store output files (STL, PNG)
�stl�previewT)�exist_ok)�cube�sphere�cylinder�box�rounded_boxN)r
r �os�path�join�stl_dir�preview_dir�makedirs�_cube_template�_sphere_template�_cylinder_template�
_box_template�_rounded_box_template�shape_templates)�selfr
r s �@/home/ubuntu/openscad-mcp-server/src/openscad_wrapper/wrapper.py�__init__zOpenSCADWrapper.__init__ s� � � !��
�$����w�w�|�|�J��6����7�7�<�<�
�I�>��� ���D�M�M�D�1�
���D�L�L�4�0�
���D�$�$�t�4� �'�'��+�+��/�/��%�%��5�5�
��� �
model_type�
parameters�returnc � � t t j � � }t j j | j |� d�� }| j j |� }|st d|� �� � ||� }t |d� 5 }|j |� ddd� t j d|� �� |S # 1 sw Y �#xY w)a@
Generate OpenSCAD code for a given model type and parameters.
Args:
model_type: Type of model to generate (cube, sphere, cylinder, etc.)
parameters: Dictionary of parameters for the model
Returns:
Path to the generated SCAD file
�.scadzUnsupported model type: �wNzGenerated SCAD file: )�str�uuid�uuid4r r r r
r �get�
ValueError�open�write�logger�info)r! r% r&