NudiBranch 0.028 is out!

mainreleasebanner

Seven months later after the first official release, I kind of managed to properly update Nudibranch to the Grasshopper 0.9.005X series. The new version out is 0.028 (yes there were 27 different incremental attempts in between..) and it marks bug fixes (two evident plus more that were not that easy to spot), minor updates and optimization of some components, and finally 5 brand new components (**more details further down on this post). Bouncers, Slicer, BundleAttractor, MeshClimber, FrameGrid(new sub-tab Utilities) and Box3dGrid(new sub-tab Utilities).

iconsCapture

Hopefully this is a major update, not only for introducing new components but mainly for improving the existing functionality of the add-on, specifically by reinforcing its global character, increasing its accessibility and user-friendliness, while exponentially reducing the calculation time for many of the existing routines. This release is unfortunately supported only by Rhino 5.0. The previous release for Rhino 4.0 is still going to be available to anyone who might be using the previous version of the software but its functionality is limited.

Some snapshots of the New Features are displayed in the following figures.

bouncers001

bundle001meshclimber001

slicer001
Of course your feedback is valuable in any case, so do not hesitate to contact us and add your comments or critique, either here on the blog or though the official Nudibranch group in the Grasshopper3d forum.
You can download Nudibranch of the Food4Rhino website.
Enjoy :)
**
BUG FIXES
• Satellite Component: The component was throwing an exception when loading geometry that was of Type IGH_GeometricGoo. This is fixed. (thanks Igor GH Forum for noticing)
• PointAttractor and CurveAttractor: These components were creating Null vectors when the attractors where further than the attraction range. This is fixed, they return Zero length vectors. (thanks Igor GH Forum for noticing)
EXISTING COMPONENT IMPROVEMENTS
• AttractorValues + CurveValues:
 Switched data arrangement to longest list
 Added additional right-click drop down menu to the distribution input
 Added auto-fill options when a value-list component is connected to the distribution input
 Added three options for the attractor solver as a right-click menu on the component (Minimum, Average, Maximum)
• PointAttractor + CurveAttractor:
 Switched data arrangement to longest list
 Added additional right-click drop down menu to the distribution input
 Added auto-fill options when a value-list component is connected to the distribution input
• TwirlAttractor:
 Switched data arrangement to longest list NUDIBRANCH Version History
Nudibranch Version History
• Railway:
 Added inheritance of the DataPath for the curves used as rails to organize the
generated points in a branched structure of the original.
• Walkers:
 Added an extra input for randomizing the speed for each walker in the
domain of (-Factor to Factor)
• PointHicking + CurveHicking + PointPatrolling:
 Switched data arrangement to longest list
• Uphill + Downhill:
 These components were replaced by the Climber Component
 Added two options for the solver as a right-click menu on the component
(DownHill, UpHill)
NEW COMPONENTS
• Bouncers:
 Animators Tab: Generates and animates a Number of Particles bouncing
within a user defined Box boundary.
• Slicer:
 Animators Tab: Generates and animates Rhino Clipping planes for a set of
user defined curves.
• BundleAttractor:
 Attractors Tab: Generates an iteratively bundled point list for any given
DataTree population of points.
• MeshClimber:
 Scramblers Tab: Generates the gradient descent or ascent paths on a Mesh
object for any provided point list.
• FrameGrid:
 Utilities Tab: Generates a 2-dimensional grid of points distributed as a
row/column structure for any given 3dRectangle.
• Box3DGrid:
 Utilities Tab: Generates a 3-dimensional grid of points distributed as a
row/flippedrow/column structure for any given Box.
EXTRA NOTES
• All modified components have been marked as “OBSOLETE”; hence they will continue to
operate in existing files with the previous release functionality. The “OLD” logo will appear on
top of the component’s icon.
• Added a tab icon for the 0.9.005x series
• Added a new icon in component Libraries
• Loaded from COFF Data
Creative Commons License

Nudibranch Copyright (C) 2013 by Marios Tsiliakos is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported License.

Permissions beyond the scope of this license may be available at www.digitalsubstance.wordpress.com.

Triaxial Waffling Grasshopper3d Definition

triaxialwaffle01

Almost 4 months after my last post..:( i have been really busy lately , mostly with amazingly interesting stuff that I’ll have the time (me thinks!) to unveil in the near future, plus the development for the next build of Nudibranch  to be up-to-date with the new grasshopper version 0.9.0052.

But just to get things rolling and before moving into any major update, I decided to share a fabrication oriented definition of mine, that was developed quite a long time ago. I tried to narrow it down , clean it up and share it along with a small code snippet in Python to generate dot text objects in the rhino viewport (this is now embedded in the new gh), but it serves the general purpose of learning how to interact with rhino objects through Gh.

triaxialwaffle02

triax002

triax004

On the other hand, this definition is really useful (though my point of view at least) especially for the many advantages it has over the normal 2-dimensional waffling system, mainly in terms of rigidness and detail. At the same time this fabrication methodology provides a denser structural framework for any possible post-processing routine in order to describe better the analysed and fabricated design (most of the times a freeform, double curved surface or object) like for example the implementation of a gap filling material like stucco, cement or resin forming somehow an interesting composite system.

triax001

triax003

The system takes on single surface and translates it into ready to laser-cut stripes laying on three different grid systems, + tags + the quantification of the joints of the system(python snippet). The code of which is just a few lines as you can see below.

</pre>
import Rhino

dots = []

att = Rhino.DocObjects.ObjectAttributes()
att.ColorSource = Rhino.DocObjects.ObjectColorSource.ColorFromObject
att.ObjectColor = col

for i in range(len(pos)):
 dot = Rhino.Geometry.TextDot(text+str(i),pos[i])
 dots.append(dot)
 if bake == True:
 D = Rhino.RhinoDoc.ActiveDoc.Objects.AddTextDot(text+str(i),pos[i],att)

Dots= dots
<pre>

Let me know if there is any way to improve this definition or if bugs are brought up.  You can grab it the usual place ..

:)

Cushion Panels Script in Python for GH

cp002pp

This is a code snippet I have been using long time ago written in VB. Just thought of re-writing the code in Python, which is clearer to understand, but I had some problems with datatrees so I had to change the structure of code resulting into a few more lines of code.

cp001pp

This routine utilizes rhinocommon (if you are looking for rhinoscript methods here, in this blog, you are terribly wrong), and simple list management. The code is pretty straightforward, as you can see.

#Library imports
#1
import Rhino.Geometry as rc

#main routine
data_T = []
data_T2 = []
breps = []

for i in range(len(panels)):
    temp_list = []
    temp_list2 = []
    cn = centroids[i]
    nrm = normals[i]
    upper_p = cn+(nrm*height)
    upper_p = rc.Point(upper_p)
    lower_p = cn-(nrm*height)
    lower_p = rc.Point(lower_p)
    temp_list.append(panels[i])
    temp_list.append(upper_p)
    temp_list2.append(panels[i])
    temp_list2.append(lower_p)
    data_T.append(temp_list)
    data_T2.append(temp_list2)

for j in range(len(data_T)):
    ienum = data_T[j]
    ienum2 = data_T2[j]
    b = rc.Brep.CreatePatch(ienum,10,10,0.0005)
    b2 = rc.Brep.CreatePatch(ienum2,10,10,0.0005)
    breps.append(b)
    breps.append(b2)

#outputs
cushion_panels = breps

You can download the definition along  with the python code here.

cushionpanelsdef