Thursday, September 5, 2013

Articulation of panels.

To build upon previous studies on patterning. I developed an easy way that would achieve the same result but simplify the method. In this case each planar panel is exploded into surfaces in order to find the 2 Large main surfaces. Both surfaces then are thrown into a function to determine which face is facing up or down.

The function then returns the bottom surface since that will be exposed for the drop ceiling. The surface is then subdivided by its UV's into a 3x3 grid. Each quad is then put into a random generator that determines if the quad gets subdivided again and combined in that process a randomly generated number for depth. Each surface with its corresponding depth create from this process is then extruded to create a block. The blocks are then run through a loop individually to subtract from the main solid.

This portion of the code looks like this:

for block in grid_of_panels:
Thicken_panel = panel.thicken(thickness_value)
if Thicken_panel:
test_solid = final_solid.subtract_from( Thicken_panel, True, True, True )
try:
final_solid = test_solid[0]
except:
continue

So basically for every panel, each panel is thicken and then subtracted form the final solid. the results are placed in test_solid, which sometimes can be 1 or more. The next step is then to take the main solid which is usually index 0 and place it back as the final_solid to continue the subtraction process.

the reasoning for the try: portion is due to an odd error i was getting. Basically when using .Subtract_from() normally you get back a SolidList with 1 or more objects, but sometimes even if there is nothing as a result I would get an empty SolidList which would return in an error the next time around. Placing the try would screen the possiblity of an empty SolidList.

All of that to give the panel an interested surface texture. We originally had plans of seeing if this texturing could double up as a way to affect the acoustical properties in a room but lack time and resources to do so.
here are the results so far.

test one.


design mock up.


We milled a test piece out of maple to see what effects would come out of the design.



Wednesday, August 14, 2013

Creating and splitting solids.

So to further understand how well the planar code works I put together a diagram to show the range of curvature exist in the first pass, then to the right the results of the final planarization process that is within a certain tolerance.


Input non-planar vs output planar surfaces:

This also greatly helps in the fabrication process due to the fact you can't just bend wood to shape with out spring back or breaking. So on the left side here the process of creating a mold just to make One non planar panel vs the obvious cheaper solution to the right.


difference in material usage:


After the approximate planarization of the panels I started work on giving these surface thickness and also mitered edges. The mitered edges are important to make sure the panels fit nicely edge to edge and flush to each other. This will help in fabrication since we can use these edges to make sure the angles are correct when installing.

The protocol for this was first to check the normal of each panel surrounding the main panel. Then adding up the vectors of one of the surrounding panels with the main panel to get the average vector needed to create a plane. The plane is then used to split the solid, and we repeat this process over and over until all 4 sides of the panel has mitered edges. If there are no surrounding panels, the edge then creates a vertical plane instead.

The reason for this was to make sure the edges are planar as well. Normally I would consider just creating a vertex normal to offset the surface, but that presents two issues, 1) the panel that I create have a higher chance of not being the right thickness and 2) the edges will twist from vertex to vertex and be harder to fabricate, especially when i'm not sure of which CNC machine i'll get to use. Of course I understand that there will be tolerances that will keep each panel from perfectly matching either way, but the planar edges will help greatly in fabrication since we do not have access to a 5 axis CNC mill.

here's an image showing the process thus far.
From Revit BIM elements to solid panel geometry for milling.

Two options for fabrication come to mind when thinking about these panels. I could either A) use a table saw, measure the angles needed, and cut, or B) try our luck on the OMAX Waterjet at pier 9. The OMAX brings up a new issue of producing the G-code needed to run the machine, but I will update you guys on that later when I have a better understanding on what it means to export these files.

Monday, July 29, 2013

attempting planar quads.

Sorry for the delay.

For this update i'll be talking about our attempt at planarizing quad panels developed by my last script. As you can see in my last post, the quads created were no where near planar, and because of that, harder to fabricate. Due to this issue I started to develop a script that adjusted the points based on their neighboring planes. How this code works is that for each point i'm checking is a vertex for 4 other quads. So understanding that I check for each surrounding point, +1 and/or -1 to get all the points for each surrounding quads. After I have those points I create 3 point planes opposite from the point I am checking and project the point to the plane. With the list of points I average them and move my point accordingly. To help visualize this I made a diagram of whats happening.


This process then steps over to the next point until every point is with-in a a certain tolerance I set. In this case I have been using a tolerance of 0.5 inches which helps keep the script run time down to an average of 1.5 second per panel. The planar code does change the overall form, and in some ways flattens everything a little.

Quads before script.


Quads after script is ran

As you can see, the form does change a bit. The next step for this portion will be making sure it does not intersect with any of the above ceiling geometry. more effort will be put back into this after I get a handle on the rest of our development. here are some process images testing it on a larger arrangement of panels.


The script seems to work on different scales. well see what happens next when we make these into solids.

Monday, July 8, 2013

The start, and initial studies.

Originally focusing mostly a Rhino Python for most of my computational work, it has been a little tricky learning how Dynamo deals with geometry. In Rhino there is a clear difference between what is nurb vs what is mesh methods. In Dynamo its slightly different, in some ways it is nice how over encompassing Dynamo Python can be, since some commands for instance surface methods could work for both nurbs and polygon surfaces, Making the change in code between polygonal to nurbs or vice versa possibly simpler and so forth. I will talk more about the differences and similarities between rhino python vs dynamo python I find interesting/helpful in future posts.

Example of how things are connected and ordered.

For this version of dynamo i'm testing out, focused on adding standard geometry into its software. This has been a great help in allowing the user the ability to really test/figure out different variations of geometry and allow mistakes. There are still many issues with how data gets managed through nodes and so forth but the team is working hard to fix the issues as we see it.

Research thus far:
As a study to understand the program better, I looked at repeatable patterns to subdivide surfaces. Fractals geometry quickly became the go to search for precedents in architecture. But for this study I stuck with just a simple L pattern which breaks down the surfaces and rotates, in the end creating a new overall pattern. The next step for this would be to control it more on its patterning, but also in how many times each surface gets subdivided. I'm interested in what patterns emerge from a simple L shape, as you look at the surface you no longer really read the L and you get this QR code atheistic which i'm slowly starting to like, but further will be developed in the new few weeks.


L patterns applied on a dynamic surface.

The project:
So to catch up on some things I have been working on here with Dynamo. The project we were interested in working on deals with a redesign of a drop ceiling. The design will be broken into stages, the first one will be the Optimization of the surface to the ceiling, Stage 2 will be the development of the optimized planar quad panels. Then Stage 3 is the further development of the Fractal patterning. The end goal will be to produce this physically and prototype a smaller mock up. The scale yet to be determined.



Preliminary studies of the drop ceiling design.

I hope your all excited about the project, until next time.
Codes will be posted in the future.