1
0
mirror of https://github.com/nophead/Mendel90.git synced 2025-01-16 20:38:15 +01:00
Mendel90/sheets.py
Chris Palmer 6af1338f3f Sheets.py now removes the scad files it generates.
Bodge for race condition on Win7.
Note PDF files have change due to new version of InkScape but should look the same.
2016-01-02 16:09:08 +00:00

74 lines
2.2 KiB
Python
Executable File

#!/usr/bin/env python
import os
import openscad
import InkCL
import shutil
import sys
from dxf import *
from set_machine import *
from time import *
source_dir = "scad"
def sheets(machine):
#
# Make the target directory
#
target_dir = machine + "/sheets"
if os.path.isdir(target_dir):
shutil.rmtree(target_dir)
sleep(0.1)
os.makedirs(target_dir)
else:
os.makedirs(target_dir)
#
# Set the target machine
#
set_machine(machine)
#
# Find all the scad files
#
for filename in os.listdir(source_dir):
if filename[-5:] == ".scad":
#
# find any modules ending in _dxf
#
for line in open(source_dir + "/" + filename, "r").readlines():
words = line.split()
if(len(words) and words[0] == "module"):
module = words[1].split('(')[0]
if module[-4:] == "_dxf":
#
# make a file to use the module
#
dxf_maker_name = target_dir + "/" + module + ".scad"
f = open(dxf_maker_name, "w")
f.write("use <../../%s/%s>\n" % (source_dir, filename))
f.write("%s();\n" % module);
f.close()
#
# Run openscad on the created file
#
base_name = target_dir + "/" + module[:-4]
dxf_name = base_name + ".dxf"
openscad.run("-o", dxf_name, dxf_maker_name)
#
# Make SVG drill template
#
dxf_to_svg(dxf_name)
#
# Make PDF for printing
#
InkCL.run("-f", base_name + ".svg", "-A", base_name + ".pdf")
os.remove(dxf_maker_name)
if __name__ == '__main__':
if len(sys.argv) > 1:
sheets(sys.argv[1])
else:
print("usage: sheets [mendel|sturdy|your_machine]")
sys.exit(1)