renderer.cpython-312.pyc•7.96 kB
�
J��gD � �| � d dl Z d dlZd dlZd dlmZmZmZ d dlmZm Z m
Z
ej e� Z
G d� d� Zy)� N)�Dict�Any�Optional)�Image� ImageDraw� ImageFontc � � e Zd ZdZd� Zddedeeeef defd�Z ddedeeeef deeef fd�Z
dd ed
edefd�Zdeeef d edefd
�Zy)�Rendererz�
Handles rendering of OpenSCAD models to preview images.
Implements multi-angle views and fallback rendering when headless mode fails.
c �* � || _ ddddd�| _ y)z�
Initialize the renderer.
Args:
openscad_wrapper: Instance of OpenSCADWrapper for generating previews
z0,0,0,0,0,0,50z0,0,0,90,0,0,50z0,0,0,0,90,0,50z20,20,20,55,0,25,100)�front�top�right�perspectiveN)�openscad_wrapper�
camera_angles)�selfr s �>/home/ubuntu/openscad-mcp-server/src/visualization/renderer.py�__init__zRenderer.__init__ s$ � � !1��� &�$�&�1�
��� N� scad_file�
parameters�returnc �d � | j j ||| j d d�� }t j j |� r$t j j
|� dkD r|S | j |� S # t $ r�}t j dt |� � �� t j j |� j d� d }t j j | j j |� d�� }| j |� cY d}~S d}~ww xY w) a
Generate a preview image for a SCAD file.
Args:
scad_file: Path to the SCAD file
parameters: Optional parameters to override in the SCAD file
Returns:
Path to the generated preview image
r �800,600��camera_position�
image_sizer zError generating preview: �.�.pngN)r �generate_previewr �os�path�exists�getsize�_create_placeholder_image� Exception�logger�error�str�basename�split�join�preview_dir)r r r �preview_file�e�model_ids r r zRenderer.generate_preview s � � @��0�0�A�A��� $� 2� 2�=� A�$� B� �L� �w�w�~�~�l�+�������0M�PQ�0Q�#�#� �5�5�l�C�C��� @��L�L�5�c�!�f�X�>�?��w�w�'�'� �2�8�8��=�a�@�H��7�7�<�<��(=�(=�(I�(I�h�Z�W[�K\�]�L��1�1�,�?�?�� @�s% �A.B �1B � D/�BD*�$D/�*D/c
� � i }t j j |� j d� d }| j j � D ]� \ }}t j j
| j j |� d|� d�� } | j j |||d�� }t j j |� r(t j j |� dkD r|||<