Thursday, September 2, 2021

Simple Grates

I ran across a quick exercise in designing 3d grates. It's a simple enough combination of linear bars and perpendicular supports. Given that there were multiple starting shapes and depths, I decided to do this in grasshopper to better get a faster grasp of the different parameters.

Screenshot:


Grasshopper file:


In a bit more detail, the gh file inputs are:

- Perimeter of the drip tray (this gives the long and short distances)

- Height of the drip tray (this helps calculate overlap)

- Dimensions of bars lengthwise

- Dimensions of perpendicular bars

- Void at bottom (for better drainage)


The intermediate steps are as rather simple:

- Locate and create the long bars, center accordingly

- Locate and create the short bars, boolean out the long bars to create notches, and boolean out the void for better drainage 


In doing this work I realized:

- I love playing with grasshopper. It's slow at times, and troubleshooting can be a pain, but it's still one of the more powerful tools that I know.

- I need to create more customized clusters to help speed up future work.

Tuesday, September 29, 2020

Troubleshooting Large Files - Audit3dmFiles

I know why my files are too large. It's often due to sloppy modeling, inheriting old pieces, and heavy detail meshes. We are trying our best but sometimes things grow out of control. So what now?

Audit3dmFiles is a rhino command that provides, among other things, a readout of each file size. Below I've created a spreadsheet template to help sort them by file size. Then I go ahead and simplify/delete them individually (SelID). 

1. Audit3dmFiles: Select File. Note that the file grew 7x.


2. Copy readout to Excel. Readout includes file, plugins, material, layer, group, block, and object metadata


3. Extract just the object data into a new worksheet. Use the following formulas to isolate object size and object ID:

    B1: =LEFT(A1,FIND("bytes",A1)-1)

    C1: =INT(RIGHT(B1, LEN(B1) - FIND(":",B1)))

    D1: =LEFT(A1,FIND(", name",A1)-1)

    E1: =RIGHT(D1, LEN(D1) - FIND("=",D1))


Headers were put in for clarity. 


4. Copy all the formulas down, sort by column C, and select Expand Selection. 

5. Copy each column D item. Once inside Rhino, run SelID and paste the ID and zoom to the offending object. Rebuild/ Delete/ Save and watch your file size come back down.

6. Turns out a few minor elements were creating havoc. Reduced the file all the way down to 64MB.

Maybe in the future, I'll create a script to audit and highlight the top 10 items.

Monday, August 24, 2015

Multiple Hi Res Screen Shots

Update: Script now takes layer states into consideration when taking screen shots. For example, if the model has 2 named views and 5 options saved as layer states, this script will pull a total of 10 screenies.

Rhino has a command called ViewCapturetoFile that allows for screen captures. Better yet, the dashed version of the command ("-ViewCapturetoFile") allows for custom resolution captures. I was able to extract 16000 x 16000 pixel image files (haven't tested higher)!

Still, it is annoying to individually captures your saved views, so I've created a script back in 2011 (recently updated):


This is a simple script that runs through ALL of your named views at your chosen dimensions, and saves them to a folder of your choosing. 


Saturday, July 18, 2015

FaceMe for Rhino

I don't know why but Rhino still doesn't have a feature similar to sketchup's FaceMe. By using only a billboard image instead of a heavy 3d model, FaceMe is one reason why sketchup scenes can be so light weight. Years ago I made a rhinoscript to accomodate this, but recently I adapted it to grasshopper so that it can be more controllable.






Simply stated, this is a grasshopper script that reorients the billboards to face an attractor point. I've also attached some jitter commands to create some variation. Then bake the new billboards and delete the initial surfaces. In the future, some vb/c# work can link the attractor to the camera location. 

Note that for now, all billboards textures must be assigned by layer and differently billboard images need to be grouped and baked separately.


Typical billboards


FaceMe




Move Jitter


Rotate All Billboards


Rotate Jitter




Combined Effects



BlockNamer


I was dressing up an exterior scene that required a number of different plants. I created various 3d blocks of these plantings (made up of two vertical PictureFrames at 90 degrees from each other), but soon became confused of which was which, and how tall plant was. So I wrote a quick script to label each block with its name and current Z height at its origin. 


I've always liked the ability of TextDots in rhino, as they can be very useful in communicating obscure information quickly. This script can be modified to quickly show which layer, scale, and rotation of the block, as well as texture information inside the block.

Sunday, July 12, 2015

Tracking Movement: Circular Lofts


Building off of the previous circular loft script, I created a tracker that traced the location of a series of points over time. As a form twirls across the screen, the series traced points form curves, and are lofted into graceful forms.





I'm using the recorder to track points, and feeding the points into an interpolated curve. Works surprisingly well! Right now there is only a rotate transform, but I did play around with a move transformation (x,y) as well. I'm still trying to figure out what I can do with these extrusions:





 I then isolated the move transform to the x dimension only, and I got some interesting script-like curves. As the resulting traces are highly dependent on the initial loft forms, I feel like there's a lot of potential here.





Friday, July 10, 2015

Creating with Grasshopper: Circular Lofts


I was exploring three point circles when I realized that I could use grasshopper to manipulate lofted circular forms dynamically.




I started with three curves in space, broke them down into smaller segments, used the end points to create 3 point circles, and then lofted them into vase forms. By rotating the original curves, I was able to really create complex forms and transitions. Fun!


Did some iteration studies:



---------------------------

Continued form finding exercise... with a little help from array:



A refinement in array allows me to rotate the form in an array. Could be interesting once I develop enough tools to "animate" this form.

3dm | gh



Clusterizing this array and rotate portion leaves a beautifully simple script.