diff --git a/README.textile b/README.textile index eee664b928..fc9f2e46ec 100644 --- a/README.textile +++ b/README.textile @@ -70,8 +70,8 @@ As OpenSCADpy is forked from OpenSCAD, you might want to look at the "OpenSCAD H h3. Reference All objects are defined in Python language. All OpenSCAD specific methods are part of the openscad-module - so most likely you want to import this module to the global namespace: @from openscad import *@ -When all your code is executed OpenSCADpy will render the content of the variable @openscad.result@ -@openscad.result = openscad.sphere(10)@ would create a sphere (with r=10). +OpenSCADpy will render the content of the call @openscad.assemble()@ +@openscad.assemble( openscad.sphere(10) )@ would create a sphere (with r=10). The following is a list of all object classes in OpenSCADpy. diff --git a/examples/example001.py b/examples/example001.py index 925fd3df39..bdc5b2f5d9 100644 --- a/examples/example001.py +++ b/examples/example001.py @@ -15,4 +15,4 @@ def r_from_dia(d): - rotcy([1,0,0], cy_r, cy_h) - rotcy([0,1,0], cy_r, cy_h)) -openscad.result = example001() +openscad.assemble( example001() ) diff --git a/examples/example002.py b/examples/example002.py index 5f9af1494a..05cb5f7fbc 100644 --- a/examples/example002.py +++ b/examples/example002.py @@ -11,5 +11,5 @@ def example002(): ) & translate([0, 0, 5], cylinder(h=50, r1=20, r2=5, center=True)) -openscad.result = example002(); +assemble( example002() ) diff --git a/examples/example003.py b/examples/example003.py index 7b9a6e55b7..5fbc64469b 100644 --- a/examples/example003.py +++ b/examples/example003.py @@ -13,5 +13,5 @@ def example003(): ) -openscad.result = example003() +assemble( example003() ) diff --git a/examples/example004.py b/examples/example004.py index 18c8406456..8e27b66fce 100644 --- a/examples/example004.py +++ b/examples/example004.py @@ -3,5 +3,5 @@ def example004(): return cube(30, True) - sphere(20) -openscad.result = example004() +assemble( example004() ) diff --git a/examples/example005.py b/examples/example005.py index 3c50dcff2a..a8b4f048ea 100644 --- a/examples/example005.py +++ b/examples/example005.py @@ -18,4 +18,4 @@ def example005(): ) -openscad.result = example005() +assemble( example005() ) diff --git a/examples/example006.py b/examples/example006.py index 0f3d4da1c4..6ef425a392 100644 --- a/examples/example006.py +++ b/examples/example006.py @@ -22,7 +22,7 @@ def edgeprofile(): [+1, -1, 270]]) ) ,[ [0, 0, 0], [1, 0, 0], [0, 1, 0] ]) - + map(lambda i: rotate(i[0],[0,0,1], + + map(lambda i: rotate(i[0],[0,0,1], child= rotate(ang=i[1],vec=[1,0,0], child= translate([0,-50,0], map(lambda j: translate([j[0],0,j[1]], @@ -41,5 +41,4 @@ def edgeprofile(): ]) ) -openscad.result = example006() -print openscad.result +assemble( example006() ) diff --git a/examples/example007.py b/examples/example007.py index 431ce54256..38b1f84d52 100644 --- a/examples/example007.py +++ b/examples/example007.py @@ -43,8 +43,8 @@ def cutview(): difference(combo),r ]) -openscad.result = translate([0, 0, -10], - clip()) +assemble( translate([0, 0, -10], + clip()) ) #openscad.result = cutview() diff --git a/src/pythonscripting.cc b/src/pythonscripting.cc index b6fe1b02de..fcc573adf7 100644 --- a/src/pythonscripting.cc +++ b/src/pythonscripting.cc @@ -51,7 +51,7 @@ using namespace boost::python; using boost::make_shared; list empty_list; - +class PyAbstractNode; class PyContext { Accuracy acc; @@ -78,6 +78,9 @@ class PyContext { return openscad_namespace[nsresult]; return object(); } + void setResult(const PyAbstractNode &n) { + openscad_namespace[nsresult] = n; + } Accuracy &getAcc() { acc.fn = extract(openscad_namespace["fn"]); acc.fa = extract(openscad_namespace["fa"]); @@ -609,6 +612,11 @@ list pyDxfCross(const std::string &filename, const std::string &layername=std::s BOOST_PYTHON_FUNCTION_OVERLOADS(pyDxfCross_overloads, pyDxfCross, 1, 4) +void assemble(const PyAbstractNode &n) { + ctx.setResult(n); +} + + BOOST_PYTHON_MODULE(openscad) { namespace py = boost::parameter::python; namespace mpl = boost::mpl; @@ -705,6 +713,7 @@ BOOST_PYTHON_MODULE(openscad) { */ def("DxfDim", pyDxfDim, pyDxfDim_overloads()); def("DxfCross", pyDxfCross, pyDxfCross_overloads()); + def("assemble", assemble); } PythonScript::PythonScript(double time) {