openscad/doc/TODO.txt

148 lines
5.8 KiB
Plaintext

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
- Make the library search path configurable?
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
- 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.
- 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 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