summaryrefslogtreecommitdiff
path: root/openscad.cc
diff options
context:
space:
mode:
authorclifford <clifford@b57f626f-c46c-0410-a088-ec61d464b74c>2009-06-21 11:41:11 (GMT)
committerclifford <clifford@b57f626f-c46c-0410-a088-ec61d464b74c>2009-06-21 11:41:11 (GMT)
commite24a87b8a37b8f71be30d99251908a5d80bb8bc7 (patch)
treedaea8c3a9841c723cd550d5d55617edd06f65247 /openscad.cc
parent0e4681913485cb450493e9a35ae297d88f12b19d (diff)
Clifford Wolf:
Compilation to CSG tree is working now git-svn-id: http://svn.clifford.at/openscad/trunk@6 b57f626f-c46c-0410-a088-ec61d464b74c
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