diff options
Diffstat (limited to 'doc')
-rw-r--r-- | doc/OpenSCAD-classes.graffle | bin | 5157 -> 5262 bytes | |||
-rw-r--r-- | doc/OpenSCAD-classes.pdf | bin | 121443 -> 207883 bytes | |||
-rw-r--r-- | doc/OpenSCAD-compile.graffle | bin | 4883 -> 4873 bytes | |||
-rw-r--r-- | doc/OpenSCAD-compile.pdf | bin | 137981 -> 150244 bytes | |||
-rw-r--r-- | doc/OpenSCAD-csg.graffle | bin | 0 -> 2662 bytes | |||
-rw-r--r-- | doc/OpenSCAD-csg.pdf | bin | 0 -> 58300 bytes | |||
-rw-r--r-- | doc/OpenSCAD-polygons.graffle | bin | 5035 -> 5047 bytes | |||
-rw-r--r-- | doc/OpenSCAD-polygons.pdf | bin | 59224 -> 114655 bytes | |||
-rw-r--r-- | doc/TODO.txt | 36 | ||||
-rw-r--r-- | doc/testing.txt | 29 | ||||
-rw-r--r-- | doc/visitor-changes.txt | 7 |
11 files changed, 54 insertions, 18 deletions
diff --git a/doc/OpenSCAD-classes.graffle b/doc/OpenSCAD-classes.graffle Binary files differindex ef8c1b8..e067521 100644 --- a/doc/OpenSCAD-classes.graffle +++ b/doc/OpenSCAD-classes.graffle diff --git a/doc/OpenSCAD-classes.pdf b/doc/OpenSCAD-classes.pdf Binary files differindex 5870db0..04b62a9 100644 --- a/doc/OpenSCAD-classes.pdf +++ b/doc/OpenSCAD-classes.pdf diff --git a/doc/OpenSCAD-compile.graffle b/doc/OpenSCAD-compile.graffle Binary files differindex 14a2ccc..9a09fc3 100644 --- a/doc/OpenSCAD-compile.graffle +++ b/doc/OpenSCAD-compile.graffle diff --git a/doc/OpenSCAD-compile.pdf b/doc/OpenSCAD-compile.pdf Binary files differindex 2c9730d..efc7134 100644 --- a/doc/OpenSCAD-compile.pdf +++ b/doc/OpenSCAD-compile.pdf diff --git a/doc/OpenSCAD-csg.graffle b/doc/OpenSCAD-csg.graffle Binary files differnew file mode 100644 index 0000000..507c694 --- /dev/null +++ b/doc/OpenSCAD-csg.graffle diff --git a/doc/OpenSCAD-csg.pdf b/doc/OpenSCAD-csg.pdf Binary files differnew file mode 100644 index 0000000..0304cf7 --- /dev/null +++ b/doc/OpenSCAD-csg.pdf diff --git a/doc/OpenSCAD-polygons.graffle b/doc/OpenSCAD-polygons.graffle Binary files differindex 3e8b5bd..40df7ab 100644 --- a/doc/OpenSCAD-polygons.graffle +++ b/doc/OpenSCAD-polygons.graffle diff --git a/doc/OpenSCAD-polygons.pdf b/doc/OpenSCAD-polygons.pdf Binary files differindex d2eaa3b..ac18baf 100644 --- a/doc/OpenSCAD-polygons.pdf +++ b/doc/OpenSCAD-polygons.pdf diff --git a/doc/TODO.txt b/doc/TODO.txt index b40a825..5fe22bb 100644 --- a/doc/TODO.txt +++ b/doc/TODO.txt @@ -4,11 +4,9 @@ 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 Export STL: Exports existing CGAL model even though the current model is changed, but not CGAL rendered -o It's now possible to start a new rendering while one is already running (which call processEvents()) - -> turn off most (or all) interaction while rendering - -> Lock all or only one MainWindow (MDI)? o Look into the polygon winding and rotate_extrude() problem reported by Britton o CGAL Aff_transformation_3 doesn't support non-affine transformations (non-aff-matrix.scad) +o 2D union of polygons with a touching vertex doesn't work. see testdata/scad/bugs/polygon-touch.scad STL Import BUGS --------------- @@ -42,7 +40,6 @@ Using STL-imported models is tricky and triggers multiple issues: CRASH BUGS ---------- o Broken polyhedron() entities are not correctly detected and cause CGAL segfaults -o linear_extrude(50) square([5,0]); 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]]); @@ -60,7 +57,6 @@ o Preferences - OpenGL params - Default language feature settings - 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 @@ -82,9 +78,11 @@ o 3D View - overlay indicator displaying current view mode - OpenCSG rendering: Coincident surfaces causes z-buffer fighting. Is this somehow avoidable tuning the depth tests in OpenCSG? - - Make the 10.000 element OpenCSG klimit configurable (Preferences) ? + - Make the 10.000 element OpenCSG limit configurable (Preferences) ? - Use OpenGL picking to facilitate ray-tracing like features like measuring thicknesses, distances, slot thicknesses etc. + - When specifying a transparency with the color() statement, + the object is not sorted and will be rendered wrongly o Editor wishlist - More infrastructure for external editor (allow communication from the outside) - Preferences GUI for the features below @@ -145,10 +143,6 @@ 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 - - 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. - Allow local variables and functions everywhere (not only on module level) - allow any expression to be evaluated as boolean (!0 = true, 0 = false) - Rethink for vs. intersection_for vs. group. Should for loops @@ -167,8 +161,6 @@ o Mesh optimization on STL export - Remove super small triangles (all sides are short) - Replace super thin triangles (one h is short) o Misc - - 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 @@ -182,6 +174,15 @@ o Grammar - A random(seed) function - import_*() -> *_import() (consistent prefix vs. postfix) - linear_extrude()/rotate_extrude(): Cumbersome names? -> (extrude, revolve, lathe, sweep ?) +o Hollow donut problem + When extruding a 2D CSG tree (e.g. a polygon with a hole), the hole + information is lost when performing the extrusion. For linear + extrusions, this has only a minor visual impact, but for rotate + extrusion, the resulting CGAL models will lose the hole. The OpenCSG + rendering keeps the hole, but renders slightly incorrect. +o CGAL issues + - CGAL doesn't handle almost planar polygons. Consider splitting into triangles ourselves. See WillamAdams/dodec.scad + IDEAS FOR LANGUAGE CHANGES -------------------------- @@ -204,6 +205,9 @@ o dxflinextrude and dxfrotextrude could share code o Consider decoupling DXF-specific functionality from the 2D subsystem o Visitation refactoring - Make AbstractNode members private/protected? +o Consider evaluating all referenced files relative to the document path instead + of being absolute. This would e.g. make regression testing of dumpcaching easier. + This would require us to pass a document contect to all traversal methods though. BUILD SYSTEM ------------ @@ -216,13 +220,10 @@ 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 o Are contructs like "child(0)" cached? Could this give false cache hits? -o Write some cmd-line apps that dump an openscad file to misc. formats - (dump, stl, dxf) -o Write a simple test script that collects verified and current STL renderings - and displays them side-by-side or smth. -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 +o dumptest tests: + - filename are dumped as absolute filenames - this will fail on other systems o Write a regression test for the hexagonal cylinder orientation issue INFRASTRUCTURE @@ -234,6 +235,5 @@ MISC ---- o Streamline the cmd-line interface a bit - Implicit output file format - o Write checklists for typical extension work (add new module, add new function) -> make sure new test files are added diff --git a/doc/testing.txt b/doc/testing.txt new file mode 100644 index 0000000..b64d5a4 --- /dev/null +++ b/doc/testing.txt @@ -0,0 +1,29 @@ +Running regression tests: +------------------------- + +Prerequisites: cmake, python + +cd tests +mkdir build +cd build +cmake .. +make +make test + + +Adding a new regression test: +------------------------------ + +1) create a test file at an appropriate location under testdata/ +2) if the test is non-obvious, create a human readable description of the test in the same directory (e.g testdata/scad/mytest.txt) +3) if a new test app was written, this must be added to tests/CMakeLists.txt +4) Add the tests to the test apps for which you want them to run (in tests/CMakeLists.txt) +5) run the test with the environment variable TEST_GENERATE=1, e.g.: + $ TEST_GENERATE=1 ctest -R mytest + (this will generate a mytest-expected.txt file which is used for regression testing) +6) manually verify that the output is correct (tests/regression/<testapp>/mytest-expected.<suffix>) +7) run the test normally and verify that it passes: + $ ctest -R mytest + +Note that test files which don't have an *-expected.<suffix> file will +be ignored for the test apps in question. diff --git a/doc/visitor-changes.txt b/doc/visitor-changes.txt new file mode 100644 index 0000000..e9df8eb --- /dev/null +++ b/doc/visitor-changes.txt @@ -0,0 +1,7 @@ +Changes in visitor branch: +o import_dxf(): layername="" imports all layers. Importing a single layer with a zero-length name is no longer supported. FIXME: The same prob. goes for dims +o cylinder(): the r parameter will now always be used in place of a missing r1 or r2 +o for(): + - with scalar argument now works, e.g.: for (i=23) echo(i) + - empty for loop is not evaluated, e.g. for () echo(i) + - for loop with illegal value is not evaluated, e.g. for ([0:true:2]) |