# HG changeset patch
# User mdd
# Date 1491346785 -7200
# Node ID ba3d8c56e6f53586529fb275bf3a74806fe259dd
# Parent 39fb313ba27c689f4074f6ced0c1b00aa84e78a5
code cleanup
diff -r 39fb313ba27c -r ba3d8c56e6f5 cylindertransport-web.py
--- a/cylindertransport-web.py Wed Apr 05 00:39:31 2017 +0200
+++ b/cylindertransport-web.py Wed Apr 05 00:59:45 2017 +0200
@@ -1,16 +1,22 @@
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
+"""
+Web CGI script for 3D View
+"""
import cgi, data, json, config
from cylindertransport import CylinderSpacerCalculator
# enable debugging
-import cgitb, sys
-sys.stderr = sys.stdout
+#import sys
+#sys.stderr = sys.stdout
+#import cgitb
#cgitb.enable()
-
def do_action(args):
+ """
+ process some actions (like JSON requests)
+ """
if args["action"].value == "calculate":
cylinders = args.getlist("cylinders[]")
calc = CylinderSpacerCalculator(cylinders)
@@ -22,24 +28,26 @@
else:
print "unknown Action %s" % args["action"].value
-
-
-
-
-
-print("Content-Type: text/html;charset=utf-8")
-print("")
+def run():
+ """
+ Main program, without action displays the html content
+ """
+ print "Content-Type: text/html;charset=utf-8"
+ print ""
-args = cgi.FieldStorage()
-if "action" in args:
- do_action(args)
-else:
- # display the html content
- content = open("stlviewer.html", "r").read()
- cyls = ""
- for cyl in sorted(data.CYLINDER.keys()):
- cyls += "
%s" % (
- cyl, data.CYLINDER[cyl][3], data.CYLINDER[cyl][4]);
- content = content.replace("", cyls)
+ args = cgi.FieldStorage()
+ if "action" in args:
+ do_action(args)
+ else:
+ # display the html content
+ content = open("stlviewer.html", "r").read()
+ cyls = ""
+ for cyl in sorted(data.CYLINDER.keys()):
+ cyls += "%s" % (
+ cyl, data.CYLINDER[cyl][3], data.CYLINDER[cyl][4])
+ content = content.replace("", cyls)
- print content
+ print content
+
+if __name__ == "__main__":
+ run()
diff -r 39fb313ba27c -r ba3d8c56e6f5 cylindertransport.py
--- a/cylindertransport.py Wed Apr 05 00:39:31 2017 +0200
+++ b/cylindertransport.py Wed Apr 05 00:59:45 2017 +0200
@@ -58,7 +58,7 @@
print "// Abort: no suitable pipe found"
sys.exit(1)
- def _circle(self, posx, radius, data, cylinder = ""):
+ def _circle(self, posx, radius, data, cylinder=""):
"""
Push the circle definition for later rendering
"""
@@ -92,7 +92,7 @@
r_2 = CYLINDER[self.cylinders[i+1]][0] / 2
r_1, r_2, r_3, data = self.calc_min(r_1, r_2)
# draw cylinder
- self._circle(posx, r_1,
+ self._circle(posx, r_1, \
CYLINDER[self.cylinders[i]], self.cylinders[i])
self.scad["cylinder"] += "tank(%f, %f, %f);\n" % (
posx * SCALE3D, r_1 * SCALE3D,
@@ -108,7 +108,7 @@
sx2 = posx - r_3
if i == (len(self.cylinders) - 2):
# draw last bottle
- self._circle(posx, r_3,
+ self._circle(posx, r_3, \
CYLINDER[self.cylinders[i + 1]], self.cylinders[i + 1])
self.scad["cylinder"] += "tank(%f, %f, %f);\n" % (
posx * SCALE3D, r_3 * SCALE3D,
@@ -194,11 +194,12 @@
img = worker.render_image()
img.show()
- if (options.scad != ""):
+ if options.scad != "":
with open(options.scad, "w") as fd:
fd.write(worker.scad["tmpl"])
+ # center the object
fd.write("translate([%f,0,0]) {\n" % (
- ((worker.width - 2 * worker.margin) / -2) * SCALE3D)) # center the object
+ ((worker.width - 2 * worker.margin) / -2) * SCALE3D))
fd.write(worker.scad["cylinder"])
fd.write(worker.scad["spacer"])
fd.write("}\n")
diff -r 39fb313ba27c -r ba3d8c56e6f5 stl.py
--- a/stl.py Wed Apr 05 00:39:31 2017 +0200
+++ b/stl.py Wed Apr 05 00:59:45 2017 +0200
@@ -1,5 +1,9 @@
-import data, os, config, subprocess
-import vtk
+"""
+STL related helpers
+"""
+
+import os, subprocess, vtk
+import config, data
OPENSCAD_MODULES = """
module tank(x, r, h) {
@@ -29,6 +33,9 @@
"""
def run_openscad(output):
+ """
+ Run openSCAD process, then convert the ascii stl to binary by using vtk
+ """
if os.path.isfile(output):
print "skipping existing file %s" % output
return
@@ -47,9 +54,14 @@
write.SetFileTypeToBinary()
write.SetInput(reader.GetOutput())
write.SetFileName(output)
- write.Write()
+ write.Write()
def precompile_all_stl():
+ """
+ Write .scad temp file and
+ Invoke run_openscad for each object
+ that needs to be created in stl directory
+ """
base = os.path.abspath('stl')
hmin = 9999
rmax = 0
@@ -59,7 +71,7 @@
fn.write("tank(0, %f, %f);" % (
data.CYLINDER[cyl][0] / 2 * config.SCALE3D,
data.CYLINDER[cyl][1] * config.SCALE3D))
- run_openscad(os.path.join(base,
+ run_openscad(os.path.join(base, \
'cylinder_' + cyl + '.stl'))
if data.CYLINDER[cyl][1] < hmin:
hmin = data.CYLINDER[cyl][1]
@@ -73,6 +85,6 @@
pipe[1] / 2 * config.SCALE3D,
rmax / 2 * config.SCALE3D,
hmin * config.SCALE3D))
- run_openscad(os.path.join(base,
+ run_openscad(os.path.join(base, \
'spacer_' + pipe[0] + '.stl'))
diff -r 39fb313ba27c -r ba3d8c56e6f5 stlviewer.html
--- a/stlviewer.html Wed Apr 05 00:39:31 2017 +0200
+++ b/stlviewer.html Wed Apr 05 00:59:45 2017 +0200
@@ -60,7 +60,7 @@
init();
animate();
-
+