Showing posts with label geometry. Show all posts
Showing posts with label geometry. Show all posts

Thursday, March 19, 2015

LunchBox - New Rationalization Nodes and Panel Improvements

"Planarize Points" node will project a collection of points to a common plane.
A new release of LunchBox for Dynamo has been posted to the package manager.

In this release, I made modifications to the paneling nodes so they can better support a range of Dynamo lists and nested lists (no easy task with Python nodes in Dynamo!)  I have also included a few basic "Rationalization" nodes that let you create collections of planar points and rationalize splines into arc segments.

LunchBox is featured heavily in CASE's Dynamo training curriculum.  We are running workshops during the month of April, so be sure to sign up if you are interested!

Using curve parameters to describe co-tangent arcs.
Rationalized spline curves using co-tangent arc segments
Here I am using "planarize points" to define projected flat panels

Friday, October 19, 2012

Import OpenNURBS for Vasari is here!

CASE is excited to announce the Beta release of Import OpenNURBS for Autodesk’s Vasari Conceptual Modeling Software.  The Beta is available for a limited time through the CASE Apps Add-in manager found at the CASE Apps website.

The Import OpenNURBS add-in facilitates early-stage interoperability by allowing designers to import conceptual geometry from Rhino into Autodesk Vasari.  Unlike importing and linking with other file formats, Import OpenNURBS will translate geometries as native Vasari elements to give designers the flexibility to further develop their designs using Vasari’s modeling and analysis features.

The Vasari Add-in reads the OpenNURBS file format (Rhino 4.0 3DM) and uses custom algorithms to reconstruct geometry using Vasari API methods.  Currently, the Add-in supports a broad range of OpenNURBS geometry.  At this stage, some geometry support has yet to be implemented but we are committed to expanding the functionality as new capabilities become available for OpenNURBS and the Vasari API.

We hope you enjoy testing the new Import OpenNURBS Beta for Autodesk Vasari... and we hope you can provide us with valuable feedback about the tool!

Try it.... test it... break it!  Then let us know what you think :)

Sunday, September 16, 2012

Interoperable Geometry (Part 3): Surface Forms

...and then there are surfaces.

Reconstructing Rhino surfaces within Revit is a tricky science.  Revit's Conceptual Massing API exposes a number of useful higher-level form creation tools for surfaces and solid geometry which can be used to recreate some types of surfaces.  However, the mathematical representations of Revit surfaces may vary from Rhino's NURBS representation making challenging to produce completely accurate reconstructions of Rhino surfaces using automated native API rebuilding.  Additionally, the construction geometry used to derive the Revit Form (Hermite Splines, for example) are also ripe with their own interoperability challenges.

Much like the Spline example in the previous post, we can use reference points on the original Rhino surface to control the how accurately the Revit Form matches the original NURBS.  The greater the number of  points, the more accurate the construction geometry and the resulting Revit Form will be.

Saturday, September 15, 2012

Interoperable Geometry (Part 2): Spline Control

Simple things matter in the world of 3D modeling and BIM...

For the foreseeable future, designers and engineers will be using a variety of different tools to meet their needs so it is important to understand the fundamental differences in the tools.  Many questions arose from the past post on how to resolve the differences in the spline interpolation algorithms used between Rhino and Revit.

When a user draws an interpolated curve in Rhino, the user specifies the Greville points (or "edit points") to produce a NURBS curve representation.  When a user draw a Spline in Revit (using Curve by Points), Revit will use a Hermite spline interpolation algorithm to draw the curve.  Revit also uses this same Hermite spline algorithm for representing imported splines from programs such as AutoCAD.

The next version of CASE's Import OpenNURBS Add-in implements a technique for producing accurate curve translations between Rhino and Revit.   The importer will let users multiply the number of interpolation points that are used to calculate and draw a Revit Spline curve.  By increasing the number of interpolation points along the Rhino curve, Revit is able to produce matching spline curve geometry with less chance for deviation...

Here is a graphic example of that process...



Saturday, September 8, 2012

Interoperable Geometry (Part 1): Curves

Discussions about interoperability have become extremely pervasive in the computational design and BIM communities. As they rightly should, users expect their software applications to support one another through integrated workflows where information can fluidly pass from one system to the next..  Unfortunately, given the complexity of our industry and its technological infrastructure, we still have a ways to go before we achieve seamless integration between systems and across platforms... but that doesn't mean we should give up!

Which brings me to geometry....

Being in the midst of developing the next release of CASE's Import OpenNURBS Add-in for Revit (which will include broader curve and surface support through conceptual massing), I thought it would be helpful to contextualize that effort by providing some short infographics which explain specific geometry challenges across the Rhino and Revit platforms.

Even at the lowest levels of representation, the two systems handle geometry differently which makes it especially challenging to ensure correct and reliable translation.  The graphic below shows a comparison of NURBS and Interpolated curves created in Rhino and Revit which share the same control points and weights.  The variations in how the two systems compute the curves are made obvious by the deviations...  Even NURB Splines are translated with variations.

UPDATE 1 - Interpolation Algorithms:  I just wanted to clarify that I attribute these variations due to a difference in spline and interpolation algorithms.  Architectural Geometry (Pottmann et al) has a nice section on Freeform curves with a nice diagram showing different interpolation algorithms.

UPDATE 2 - NURBS Splines and Knots:  After some further investigation into the NURB Spline, the variation in curvature is due to a difference in how knots are computed in Rhino and Revit.  According to the SDK, Revit determines knots based on NumberOfControlPoints + Degree + 1.  Rhino, on the other hand, uses NumberOfControlPoints + Degree -1.  This means that there is a difference of 2 knot values between the tools. For accurate results, an interoperability method must also account for this variation.

Thanks, Matt Jezyk and the Autodesk team for confirming some of these technical differences!