Skip to main content
Glama
quellant

OpenSCAD MCP Server

by quellant
render_dealing_mechanism.py3.44 kB
#!/usr/bin/env python3 """ Specialized renderer for the dealing mechanism with diagnostic views. """ from scad_renderer import ScadRenderer from pathlib import Path import sys def render_dealing_mechanism(): """Render diagnostic views of the dealing mechanism.""" # Find the dealing mechanism SCAD file scad_file = Path(__file__).parent.parent / "dealing_mechanism" / "dealing_mechanism_standalone.scad" if not scad_file.exists(): print(f"Error: SCAD file not found at {scad_file}") sys.exit(1) # Create renderer (will put renders in dealing_mechanism/renders/) renderer = ScadRenderer(str(scad_file)) print(f"Rendering dealing mechanism from: {scad_file}") print(f"Output directory: {renderer.output_dir}") # Define diagnostic views diagnostic_views = [ { 'filename': 'overview_isometric.png', 'camera_pos': (200, 200, 150), 'camera_look_at': (0, 0, 40), 'variables': {'show_ghosts': True, 'show_assembled': True} }, { 'filename': 'exploded_view.png', 'camera_pos': (200, 200, 150), 'camera_look_at': (0, 0, 60), 'variables': {'show_exploded': True, 'show_ghosts': False} }, { 'filename': 'cross_section.png', 'camera_pos': (0, -200, 80), 'camera_look_at': (0, 0, 40), 'variables': {'show_cross_section': True, 'show_ghosts': True} }, { 'filename': 'qr_scanner_alignment.png', 'camera_pos': (0, 0, -150), 'camera_look_at': (0, 0, 30), 'variables': {'show_ghosts': True} }, { 'filename': 'card_chamber_detail.png', 'camera_pos': (150, 150, 100), 'camera_look_at': (0, 0, 60), 'variables': {'show_ghosts': False} }, { 'filename': 'roller_mechanism_detail.png', 'camera_pos': (100, -100, 50), 'camera_look_at': (0, 30, 45), 'variables': {'show_ghosts': True} }, { 'filename': 'bottom_view.png', 'camera_pos': (0, 0, -200), 'camera_look_at': (0, 0, 0), 'camera_up': (0, -1, 0), 'variables': {'show_ghosts': False} }, { 'filename': 'front_view.png', 'camera_pos': (0, -200, 60), 'camera_look_at': (0, 0, 60), 'variables': {'show_ghosts': True} } ] print(f"\nRendering {len(diagnostic_views)} diagnostic views...") rendered = renderer.render_custom_views(diagnostic_views) print(f"\n✓ Rendered {len(rendered)} views successfully") # Also render a turntable animation print("\nRendering turntable animation...") frames = renderer.render_turntable( base_name="turntable", num_frames=12, radius=250, height=120, look_at=(0, 0, 50), variables={'show_ghosts': False} ) if frames: print(f"✓ Rendered {len(frames)} turntable frames") # Try to create GIF renderer.create_animation_gif(frames, "turntable.gif", delay=10) print("\n=== Rendering Complete ===") print(f"All renders saved to: {renderer.output_dir}") return renderer.output_dir if __name__ == "__main__": render_dealing_mechanism()

Latest Blog Posts

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/quellant/openscad-mcp'

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