nts that I have found helpful and will be included in the next release, but you can try them now. They are online at https://github.com/fequalsf/Crystallon/tree/0972066e468f0a7a592ff4e7e88226028dcb029c/V2.1I have been interested in finding ways to save settings for different iterations of a design which can be baked into a rhino file and used again later. These tools I've made are for working with divisions of a surface.The first tool (Divide Surface) is for dividing a single surface using UV parameters and outputting a quad mesh. Simple enough. What makes this powerful is you can use that mesh with the "Morph Between Meshes" tool to create your voxels. So now you can morph between surfaces with the same number of divisions but with different parameters. The other nice thing about meshes is they are simple to work with and can be further modified with other plugins (such as kangaroo). They can be baked, manually edited in rhino and saved as STL or OBJ files to use again later. I will be updating all the tools eventually to output meshes.
The next tools are for creating those divisions. Any of the components that require a parameter input need a range of values from 0-1. The simplest way to do this is with the "Range" component. The default domain is 0-1 so you only need to give it a number of steps.
To make the range non-linear, there's a few components you can use. Graph mapper is the most common tool, but you could also use the gradient tool.
But these can be difficult to work with and quite limiting. Graph mapper has a limited set of graph types to work with (I tend to use Bezier) and the gradient tool makes a steep curve which cannot change. Also making small changes is difficult and saving a setting for later is not easy.
So the next tool I made is a curve plotter. This takes your range of number (X values) and your remapped numbers (Y values) and plots the points to either a polyline or interpolated curve. This way you can see the curve the gradient is making or bake out a graph mapper curve you want to use later.
The next tool I made is a curve graph mapper, so you can map numbers using any curve drawn on the XY plane. This gives you much more freedom than the graph mapper and is easier to make small adjustments. Then you can always make many iterations of a curve and go back to any of them saved in the rhino file. There are options to view tags with the values on the curve as well as a gradient preview.
If you take a look at the curve created by the gradient tool, you can see it is basically creating a Bezier curve from the handles on the gradient (position is X value, color is Y value). The problem with using it for division parameters is the tangency of the points is always in the X direction creating a nearly horizontal section in the curve. This will give you a series of the same values, which we don't want. The falloff of the curve is also quite steep with no way of adjusting it.
If you make a lot of divisions you will also notice stepping in the curve. This is because the gradient uses RGB colors which is only a range of whole number from 0-255. So you only have a total of 256 values from 0-1.
Yet there is something elegant and user friendly about Bezier curves which makes them nice for creating gradients. So the last tool I made is for creating a Bezier curve from points. All you need to do is input at least 2 points. The second input is the tangent length multiplier (which can be one value for all or one per span of the curve) and the third is the tangent rotation in radians (also either one value or one per span).
The values are shown on the curve and can be baked as text tags if you want to save them and use the same points and values later. Or you can just bake out the curve. This makes for a simple smooth curve that makes a nice gradient.
…
tions or components.
Participants will learn concepts of object oriented programming and essential syntax of C# to endeavour into personally extending cad toolsets. The workshop will focus on introducing the .NET language C# and the Software Development Kit (SDK) RhinoCommon.
Topics
- use of Script Component within Grasshopper
- explanation to the .NET Framework
- introduction to RhinoCommon SDK
- basics of imperative / object-oriented programming
- data types, operators, properties
- variables, arrays, lists, enumerations
- methods
- objects, classes
- control structures: conditional statements (if, else, switch)
- control structures: loops (for, foreach, while, do)
- walk-through iterative und recursive code-samples
- use of RhinoCommon Geometry class library: creation, sorting, editing of Geometry (Points, Vectors, Curves, Surfaces)
- adding (baking) geometry to the active Rhino 3DM Document, including attributes (Name, Layer, Colors etc.)
- introduction to the Integrated Development Environment MS Visual Studio Express Edition
- compiling code to dll/gha files (plug-ins) / making your own Grasshopper custom components
Grasshopper wird auf der .NET Softwareplattform entwickelt, und kann ebenso wie das CAD Programm Rhinoceros mit "RhinoCommon", einem Software Development Kit, erweitert werden.
Dieser Kurs richtet sich an Designer, Architekten, Ingenieure und Techniker, welche mit dem grafischen Algorithmus-Modellierer "Grasshopper3d" sowie dem CAD-Programm "Rhinoceros" bereits vertraut sind und einen Einstieg in die Programmierung von Geometrie erlernen möchten.
Der Kurs Grasshopper II folgende Grundlagen:
Kennenlernen der Script Componente
Erläuterung zum .NET Framework
Einführung in RhinoCommon SDK
Grundlagen d. imperativen / objektorientierten Programmierung
Datentypen, Operatoren, Eigenschaften
Variablen, Reihen, Listen, Aufzählungen
Methoden
Objekte und Klassen
Kontrollstrukturen: Bedingte Ausführung, Schleifen
praxisnahe iterative und rekursive Code-Beispiele für generatives Design unter Verwendung der RhinoCommon Geometrie Klassenbibiliothek - Punkt- und Vektorgeometrie erstellen, sortieren, bearbeiten, Flächen und Netze erstellen - Geometrie in das Rhino 3DM Dokument baken, einschließlich Attribute (Name, Layer, Color)
Einführung in die Entwicklungsumgebung MS Visual Studio Express Edition
Kompilieren von Programmerweiterungen (plug-ins) als Komponenten (custom components)
Details, Anmeldung:
www.vhs-stuttgart.de
Trainer Peter Mehrtens
Kursdauer: 3 Tage x 8 h
Freitag, 21.02.2014, 9:00-17:00 Uhr Samstag, 22.02.2014, 9:00-17:00 Uhr Sonntag, 23.02.2014, 9:00-17:00 Uhr Ort: VHS Stuttgart, Fritz-Elsas-Str. 46/48
Teilnahmegebühr 510,00 €…
I can get this working in a c# windows forms program, but as soon as i make a call to the mkl-dll's Rhino and Grasshopper crashes without giving me an exception.
See code code snippet below:
/** Pardiso wrappers */ public class Pardiso { private Pardiso() { }
public static int pardiso(IntPtr[] handle, ref int maxfct, ref int mnum, ref int mtype, ref int phase, ref int n, double[] a, int[] ia, int[] ja, int[] perm, ref int nrhs, int[] iparm, ref int msglvl, double[] b, double[] x, ref int error) { return PardisoNative.pardiso(handle, RHINO CRASHES HERE ref maxfct, ref mnum, ref mtype, ref phase, ref n, a, ia, ja, perm, ref nrhs, iparm, ref msglvl, b, x, ref error); } }
/** Pardiso native declarations */ [SuppressUnmanagedCodeSecurity] public class PardisoNative { private PardisoNative() { }
[DllImport("mkl_rt.dll", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true, SetLastError = false)] internal static extern int pardiso([In, Out] IntPtr[] handle, ref int maxfct, ref int mnum, ref int mtype, ref int phase, ref int n, [In] double[] a, [In] int[] ia, [In] int[] ja, [In] int[] perm, ref int nrhs, [In, Out] int[] iparm, ref int msglvl, [In, Out] double[] b, [Out] double[] x, ref int error); }
Does anybody know what I am doing wrong? Please find complete code attached.
This is all I get from VS:
The program '[6772] Rhino.exe: Managed (v4.0.30319)' has exited with code 2 (0x2).
Thank you in advance,
Gustav
…
a problem with SSL. Any Ideas? I am using the following code:
import json,httplib connection = httplib.HTTPSConnection('api.parse.com', 443) connection.connect() connection.request('GET', '/1/classes/MY-CLASS', '', { "X-Parse-Application-Id": "MY-APP-ID", "X-Parse-REST-API-Key": "MY-REST-API-KEY" }) result = json.loads(connection.getresponse().read()) print result
I Get the Following Messages:
Runtime error (IOException): Authentication failed because the remote party has closed the transport stream. Traceback: line 280, in do_handshake, "C:\Program Files\Rhinoceros 5.0 (64-bit)\Plug-ins\IronPython\Lib\ssl.py" line 120, in __init__, "C:\Program Files\Rhinoceros 5.0 (64-bit)\Plug-ins\IronPython\Lib\ssl.py" line 336, in wrap_socket, "C:\Program Files\Rhinoceros 5.0 (64-bit)\Plug-ins\IronPython\Lib\ssl.py" line 1156, in connect, "C:\Program Files\Rhinoceros 5.0 (64-bit)\Plug-ins\IronPython\Lib\httplib.py" line 3, in script Any help would be greatly appreciated! Thanks in advance! -Zach…
rst option is the type of Point Grasshopper will display in the Rhino Viewport.
Dot
Point
Cross
Dot is a small dot of single colour.
Point is a slightly larger dot with a white center.
Cross an X-shaped cross. (Default)
Preview Plane Size
The option to change the size of the Plane appears as a fly out menu where an input box allows you to enter a value in Rhino Document Units to set the size of the Plane. (You must press Enter to accept the change)
Preview Mesh Edges
The option to hide/show mesh edges catches a few users out, thinking that the Meshing of the Object has failed.
And without...
There is a handy Shortcut of Ctrl+M to toggle between the two options.
Gumballs
As of version 0.9.0064, Grasshopper allows the user to move individual points that are Persistent[3a] by means of a Gumball in the Rhino Document. Volatile[3b] points can be made persistent by way of the Internalising feature found on the Context Menu of Components and Parameters
[3] Glossary:
Volatile - "liable to change rapidly and unpredictably". Referenced objects in Rhino are considered volatile.
Persistent - "continuing to exist or endure over a prolonged period". Internalised objects are considered persistent.
…
ers can be applied from the right click Context Menu of either a component's input or output parameters. With the exception of <Principal> and <Degrees> they work exactly like their corresponding Grasshopper Component. When a I/O Modifier is applied to a parameter a visual Tag (icon) is displayed. If you hover over a Tag a tool tip will be displayed showing what it is and what it does.
The full list of these Tags:
1) Principal
An input with the Principal Icon is designated the principal input of a component for the purposes of path assignment.
For example:
2) Reverse
The Reverse I/O Modifier will reverse the order of a list (or lists in a multiple path structure)
3) Flatten
The Flatten I/O Modifier will reduce a multi-path tree down to a single list on the {0} path
4) Graft
The Graft I/O Modifier will create a new branch for each individual item in a list (or lists)
5) Simplify
The Simplify I/O Modifier will remove the overlap shared amongst all branches. [Note that a single branch does not share any overlap with anything else.]
6) Degrees
The Degrees Input Modifier indicates that the numbers received are actually measured in Degrees rather than Radians. Think of it more like a preference setting for each angle input on a Grasshopper Component that state you prefer to work in Degrees. There is no Output option as this is only available on Angle Inputs.
7) Expression
The Expression I/O Modifier allows you change the input value by evaluating an expression such as -x/2 which will have the input and make it negative. If you hover over the Tag a tool tip will be displayed with the expression. Since the release of GH version 0.9.0068 all I/O Expression Modifiers use "x" instead of the nickname of the parameter.
8) Reparameterize
The Reparameterize I/O Modifier will only work on lines, curves and surfaces forcing the domains of all geometry to the [0.0 to 1.0] range.
9) Invert
The Invert Input Modifier works in a similar way to a Not Gate in Boolean Logic negating the input. A good example of when to use this is on [Cull Pattern] where you wish to invert the logic to get the opposite results. There is no Output option as this is only available on Boolean Inputs.
…
ve Intermediate Insight of Computational Design Strategies While Exploring Rangoli Art form in 2 Dimension and 3Dimesion in which Participants will not only be trained to Digitally Design using Parametric software's but they will also be trained to Fabricate them in reality.
This Course will be explored in manner where Participants will understand inter-dependency of Rhinoceros3D & Grasshoper3D through a unique Hybrid Teaching Method While Exploring Rangoli Geometry .
The course will also take participants through Topics such as - Computational Thinking, - Computational / Parametric Design, - Computational Rangoli Exploration, - Digital Fabrication, - 3D Visualization ( Rhino3D 6), - Making Info-graphics & Design Diagrams ( Rhino3d 6 ).
Participants will also be doing a Project at the last Leg of Workshop in which they will implement the skill they gained in first Few Weeks.
{ Tutor } Nitant Pixelkar (Computational Artist / Designer, Mumbai)
Nitant Hirlekar A.k.a. Pixelkar, is a Computational Artist. He graduated from Rachana Sansad school of Interior Design 2011, Mumbai. In Academics He Bagged Two Gold and One Silver Medal on National Level.
In his post academic days, he came across the Emerging Computational Techniques in Design industry in which Algorithm serves as a main Functional part. He uses Algorithms to Deconstruct the Captured images in Pixelated form using the Grid of the Desired Indian Art Forms.
He Heads Collective Group Named "Mutation Lab” which is a multidisciplinary Design & Art Cell. Where they Explore Computational Approach while Designing Various Scales Spatial Installation, Digital Fabrication, Interactive Installations and Computational Consultancy for Various Architects.
He has exhibited his first artwork in Kalaghoda Arts Festival for in 2014 And further in 2016 and 2017.In 2015 he exhibited in Dharavi Biennale” organized by Wellcome Trust,London & Sneha Organisation, Mumbai Which was internationally acclaimed. In 2016 he got Featured on a TV show - The Creative Indian's as an Absolut Creative Indian of the Week.
Academically he is been involved in Many Computational Design Workshops / Elective Studios for School of Interior Design (Rachna Sansad), LS Raheja College of Architecture & Rat-Lab (Delhi).
{ Participants } The Course is aimed at Architecture, Interior Design, Product Design,Furniture Design & Fashion Design Students and Professionals. However we would be thrilled to have any Interdisciplinary Artist / Creator/ Maker to join the Course as well.
{ Level }
Intermediate
{ Timing } Monday To Friday - 6:00 PM to 9:00 PM (15 Hours/ Week = 5 Week X 15 Hours = 75 Hours )
{ Dates } Registration Ends - 24th April 2020 **Subejct to Availablity
{ Workshop Dates } 4th May 2020 To 5th June 2020
{ Venue } Lower Parel,Mumbai ( Details To Be Announced )
{ Schedule }
{Registration Form}…
mesh by an infinite plane
Namespace: Rhino.GeometryAssembly: RhinoCommon (in RhinoCommon.dll) Version: 5.0.15006.0 (5.0.20693.0)
Syntax
C#
public Mesh[] Split( Plane plane )
Visual Basic
Public Function Split ( _ plane As Plane _ ) As Mesh()
Parameters
plane
Type: Rhino.Geometry..::..Plane[Missing <param name="plane"/> documentation for "M:Rhino.Geometry.Mesh.Split(Rhino.Geometry.Plane)"]
Return Value
[Missing <returns> documentation for "M:Rhino.Geometry.Mesh.Split(Rhino.Geometry.Plane)"]
See Also
Mesh Class
Rhino.Geometry Namespace
Last updated 3 June 2011 - Robert McNeel and Associates
Send comments on this topic to steve@mcneel.com
Report wishes and bugs: https://github.com/mcneel/rhinocommon/issues
Is this the function?
I have a VB component with this:
a = rhino.Geometry.Mesh.CreateBooleanSplit(x, y)
but this is a boolean split, so I have only one mesh, with the intersection. I would like to have several splitted meshes.
Thank you in advance again.
…
C# only).
We've switched UI toolkits from winforms to Eto (which has much better cross platform support) so GH2 will run on both Mac and Windows. The developer of Eto now works part-time at McNeel so I'm pretty confident any problems that come up can be solved the proper way.
We're working on complete documentation. Glossaries, explanations of core-concepts, example files for all components, etc. etc. All fully editable and extensible by third party content providers, be they plugin developers, teachers, translators, or whatever.
This time around I'm designing the SDK with multi-threading in mind, so a lot of types have become immutable. I'm also adding multi-threading wherever it makes sense in the core classes.
This time around I'm adhering to .NET guidelines for the SDK.
There will also be much deeper and better support for data trees (they were introduced only halfway through GH1 development). The same goes for data conversion.
There is support for user data on each and every data type. So you can assign custom data to curves, numbers, breps, whatever and it will piggy back along as that data flows through the network. This user data will also serve as the basis for custom settings. For example you could assign the user data "BakeLayer = Building A" to some geometry and when that geometry gets baked, GH will figure out in what layer it is supposed to end up. Or you can assign "DisplayColor = Orange" and that geometry will appear orange in the viewports.
Expressions have been extended to be any chunk of VB or C# code (support for python will probably be added at some point). They can be far more intricate (but they don't have to be) and they will be run as compiled code, rather than interpreted code. Expressions also have ways to access data that is defined elsewhere in the document. So if there's a slider somewhere called "Thickness" then an expression in a number input parameter could look like "Min(x * 2, Thickness)".
--------------------------------------------------------------------------------------------
I am doing or have done the above. I'm hoping to get around to the items below.
--------------------------------------------------------------------------------------------
The interface will be simplified. I'm planning to remove a lot of options and settings and replace them with smarter code. If that ultimately fails options and settings can always be brought back.
There will be a lot more zoom aware UI, so if you want details about some component or parameter, you'll no longer have to dig through a gazillion menu items, you just zoom in on that object.
There will be better tools to document, debug and manage large files. This is a huge area of R&D but it is one of the major weaknesses of GH1 in my opinion.
Solutions will be multi-threaded, and hopefully also run in the background.
As part of a general effort within McNeel, I'm hopeful there will be a reliable way to explore, install, and uninstall plugins for Grasshopper directly from the Grasshopper interface. No need to go to some webpage, no need to register, no need to log in, no need to enter captchas or having a new password emailed to you because you can't remember the old one. It's ridiculous how difficult this appears to be in 2015, but we now have someone at McNeel who's really good at this stuff and I'm pretty confident they'll make it awesome.
There'll be a lot more types of data to work with (sub-d geometry, extrusions, polylines, spheres, graphs, bitmaps, better support for fields, ...). The aim here is both to reduce memory overhead by providing light-weight types and to provide more functionality.
There will be more ways to organise and display data, both on the canvas and in the viewports. Better bar graphs, better pie charts, better and more everything.
The default preview materials will be grey and yellow, not red and green.
--------------------------------------------------------------------------------------------
As you can see there's a lot of work to be done, for sure the first alpha release will be as soon as possible, but I've been focusing on core classes only so far. There's no working prototype, there's no working UI, there's no document class yet that actually runs solutions. We're a long way from the first alpha.
Right now I'm mostly acquainting myself with Eto (YouTube video if you want to know what that means) and I'm working on data type conversions and preview materials.
--------------------------------------------------------------------------------------------…