summaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
Diffstat (limited to 'doc')
-rw-r--r--doc/OpenSCAD-classes.grafflebin5157 -> 5262 bytes
-rw-r--r--doc/OpenSCAD-classes.pdfbin121443 -> 207883 bytes
-rw-r--r--doc/OpenSCAD-compile.grafflebin4883 -> 4873 bytes
-rw-r--r--doc/OpenSCAD-compile.pdfbin137981 -> 150244 bytes
-rw-r--r--doc/OpenSCAD-csg.grafflebin0 -> 2662 bytes
-rw-r--r--doc/OpenSCAD-csg.pdfbin0 -> 58300 bytes
-rw-r--r--doc/OpenSCAD-polygons.grafflebin5035 -> 5047 bytes
-rw-r--r--doc/OpenSCAD-polygons.pdfbin59224 -> 114655 bytes
-rw-r--r--doc/TODO.txt36
-rw-r--r--doc/testing.txt29
-rw-r--r--doc/visitor-changes.txt7
11 files changed, 54 insertions, 18 deletions
diff --git a/doc/OpenSCAD-classes.graffle b/doc/OpenSCAD-classes.graffle
index ef8c1b8..e067521 100644
--- a/doc/OpenSCAD-classes.graffle
+++ b/doc/OpenSCAD-classes.graffle
Binary files differ
diff --git a/doc/OpenSCAD-classes.pdf b/doc/OpenSCAD-classes.pdf
index 5870db0..04b62a9 100644
--- a/doc/OpenSCAD-classes.pdf
+++ b/doc/OpenSCAD-classes.pdf
Binary files differ
diff --git a/doc/OpenSCAD-compile.graffle b/doc/OpenSCAD-compile.graffle
index 14a2ccc..9a09fc3 100644
--- a/doc/OpenSCAD-compile.graffle
+++ b/doc/OpenSCAD-compile.graffle
Binary files differ
diff --git a/doc/OpenSCAD-compile.pdf b/doc/OpenSCAD-compile.pdf
index 2c9730d..efc7134 100644
--- a/doc/OpenSCAD-compile.pdf
+++ b/doc/OpenSCAD-compile.pdf
Binary files differ
diff --git a/doc/OpenSCAD-csg.graffle b/doc/OpenSCAD-csg.graffle
new file mode 100644
index 0000000..507c694
--- /dev/null
+++ b/doc/OpenSCAD-csg.graffle
Binary files differ
diff --git a/doc/OpenSCAD-csg.pdf b/doc/OpenSCAD-csg.pdf
new file mode 100644
index 0000000..0304cf7
--- /dev/null
+++ b/doc/OpenSCAD-csg.pdf
Binary files differ
diff --git a/doc/OpenSCAD-polygons.graffle b/doc/OpenSCAD-polygons.graffle
index 3e8b5bd..40df7ab 100644
--- a/doc/OpenSCAD-polygons.graffle
+++ b/doc/OpenSCAD-polygons.graffle
Binary files differ
diff --git a/doc/OpenSCAD-polygons.pdf b/doc/OpenSCAD-polygons.pdf
index d2eaa3b..ac18baf 100644
--- a/doc/OpenSCAD-polygons.pdf
+++ b/doc/OpenSCAD-polygons.pdf
Binary files differ
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])
contact: Jan Huwald // Impressum