# Combining polyhedrons to make a solid

4 messages
Open this post in threaded view
|

## Combining polyhedrons to make a solid

 Is it possible to combine 2D objects to make a solid? I have some complex polyhedrons that combine, with all faces facing outwards, to make a solid. However, they don't show in F6. Strangely, a single polyhedron will show in F6, even though it is not solid, but when the edge coincides with another polyhedron they both disappear. Here is a simple example of a cube made out of two polyhedrons: polyhedron(           points=[ [0,0,0],[10,0,0],[10,0,10],[0,0,10],                    [0,10,0],[0,10,10],                    [10,10,10],[10,10,0]           ],                                 // the apex point           faces=[[0,3,2,1,0], [0,4,5,3],[5,4,7,6,5],[1,2,6,7,1],           [0,1,7,4,0]           ]          ); polyhedron(           points=[ [0,0,10],[0,10,10],[10,10,10],[10,0,10]           ],                                 // the apex point           faces=[[0,1,2,3,0]]          );
Open this post in threaded view
|

## Re: Combining polyhedrons to make a solid

 Wikipedia: "In elementary geometry, a polyhedron (plural polyhedra or polyhedrons) is a solid in three dimensions with flat faces, straight edges and sharp corners or vertices." Both of your polyhedrons are actually invalid (they aren't solids), which is why it doesn't work.
Open this post in threaded view
|

## Re: Combining polyhedrons to make a solid

 Ok, so I was afraid of that. The problem arises if you want to create a 3D object, made of many individual 2D polyhedron parts that is only solid when all the parts are combined. Creating one huge polyhedron would create a huge list of points and point references in the faces. Designing and troubleshooting that can be a nightmare. Editing it would be even worse since all the face references might need to be adjusted. To address this I created a function to combine multiple individual polyhedrons into one large polyhedron. This way all the point references in the individual polyhedron faces will only reference their own points. In case anyone else has the same issue here is my function. Below is the simple example from above created from two separate [point, faces] lists. Each polyhedron can be rendered separately while designing (try it by using polyhedron(points=poly1[0], faces=poly1[1]) but is combined to make the final solid. This does F6! //input is a list of [points, faces] //For each faces, increment the point references by the previous number of points function combine_polyhedrons(list, points=[], faces=[], point_count=0, i=0) =     i < len(list) ?         combine_polyhedrons(list,             concat(points, list[i][0]),             concat(faces, [for (face_i = [0:len(list[i][1])-1])                 [for (point_i = [0:len(list[i][1][face_i])-1])                     list[i][1][face_i][point_i] + point_count]]),             point_count + len(list[i][0]),             i + 1)         : [points, faces];             //Each poly is [points, faces] poly1 = [[ [0,0,0],[10,0,0],[10,0,10],[0,0,10],            [0,10,0],[0,10,10],[10,10,10],[10,10,0]          ],          [ [0,3,2,1,0], [0,4,5,3],[5,4,7,6,5],[1,2,6,7,1], [0,1,7,4,0] ]         ];                 poly2 = [[ [0,0,10],[0,10,10],[10,10,10],[10,0,10] ],          [ [0,1,2,3,0] ]         ];                 new_polyhendron = combine_polyhedrons([poly1, poly2]); polyhedron(points=new_polyhendron[0], faces=new_polyhendron[1]);
Open this post in threaded view
|

## Re: Combining polyhedrons to make a solid

 Administrator In reply to this post by NathanA On Dec 27, 2014, at 13:16 PM, NathanA <[hidden email]> wrote: > Is it possible to combine 2D objects to make a solid? If your final polyhedron is convex, you can take the hull of the partial ones.  -Marius _______________________________________________ OpenSCAD mailing list [hidden email] http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org