forked from SolidCode/SolidPython
-
Notifications
You must be signed in to change notification settings - Fork 0
/
TODO_SolidPython.txt
80 lines (75 loc) · 3.9 KB
/
TODO_SolidPython.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
-- Add github hash or version number to SolidPython code appended to SCAD code.
-- Add bezier support
-- Add fillet_2d() section to README
-- unit tests for box_align & other rotation methods in utils.py
-- Parent transforms of hole() objects still get put in the positive section
of SCAD code, even if there are no other positive children that need them:
ex:
$fn = 12;
difference() {
union() {
union();
union() {
translate(v = [0, 0, 2.5000000000]) {
cube(center = true, size = [50, 50, 5]);
}
/* NOTE empty transform here */
translate(v = [18.0000000000, 18.0000000000]) {
}
}
}
/* All Holes Below*/
union(){
union(){
translate(v = [18.0000000000, 18.0000000000]){
union() {
translate(v = [0, 0, -0.0050000000]) {
cylinder(h = 5.0100000000, r = 2.5000000000, center = false);
}
}
}
}
}
}
-- Once you've declared something a hole(), you *can't put anything in
it*. This kind of defeats the purpose of most holes in mechanical design.
This feature may need some rethinking.
-- bill_of_materials() entries should be left-justified in their columns.
-- Applescript or other inter-app communication that will recompile in OpenSCAD
whenever requested via your Python code
-- Debugging info? This isn't really present for SCAD, so it's hard from Python.
-- Programmatic way to designate parameters users might want to change
-- Gui for setting parameters - sliders, dropdowns, etc. Well... that's a separate project.
-- Some way to interrogate objects about their shape. bounding_box() for all
openscad objects? With that in place, you could do things like "move piece
A up so its northern edge lines up with object B's northern edge."
-- Some way to split an object into two shapes as if it's been cut. The way
I go about that is to intersect an object with two different shapes, and
then move those results around. It would be nice if this were more
automatic. -ETJ 07 Jul 2012
-- Current practice prevents any re-use of the SCAD code generated. A Python
function called a hundred times will compile to 100 separate lists of SCAD
code, rather than 100 calls to a function, which makes the SCAD code larger
than necessary and harder to read. It would be nice if Python functions
were compiled to SCAD functions somehow. Haven't figured out how to make
this work yet. -ETJ 29 Aug 2012
-- Bounding Box class added to all objects, so they have some sense for how
large they are and can be queried (This probably can't be done, so put it
on hold)
Completed:
-- Include support for OpenSCAD animation. (Hacky, but I'm not sure there's
another way to do it than I did)
-- README needs a table of contents with #hash links
-- More robust screw threads -- lead-in, lead-out, and cross-sectional support
-- Add handling for the #*!% SCAD characters (debug, disable, root, background) -ETJ 15 Feb 2011
-- Improving syntax so it's as close as possible to OpenSCAD's -ETJ 15 Feb 2011
-- By default, let polygon assume that connectivity between specified points (the paths argument) is
in the order specified in the points array. Without this, there's always
boilerplate: polygon(points=arr, paths= range(len(arr)))
-- Add 'segments' arguments to circle(), sphere() and cylinder()? This breaks
with OpenSCAD, but is simpler than circle(10).add_param('$fn', 30)
-- Unit testing.
-- setup.py should include PyPi-required metadata.
-- Add to PyPI so SolidPython can be installed with pip install solidpython
-- Update README with PyEuclid information and PyPI-aware install info
-- Comprehensive docs