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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
|
BUGS
----
o Some invalid DXF data gets pass the import checks and breaks the tessing code
o Tesselation via GLU sometimes produces strange results
o Non-manifold objects make CGAL crash (e.g. two cubes which touch at one edge)
CRASH BUGS
----------
o Broken polyhedron() entities are not correctly detected and cause CGAL segfaults
o Export STL: Exports existing CGAL model even though the current model is changed, but not CGAL rendered
o Negative array indices causes crash: v=[0,1,2]; a=v[-1];
USER INTERFACE
--------------
o Preferences
- Beautify color schemes
- Color schemes read from file
- Color scheme editor
- wireframe width
- pointsize
- OpenGL params
- Default language feature settings
- Auto-view CSG/thrown together on load
o Export etc.: automatically add missing extension as in SaveAs
o MDI
- Think about how to do MDI the right way
- Ctrl-W should close the current dialog, not the current main window
-> implement as for Preferences?
- Menu bar handling:
Mac: share menubar among all top-level windows?
- currentPath is global but is used by each document, e.g. parser
and handle_dep.
o 3D View
- Improve mouse rotation
- Add modifier key combos to handle pan on 1 mouse button systems
- Show grid
- 4 x split view w/orthogonal cameras?
- Quick highlighting of object under the cursor in the editor
- View All
- overlay indicator displaying current view mode
- CSG rendering: prefer holes when coincident surfaces to avoid zbuffer fighting?
o Editor
- line numbers
- tear-off/maximize options?
- Save somehow uses current dir, even if the file is already saved earlier
- Autocompletion/hints for builtin (and user-defined) functions/modules
- builtin quick function reference/help
- Drawer/popup with all modules/functions listed which can be inserted into
the editor by clicking or drag&drop -> icons in toolbar?
-> This would be moving in the direction of a traditional CAD GUI
and needs a fair bit of thinking.
- More infrastructur for external editor (or is the reload good enough?)
- Evaluate QCodeEdit (http://qcodeedit.edyuk.org)
- Display some kind of line wrap indicator
- Couple the source code to the AST to allow highlighting selected elements
in the source code in the 3D view
- Tabbed editor for designs including other files
- modifier flag is broken
- C-c/C-v should work on the focused widget, not always in the editor
o Computation
- Run CGAL rendering in a backgroud thread
- Progress
- Move progress bar to status bar (as in Eclipse)
- Enable viewing/editing while rendering
o Misc
- Reload and compile: Ask for confirmation if file is locally edited
(make this configurable in preferences?)
- Save: Ask for confirmation if file has been externaly changed
- Rename OpenCSG and CGAL to smth. not specific to the underlying libraries
(e.g Preview, Render)
ENGINE
------
o Primitives
- Springs, spirals (requested by Cathal Garvey)
- (TTF) Text
o 2D Subsystem
- Performance: Is it necessary to union children before extrusion
when compiling? Can this be postponed to CGAL evaluation time?
- Add inset() operation
o Built-in modules
- extrude*: Allow the base 2D primitive to have a Z value
o Advanced Transformations
- Add statement for 2D and 3D minkowski sum
- Add statement for refinement via surface subdivision
- Add statement for intersections in cartesian product of childs
o Function-Module-Interface
- Pass a module instanciation to a function (e.g. for a volume() function)
- Pass a function to a module instanciation (e.g. for dynamic extrusion paths)
o Language Frontend
- Allow local variables and functions everywhere (not only on module level)
- Add "use" statement to load modules. Like include but read a module only once,
ignore all top level objects (they are used as module testcase) and search in
a module search path.
- Add a default search path for included files to allow bundling libs
- allow 0/1 f/t FALSE/TRUE as boolean values
o DXF Import
- Support for POLYLINE entity
- Support for SPLINE entity
- Support for LEADER entity
- Support for MTEXT entity ?
- idea: DXF inline - convert from dxf to OpenSCAD syntax -> parametrize dxf content
o Mesh optimization on STL export
- Remove super small triangles (all sides are short)
- Replace super thin triangles (one h is short)
o Misc
- Add symbolic colors to the color() statement
- When specifying a transparency with the color() statement,
the object is not sorted and will be rendered wrongly
- Go through default values of parameters (e.g. cube() has x,y,z=1 while linear_extrude() has height=100)
- Add support for symbolic names to child() statement
- Add 'lines' object type for non-solid 2d drawings
o Grammar
- dim->name -> dim->label
- A random(seed) function
- import_*() -> *_import() (consistent prefix vs. postfix)
- linear_extrude()/rotate_extrude(): Cumbersome names? -> (extrude, revolve, lathe, sweep ?)
CODE
----
o Refactor from MainWindow:
- Put all application-global data in one place (QApplication subtype?)
- Fix current_win hack
- CSG data structure (compiled model)
- CGAL data structure (compiled model)
o C++-ify
- Use smart pointers where it makes sense (e.g. instead of homegrown refcount,
and to get memory ownership under control)
- Use static_cast instead of C-style casts
o dxflinextrude and dxfrotextrude could share code
o Consider decoupling DXF-specific functionality from the 2D subsystem
o Make the interfaces from OpenSCAD and OpenCSG and CGAL cleaner to facilitate
experimentation with other frameworks (ref. Nef_polyhedron_2() problems)
INFRASTRUCTURE
--------------
o Think about making external libraries easier available. Probably mostly convenience.
o Use a logging framework to get debugging/info output more under control?
(check log4j, google project)
MISC
----
o Collect "all" available OpenSCAD scripts from the internets and batch convert them
to STL to assist with robustness testing.
o Mac OS X:
- universal binary -> fix cgal and opencsg
|