parameter_extractor.cpython-312.pyc•12.9 kB
�
(��g�3 � �p � d dl Z d dlZd dlmZmZmZmZmZ d dlZ ej e
� Z G d� d� Zy)� N)�Dict�Any�Tuple�List�Optionalc
� � e Zd ZdZd� Zdedeeeeef f fd�Z dedeeef fd�Z
ded eeef dee fd
�Z ddede
e d e
eeef ddfd
�Zdede
e fd�Zdededeeef fd�Zdedefd�Zdededeeef fd�Zdededefd�Zded eeef deeef fd�Zdedee fd�Zdededefd�Zdedede
e fd�Zy)�ParameterExtractorz�
Extract parameters from natural language descriptions.
Implements dialog flow for collecting specifications and translating them to OpenSCAD parameters.
c
�n � dddddddddd� | _ ddd d
dd�| _ d
dddddddd�| _ i | _ y)z#Initialize the parameter extractor.g �?g $@g @�@gffffff9@g�����s@) �mm�cm�m�in�inch�inches�ft�foot�feetz!\b(cube|box|square|rectangular)\bz \b(sphere|ball|round|circular)\bz,\b(cylinder|tube|pipe|rod|circular column)\bz)\b(hollow box|container|case|enclosure)\bzM\b(rounded box|rounded container|rounded case|rounded enclosure|smooth box)\b��cube�sphere�cylinder�box�rounded_boxzE(\d+(?:\.\d+)?)\s*(?:mm|cm|m|in|inch|inches)?\s*(?:wide|width|across)zD(\d+(?:\.\d+)?)\s*(?:mm|cm|m|in|inch|inches)?\s*(?:high|height|tall)zC(\d+(?:\.\d+)?)\s*(?:mm|cm|m|in|inch|inches)?\s*(?:deep|depth|long)z:(\d+(?:\.\d+)?)\s*(?:mm|cm|m|in|inch|inches)?\s*(?:radius)z<(\d+(?:\.\d+)?)\s*(?:mm|cm|m|in|inch|inches)?\s*(?:diameter)zC(\d+(?:\.\d+)?)\s*(?:mm|cm|m|in|inch|inches)?\s*(?:thick|thickness)z (\d+)\s*(?:segments|sides|faces)z\b(centered|center)\b)�width�height�depth�radius�diameter� thickness�segments�centerN)�unit_conversions�shape_patterns�parameter_patterns�dialog_state)�selfs �?/home/ubuntu/openscad-mcp-server/src/nlp/parameter_extractor.py�__init__zParameterExtractor.__init__ ss � � ���������
!
��� 9�9�G�?�k�
��� ^�]�[�S�W�_�;�.� #
��� ��� �description�returnc � � | j |� }| j ||� }| j ||� }t j d|� d|� �� ||fS )a
Extract model type and parameters from a natural language description.
Args:
description: Natural language description of the 3D object
Returns:
Tuple of (model_type, parameters)
zExtracted model type: z, parameters: )�_determine_shape_type�_extract_shape_parameters�_apply_default_parameters�logger�info)r&