Skip to content

Commit

Permalink
Make DXF construction work
Browse files Browse the repository at this point in the history
  • Loading branch information
furbrain committed Jul 24, 2024
1 parent 461e991 commit a3d2b21
Show file tree
Hide file tree
Showing 3 changed files with 36 additions and 7 deletions.
3 changes: 2 additions & 1 deletion .github/workflows/release_bundle.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ jobs:
run: |
sudo add-apt-repository ppa:kicad/kicad-8.0-releases
sudo apt update
sudo apt install -y wget libgl1 texlive-latex-base texlive-latex-extra latexmk kicad
sudo apt install -y wget libgl1 texlive-latex-base texlive-latex-extra latexmk kicad openscad
sudo pip install sphinx==6.1.3 sphinx-rtd-theme==1.2.0
- name: Get freecad from cache
Expand Down Expand Up @@ -44,6 +44,7 @@ jobs:
ls
cd case
~/bin/freecad --appimage-extract-and-run -c export_hardware.py
python3 generate_dxf.py
cd build
zip -r ../../hardware.zip *
- name: export PCB files
Expand Down
21 changes: 15 additions & 6 deletions case/export_hardware.py
Original file line number Diff line number Diff line change
@@ -1,22 +1,31 @@
import os
import TechDraw
import Mesh
import time
import subprocess

FreeCAD.openDocument("bigboy.FCStd")
doc = App.getDocument("bigboy")
time.sleep(3)
stl_parts = ("shim", "cap", "cap with vanes", "mount", "shell", "bezel")
os.makedirs("build/abs/",exist_ok=True)
for part_name in stl_parts:
print(f"Exporting {part_name}")
part = doc.findObjects(Label=f"^{part_name}$")[0]
Mesh.export([part],f"build/abs/{part_name}.stl")
#for part_name in stl_parts:
# print(f"Exporting {part_name}")
# part = doc.findObjects(Label=f"^{part_name}$")[0]
# Mesh.export([part],f"build/abs/{part_name}.stl")

drawings = doc.findObjects("TechDraw::DrawPage")
drawing_stls = []
for drawing in drawings:
os.makedirs(f"build/{drawing.Label}/", exist_ok=True)
for view in drawing.OutList:
if view.TypeId == 'TechDraw::DrawViewPart':
print(f"Exporting {view.Source[0].Label}")
TechDraw.writeDXFView(view,f"build/{drawing.Label}/{view.Source[0].Label}.dxf")
print(f"Exporting {view.Source[0].Label}")
# tech draw does not export DXFs properly from command line - so export as stl and we will post-process with openscad
#TechDraw.writeDXFView(view,f"build/{drawing.Label}/{view.Source[0].Label}.dxf")
fname = f"build/{drawing.Label}/{view.Source[0].Label}.stl"
Mesh.export(view.Source,fname)
drawing_stls.append(fname)

FreeCAD.openDocument("button_mould.FCStd")
doc = App.getDocument("button_mould")
Expand Down
19 changes: 19 additions & 0 deletions case/generate_dxf.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
#!/bin/env python3
import subprocess
import glob
import os

print("Creating DXFs")
dirs = "[acrylic|Rubber]"
cwd = os.path.dirname(os.path.abspath(__file__))
drawing_stls = glob.glob(f"{cwd}/build/{dirs}*/*.stl")
print("fnames: ", drawing_stls)
for fname in drawing_stls:
if "Window" in fname:
rotation = ""
else:
rotation = "rotate(a=[90,0,0])"
command = f'projection() {rotation} import("{fname}");'
output = fname.replace("stl","dxf")
subprocess.run(["openscad","/dev/null","-D",command,"-o",output])

0 comments on commit a3d2b21

Please sign in to comment.