summaryrefslogtreecommitdiff
path: root/TODO.txt
blob: b61e57b228765b0222deda03a9f3a9694f9100d7 (plain)
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

BUGS
----
o Some invalid DXF data gets pass the import checks and breaks the tessing code
o Broken polyhedron() entities are not correctly detected and cause CGAL segfaults
o Tesselation via GLU sometimes produces strange results
o Non-manifold objects make CGAL crash (e.g. two cubes which touch at one edge)
o Export STL: Exports existing CGAL model even though the current model is changed, but not CGAL rendered

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?
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
o Editor
  - 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
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
  - Add generic 3D->2D projection statements
  - 2D->3D using clipping plane
  - Performance: Is it necessary to union children before extrusion
    when compiling? Can this be postponed to CGAL evaluation time?
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)
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
  - Go through default values of parameters (e.g. cube() has x,y,z=1 while linear_extrude() has height=100)
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:
  - 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

contact: Jan Huwald // Impressum