CADomatic / main.py
YSMlearnsCode
clean hf integration
41d6e2b
from src.llm_client import prompt_llm
from pathlib import Path
import subprocess
# File paths
prompt_base = Path("prompts/base_instruction.txt")
prompt_examples = Path("prompts/example_code.txt")
GEN_SCRIPT = Path("generated/result_script.py")
RUN_SCRIPT = Path("src/run_freecad.py")
# Snippet to adjust FreeCAD GUI view
GUI_SNIPPET = """
import FreeCADGui
FreeCADGui.activeDocument().activeView().viewAxometric()
FreeCADGui.SendMsgToActiveView("ViewFit")
"""
def main():
# Step 1: Get user input
user_input = input("Describe your FreeCAD part: ")
# Step 2: Build prompt
base_prompt = prompt_base.read_text().strip()
example_prompt = prompt_examples.read_text().strip()
full_prompt = f"{base_prompt}\n\nExamples:\n{example_prompt}\n\nUser instruction: {user_input.strip()}"
# Step 3: Get response from LLM
generated_code = prompt_llm(full_prompt)
# Step 4: Clean up ```python code blocks if any
if generated_code.startswith("```"):
generated_code = generated_code.strip("`\n ")
if generated_code.lower().startswith("python"):
generated_code = generated_code[len("python"):].lstrip()
# Step 5: Append GUI snippet for viewing
generated_code += "\n\n" + GUI_SNIPPET
# Step 6: Save to script file
GEN_SCRIPT.write_text(generated_code)
print(f"\n Code generated and written to {GEN_SCRIPT}")
# Step 7: Execute the script via FreeCAD
print("Running FreeCAD with the generated script...")
try:
subprocess.run(["python", str(RUN_SCRIPT)], check=True)
except subprocess.CalledProcessError as e:
print(f"❌ FreeCAD script execution failed with error code: {e.returncode}")
except Exception as e:
print(f"❌ Error running run_freecad.py: {e}")
if __name__ == "__main__":
main()