Skip to main content
Glama

OpenSCAD MCP Server

by jhacksman
primitive_tester.cpython-312.pyc6.5 kB
� ��g����ddlZddlZddlmZmZmZmZmZddlm Z ddl m Z eje �ZGd�d�Zy)�N)�Dict�Any�List�Optional�Tuple)�OpenSCADCodeGenerator)� CADExporterc��eZdZdZ ddededefd�Zdeeeee fffd�Z dedeee ffd �Z dedeee ffd �Z dedeee ffd �Z dedeeeee fffd �Zy )�PrimitiveTesterz8Tests OpenSCAD primitives with different export formats.�code_generator� cad_exporter� output_dirc��||_||_||_tj|d��gd�|_gd�|_y)a Initialize the primitive tester. Args: code_generator: CodeGenerator instance for generating OpenSCAD code cad_exporter: CADExporter instance for exporting models output_dir: Directory to store test output T)�exist_ok)�cube�sphere�cylinder�cone�torus� rounded_box�hexagonal_prism�text)�3mf�amf�csg�scadN)r r r�os�makedirs� primitives�formats)�selfr r rs �C/home/ubuntu/openscad-mcp-server-v2/src/testing/primitive_tester.py�__init__zPrimitiveTester.__init__ s=��-���(���$��� � � �J��.� ��� 5�� ��returnc�T�i}|jD]}|j|�||<�|S)z� Test all primitives with all formats. Returns: Dictionary of test results for each primitive )r�test_primitive)r!�results� primitives r"�test_all_primitivesz#PrimitiveTester.test_all_primitives's3�������I�!%�!4�!4�Y�!?�G�I� �)��r$�primitive_typec���|id�}|j|�}|jj||�}|jD]3}|jj |||d|i��\}}}|||d�|d|<�5|S)z� Test a single primitive with all formats. Args: primitive_type: Type of primitive to test Returns: Dictionary of test results for the primitive )r)r r+��metadata��success� output_file�errorr )�_get_default_parametersr � generate_coder r � export_model) r!r+r(�params� scad_file� format_typer0r1r2s r"r'zPrimitiveTester.test_primitive5s���(�� �� �-�-�n�=���'�'�5�5�n�f�M� � �<�<�K�*.�*;�*;�*H�*H����*�N�;� +I�+� '�G�[�%�#�*��/�G�I� �{� +�(��r$c���i}|dk(r ddddd�}|S|dk(rddd�}|S|d k(r ddddd �}|S|d k(r dd ddd �}|S|dk(rdddd�}|S|dk(r ddddd�}|S|dk(rddd�}|S|dk(rdddd�}|S)z� Get default parameters for a primitive type. Args: primitive_type: Type of primitive Returns: Dictionary of default parameters r�T��width�depth�height�centerr� � ��radius�segmentsr�rCr>r?rDrr)� bottom_radius� top_radiusr>r?r�)� outer_radius� inner_radiusrDr���)r<r=r>rCr)rCr>r�OpenSCAD)r�sizer>�)r!r+r6s r"r3z'PrimitiveTester._get_default_parameters[s����� �V� #�!�B�"��M�F� � ��x� '� "��3�F�� ��z� )� "�b�D�b�Q�F�� ��v� %�')��b�TX�Y�F�� ��w� &�&(�!��L�F�� ��}� ,�!�B�"��J�F� � � �0� 0� "�b�1�F�� ��v� %�(�"��B�F�� r$c �4�|id�}|j|�}|j�D]n\}}|jj||�}i}|jD]1}|j j |||||d���\} } } | | | d�||<�3||d�|d|<�p|S)z� Test a primitive with variations of parameters. Args: primitive_type: Type of primitive to test Returns: Dictionary of test results for different parameter variations )r)� variations)r+� variationr-r/)� parametersr rR)�_get_parameter_variations�itemsr r4r r r5) r!r+r(rR�variation_namer6r7�format_resultsr8r0r1r2s r"�test_with_parameter_variationsz.PrimitiveTester.test_with_parameter_variationszs���(�� �� �3�3�N�C� �'1�&6�&6�&8� "�N�F��+�+�9�9�.�&�Q�I� �N�#�|�|� �.2�.?�.?�.L�.L����0>�^�\� /M�/�+���e� '�#.�"�/��{�+� ,�%�)�5�G�L� !�.� 1�)'9�2�r$c���i}|dk(rddddd�ddddd�ddddd�ddddd�d �}|S|d k(rdd d �d dd �ddd �ddd �d�}|S|dk(rdddd d�d dddd�ddddd�d dddd�d�}|S)z� Get parameter variations for a primitive type. Args: primitive_type: Type of primitive Returns: Dictionary of parameter variations rrHTr;�2�r@�d)�small�large�flat�tallr�rBrK�@��)r^r_�low_res�high_resrrE�rA)r^r_�thin�discrP)r!r+rRs r"rUz)PrimitiveTester._get_parameter_variations�s���� � �V� #�#$�q�A��N�#%��b�D�Q�"$�r�Q�$�O�"$�r�S�D�Q� �J�,��!�x� '�$%�2�6�$&�B�7�&(�a�8�')�s�;� �J����z� )�$%��d�PR�S�$&�"��RT�U�#$��d�PR�S�#%��d�PR�S� �J��r$N)� test_output)�__name__� __module__� __qualname__�__doc__rr �strr#rrr*r'r3rYrUrPr$r"r r s���B�#0�5�'<�5�K�5��5�4 �T�#�t�C��H�~�*=�%>� �$�S�$�T�#�s�(�^�$�L�c��d�3��8�n��>,�S�,�T�#�s�(�^�,�\#��#��S�$�s�TW�x�.�EX�@Y�#r$r )r�logging�typingrrrrr�src.models.code_generatorr�src.utils.cad_exporterr � getLoggerrl�loggerr rPr$r"�<module>rws5�� ��3�3�;�.� �� � �8� $��A�Ar$

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/jhacksman/OpenSCAD-MCP-Server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server