summaryrefslogtreecommitdiff
path: root/openscad.cc
diff options
context:
space:
mode:
Diffstat (limited to 'openscad.cc')
-rw-r--r--openscad.cc40
1 files changed, 34 insertions, 6 deletions
diff --git a/openscad.cc b/openscad.cc
index 85e6708..d4a411f 100644
--- a/openscad.cc
+++ b/openscad.cc
@@ -18,8 +18,15 @@
*
*/
+#define INCLUDE_ABSTRACT_NODE_DETAILS
+
#include "openscad.h"
+#include <CGAL/IO/Polyhedron_iostream.h>
+
+#include <fstream>
+#include <iostream>
+
int main()
{
int rc = 0;
@@ -27,18 +34,39 @@ int main()
initialize_builtin_functions();
initialize_builtin_modules();
- Context ctx(NULL);
- ctx.functions_p = &builtin_functions;
- ctx.modules_p = &builtin_modules;
+ Context root_ctx(NULL);
+ root_ctx.functions_p = &builtin_functions;
+ root_ctx.modules_p = &builtin_modules;
AbstractModule *root_module = parse(stdin, 0);
- QString text = root_module->dump("", "**root**");
- printf("%s", text.toAscii().data());
+
+ printf("--- Abstract Syntax Tree ---\n");
+ QString ast_text = root_module->dump("", "**root**");
+ printf("%s", ast_text.toAscii().data());
+
+ AbstractNode *root_node = root_module->evaluate(&root_ctx, QVector<QString>(), QVector<Value>(), QVector<AbstractNode*>());
+
+ printf("--- Compiled CSG Tree ---\n");
+ QString csg_text = root_node->dump("");
+ printf("%s", csg_text.toAscii().data());
+
+ CGAL_Nef_polyhedron N;
+ CGAL_Polyhedron P;
+ N = root_node->render_cgal_nef_polyhedron();
+ N.convert_to_Polyhedron(P);
+
+ std::ofstream outFile("output.off");
+ if (outFile.fail()) {
+ std::cerr << "unable to open output file merged.off for writing!" << std::endl;
+ exit(1);
+ }
+ outFile << P;
+
delete root_module;
destroy_builtin_functions();
destroy_builtin_modules();
- return rc;
+ return rc;
}
contact: Jan Huwald // Impressum