Fixed compilation issues

This commit is contained in:
Tomáš Batelka 2025-06-02 15:04:11 +02:00
parent ebadedc7da
commit c9a0142a1a
4 changed files with 62 additions and 3 deletions

View file

@ -0,0 +1,59 @@
#!/usr/bin/freecadcmd
import os
import shutil
import subprocess
import FreeCAD as App # type: ignore
import Mesh # type: ignore
project_root = os.path.abspath(
os.path.join(os.path.dirname(os.path.realpath(__file__)), os.pardir)
)
printed_cad_dir = os.path.join(project_root, "printed")
printed_out_dir = os.path.join(project_root, "step")
if os.path.exists(printed_out_dir):
shutil.rmtree(printed_out_dir, ignore_errors=True)
os.makedirs(printed_out_dir, exist_ok=True)
failed_files = []
for root, dirs, files in os.walk(printed_cad_dir):
for file in files:
if file.endswith(".FCStd"):
file_path = os.path.join(root, file)
App.Console.PrintMessage(f"\nProcessing {file_path}\n")
doc = App.openDocument(file_path)
App.setActiveDocument(doc.Name)
App.ActiveDocument.recompute()
for obj in doc.Objects:
if obj.TypeId == "App::Part":
output_path = os.path.join(
printed_out_dir,
os.path.relpath(root, printed_cad_dir),
f"{obj.Label}.step",
)
os.makedirs(os.path.dirname(output_path), exist_ok=True)
try:
obj.Shape.exportStep(output_path)
App.Console.PrintMessage(
f"Exported {obj.Label} to {output_path}\n"
)
except Exception as e:
App.Console.PrintError(f"Error exporting {obj.Label}: {e}\n")
failed_files.append(file_path)
App.closeDocument(doc.Name)
if failed_files:
App.Console.PrintError("\nThe following files failed to export:\n")
for file in failed_files:
App.Console.PrintError(f" - {file}\n")
else:
App.Console.PrintMessage("\nAll files have been exported successfully.\n")

Binary file not shown.

View file

@ -9,7 +9,7 @@ Můj návrh tiskárny vychází z~projektu x-scara~\cite{x-scara}. Ve svém náv
Model je rozdělen do tří dílčích částí. První je základna, druhou skříň s~elektronikou, třetí je rameno a~čtvrtou je nástroj -- tisková hlava.
Soubory ve formátu FCStd (zdrojové soubory modelů) jsou organizovány podle části, do které spadají. Pro generování tiskových souborů ve formátu 3MF (3D Manufacturing Format) vhodného pro slicer slouží python skript, který využívá FreeCAD API. Tento skript postupně otevře, přepočítá a~exportuje všechny díly. Skript exportuje pouze ty objekty, které jsou obsažené v~kontejneru Std Part. Jako název souboru se volí název dílu, který obsahuje i~počet výtisků konkrétního dílu. K~výrobě tištěných dílů pak postačí adresář 3mf a~soubory, které obsahuje.
Soubory ve formátu FCStd (zdrojové soubory modelů) jsou organizovány podle části, do které spadají. Pro generování souborů ve formátu STEP vhodného pro slicer slouží python skript, který využívá FreeCAD API. Tento skript postupně otevře, přepočítá a~exportuje všechny díly. Skript exportuje pouze ty objekty, které jsou obsažené v~kontejneru Std Part. Jako název souboru se volí název dílu, který obsahuje i~počet výtisků konkrétního dílu. K~výrobě tištěných dílů pak postačí adresář 3mf a~soubory, které obsahuje.
\subsection{Základna}
Základna je složena ze hliníkových profilů 20x20mm a~20x40mm. Na základnu je upevněno rameno, které se díky lineárně valivým ložiskům pohybuje po třech vodících tyčích o~průměru 8mm. v~horní části základny je upevněn krokový motor, který pomocí trapézové tyče o~průměru 8mm pohybuje ramenem v~ose Z. Druhá strana trapézové tyče je uložena v~ložisku ve spodní části základny.

View file

@ -1,6 +1,6 @@
\chapter{Skripty}
\section{Skript pro generování 3MF souborů pro slicování}
\label{appendix:generate_3mf_files}
\label{appendix:generate_step_files}
\inputminted[linenos=true,fontsize=\small]{python}{../scripts/generate_3mf_files.py}
\inputminted[linenos=true,fontsize=\small]{python}{../prilohy/generate_step_files.py}