2010-01-07 21:35:37 +03:00
2009-12-13 03:33:26 +03:00
BUGS
----
2009-12-16 12:19:54 +03:00
o Some invalid DXF data gets pass the import checks and breaks the tessing code
2010-01-07 21:35:37 +03:00
o Tesselation via GLU sometimes produces strange results
2010-02-10 19:43:43 +03:00
o Export STL: Exports existing CGAL model even though the current model is changed, but not CGAL rendered
2011-01-09 19:08:23 +03:00
o It's now possible to start a new rendering while one is already running (which call processEvents())
2010-03-14 07:16:26 +03:00
-> turn off most (or all) interaction while rendering
2011-01-09 19:08:23 +03:00
-> Lock all or only one MainWindow (MDI)?
2010-04-07 14:05:13 +04:00
o Look into the polygon winding and rotate_extrude() problem reported by Britton
2011-05-19 13:47:24 +04:00
o CGAL Aff_transformation_3 doesn't support non-affine transformations (non-aff-matrix.scad)
2009-12-13 03:33:26 +03:00
2010-06-27 05:34:25 +04:00
STL Import BUGS
---------------
Using STL-imported models is tricky and triggers multiple issues:
(these all fail with the usual "Illegal polygonal object" error)
1) null-faces causes F6 rendering to fail while F5 rendering succeeds.
(null-faces are exported by OpenSCAD). Example: adns2610_dev_circuit_inv.stl
by Andrew Plumb
2) Even very simple imported STL models don't render correctly with F5 when taking
a difference(), though F6 looks correct. Example: test_cube.stl by Andrew Plumb
with this scad file:
difference() {
import_stl("test_cube.stl");
translate([2,2,2]) cylinder(h=10);
}
3) More complex STL models with something simple unioned or subtracted fails rendering
using F6 even though F5 works. Example: adns2610_dev_circuit_inv.stl
by Andrew Plumb with the three null-faces removed by MeshLab with this scad file:
union() {
import_stl("adns2610_dev_circuit_inv_4.stl");
sphere(r=5);
}
4) More complex STL models cannot be projected (both F5 and F6).
Example: adns2610_dev_circuit_inv.stl by Andrew Plumb with the three
null-faces removed by MeshLab and this scad file:
projection(cut=true) {
import_stl("adns2610_dev_circuit_inv.stl");
}
2010-02-10 02:55:44 +03:00
CRASH BUGS
----------
o Broken polyhedron() entities are not correctly detected and cause CGAL segfaults
2010-03-14 07:16:26 +03:00
o linear_extrude(50) square([5,0]);
2010-03-31 03:55:23 +04:00
o union() {
linear_extrude(height=10, twist=90) circle(5);
translate([7,-5,0]) linear_extrude(height=10, twist=180) polygon(points = [[0,0], [10,0], [5,10]]);
}
2010-05-27 14:28:41 +04:00
o non-convex minkowski example from chrysn fails with an exception
2010-02-10 02:55:44 +03:00
2010-01-07 00:35:31 +03:00
USER INTERFACE
2009-12-16 12:19:54 +03:00
--------------
2009-12-13 03:33:26 +03:00
o Preferences
2010-01-22 15:28:30 +03:00
- Beautify color schemes
- Color schemes read from file
- Color scheme editor
2010-01-15 02:16:08 +03:00
- wireframe width
- pointsize
2009-12-13 03:33:26 +03:00
- OpenGL params
- Default language feature settings
2010-02-10 18:13:12 +03:00
- Make the library search path configurable?
2010-01-07 00:35:31 +03:00
o Export etc.: automatically add missing extension as in SaveAs
2009-12-13 03:33:26 +03:00
o MDI
- Think about how to do MDI the right way
2010-01-15 21:36:28 +03:00
- Ctrl-W should close the current dialog, not the current main window
2010-01-22 18:18:35 +03:00
-> implement as for Preferences?
- Menu bar handling:
2010-01-26 00:39:34 +03:00
Mac: share menubar among all top-level windows?
2010-02-01 06:11:48 +03:00
- currentPath is global but is used by each document, e.g. parser
and handle_dep.
2010-01-07 00:35:31 +03:00
o 3D View
2010-04-23 03:24:07 +04:00
- OpenGL 2.0 test: What, exactly, is needed from OpenGL 2.0? Can we use 1.x with extensions?
2009-12-14 01:51:02 +03:00
- Improve mouse rotation
2010-05-07 20:24:26 +04:00
- Add modifier key combos to handle pan and zoom on 1 mouse button systems
2010-01-07 00:35:31 +03:00
- Show grid
2011-04-06 17:16:06 +04:00
- Measurement ticks on the axes that look like rulers that one can turn off and on.
2010-01-07 00:35:31 +03:00
- 4 x split view w/orthogonal cameras?
2010-01-14 14:14:31 +03:00
- Quick highlighting of object under the cursor in the editor
2010-01-21 22:15:41 +03:00
- View All
2011-04-06 17:16:06 +04:00
- Allow specifying viewpoint in the scad file
2010-01-22 15:28:30 +03:00
- overlay indicator displaying current view mode
2010-02-10 19:43:43 +03:00
- OpenCSG rendering: Coincident surfaces causes z-buffer fighting. Is this somehow
avoidable tuning the depth tests in OpenCSG?
2011-04-06 17:16:06 +04:00
- Use OpenGL picking to facilitate ray-tracing like features like measuring
thicknesses, distances, slot thicknesses etc.
2010-04-03 20:29:35 +04:00
o Editor wishlist
- More infrastructure for external editor (allow communication from the outside)
- Preferences GUI for the features below
2010-02-01 03:26:52 +03:00
- line numbers
- tear-off/maximize options?
- Save somehow uses current dir, even if the file is already saved earlier
2010-04-03 20:29:35 +04:00
- Code completion/hints for builtin (and user-defined) functions/modules
2010-01-14 14:14:31 +03:00
- builtin quick function reference/help
2010-01-22 15:28:30 +03:00
- 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.
- 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
2010-02-01 03:26:52 +03:00
- Tabbed editor for designs including other files
2010-02-09 16:44:19 +03:00
- C-c/C-v should work on the focused widget, not always in the editor
2011-04-18 15:07:54 +04:00
o Error reporting/debugging
- Provide better error messages when polygon ordering causes CGAL errors:
o Supply syntax highlighting of the exact polygon indices which are
reported to be wrong
o Provide some interaction for debug walk-through?
- Provide visual highlighting of geometry corresponding to code
-> could aid debugging a lot
2010-02-01 03:26:52 +03:00
o Computation
2011-04-12 22:43:57 +04:00
- Run CGAL rendering in a background thread
2010-02-01 03:26:52 +03:00
- Enable viewing/editing while rendering
2010-03-14 07:16:26 +03:00
- Progress: Call progresswidget more often to avoid app hanging for multiple
seconds (i.e. make cancel button more responsive)
2010-01-11 20:23:29 +03:00
o Misc
- Reload and compile: Ask for confirmation if file is locally edited
(make this configurable in preferences?)
2010-02-10 18:26:15 +03:00
- Save: Ask for confirmation if file has been externally changed
2010-01-22 15:28:30 +03:00
- Rename OpenCSG and CGAL to smth. not specific to the underlying libraries
(e.g Preview, Render)
2011-08-06 01:13:40 +04:00
o Cmd-line
- Add verbose option (PRINT command from mainwin.cc and progress output)
2010-01-07 00:35:31 +03:00
2009-12-16 12:19:54 +03:00
ENGINE
------
2010-01-21 22:15:41 +03:00
o Primitives
- Springs, spirals (requested by Cathal Garvey)
2010-01-24 23:06:30 +03:00
- (TTF) Text
2010-03-31 03:55:23 +04:00
- Image-based height field like http://www.thingiverse.com/thing:2078
2010-06-14 21:52:28 +04:00
- mesh (coordinates and indices)
2010-02-01 03:26:52 +03:00
o 2D Subsystem
- Performance: Is it necessary to union children before extrusion
when compiling? Can this be postponed to CGAL evaluation time?
2010-02-09 16:44:19 +03:00
- Add inset() operation
2010-01-22 18:51:32 +03:00
o Built-in modules
- extrude*: Allow the base 2D primitive to have a Z value
2010-03-31 03:55:23 +04:00
- rotate_extrude(): Allow for specification of start/stop/sweep angle?
2010-06-14 21:52:28 +04:00
- Convex hull of multiple 2D or 2D objects
2009-12-16 12:19:54 +03:00
o Advanced Transformations
- Add statement for refinement via surface subdivision
- Add statement for intersections in cartesian product of childs
2010-01-03 12:49:13 +03:00
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)
2010-01-08 07:33:32 +03:00
o Language Frontend
2010-11-02 14:13:36 +03:00
- include statement doesn't support nesting. This can be fixed by
keeping a nested stack of current input files in the lexer. See
the "Flex & Bison" O'Reilly book, "Start States and Nested Input
Files", page 28, for an example.
2010-01-08 07:33:32 +03:00
- Allow local variables and functions everywhere (not only on module level)
2011-02-05 19:06:34 +03:00
- allow any expression to be evaluated as boolean (!0 = true, 0 = false)
2010-05-28 03:19:12 +04:00
- Rethink for vs. intersection_for vs. group. Should for loops
generate child lists instead, and make these passable to other
modules or accessible by child()?
2011-06-05 19:41:09 +04:00
- constants: PI, OpenSCAD version
2010-06-27 02:55:18 +04:00
o DXF Import/Export
- Use dxflib from RibbonSoft for import/export? -> investigate
- 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
2010-01-14 11:14:52 +03:00
o Mesh optimization on STL export
- Remove super small triangles (all sides are short)
- Replace super thin triangles (one h is short)
2010-01-07 21:44:02 +03:00
o Misc
2010-02-09 16:44:19 +03:00
- When specifying a transparency with the color() statement,
the object is not sorted and will be rendered wrongly
2010-01-09 13:36:07 +03:00
- Go through default values of parameters (e.g. cube() has x,y,z=1 while linear_extrude() has height=100)
2010-01-31 04:08:26 +03:00
- Add support for symbolic names to child() statement
2010-01-31 20:12:59 +03:00
- Add 'lines' object type for non-solid 2d drawings
2010-04-12 04:27:14 +04:00
- Is there a reason why modules like echo, empty if, empty for loop returns an
empty AbstractNode instead of being ignored?
2011-04-12 22:43:57 +04:00
- Bug: Using the background operator (%) on the only object in a scene triggers a
CSG error: No top level object found
2011-08-27 23:11:51 +04:00
- Dependency tracking of libraries (USE'd modules) isn't implemented. See Mail from nophead 20110823.
2010-01-14 14:15:22 +03:00
o Grammar
- dim->name -> dim->label
2010-01-14 11:39:43 +03:00
- A random(seed) function
2010-01-21 22:15:41 +03:00
- import_*() -> *_import() (consistent prefix vs. postfix)
2010-01-24 23:06:30 +03:00
- linear_extrude()/rotate_extrude(): Cumbersome names? -> (extrude, revolve, lathe, sweep ?)
2010-01-07 21:44:02 +03:00
2011-01-09 19:08:31 +03:00
IDEAS FOR LANGUAGE CHANGES
--------------------------
o More strict checking of module parameters to make e.g. this fail:
module test(a,b) { a=1; b=2; echo(a,b,c); } test(c=3);
2010-01-14 14:14:31 +03:00
CODE
----
o Refactor from MainWindow:
2010-02-09 16:44:19 +03:00
- Put all application-global data in one place (QApplication subtype?)
2010-01-26 00:39:34 +03:00
- Fix current_win hack
2010-01-14 14:14:31 +03:00
- 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)
2010-02-10 18:26:15 +03:00
- Use static_cast/dynamic_cast instead of C-style casts
2010-01-24 23:06:30 +03:00
o dxflinextrude and dxfrotextrude could share code
o Consider decoupling DXF-specific functionality from the 2D subsystem
2010-04-12 04:27:16 +04:00
o Visitation refactoring
- Make AbstractNode members private/protected?
2010-03-05 00:20:24 +03:00
2011-01-09 19:08:08 +03:00
BUILD SYSTEM
------------
o Fedora is reported to ship with byacc, which doesn't support bison extensions (e.g. %debuig). Look into this, either be yacc-compatible or force the build system to use bison.
o We currently link in -lboost_thread. Should we always use -lboost_thread-mt under Linux or can we pick this up using qmake?
2010-03-05 00:20:24 +03:00
TESTING
-------
2010-03-31 03:55:23 +04:00
o Caching and MDI looks suspicious when the code relies on external resources
which might be loaded from difference locations in different documents
-> we might get a false cache hit
2010-04-12 04:27:16 +04:00
o Are contructs like "child(0)" cached? Could this give false cache hits?
2010-03-05 00:20:24 +03:00
o Write some cmd-line apps that dump an openscad file to misc. formats
(dump, stl, dxf)
2010-03-19 07:10:13 +03:00
o Write a simple test script that collects verified and current STL renderings
and displays them side-by-side or smth.
2010-03-05 00:20:24 +03:00
o Write simple driver scripts for comparing output of above command
o Collect "all" available OpenSCAD scripts from the internets and run the integration
tests on them all
2011-06-05 19:41:09 +04:00
o Write a regression test for the hexagonal cylinder orientation issue
2010-03-05 00:20:24 +03:00
2010-01-15 16:02:52 +03:00
INFRASTRUCTURE
--------------
o Use a logging framework to get debugging/info output more under control?
(check log4j, google project)
MISC
----
2010-04-05 20:07:22 +04:00
o Streamline the cmd-line interface a bit
- Implicit output file format
2010-05-07 20:24:26 +04:00
2010-03-31 03:55:23 +04:00
o Write checklists for typical extension work (add new module, add new function)
-> make sure new test files are added