the mesh into long strips 1 quad wide.
*I did make an alternative icon for this, but opted for the tamer one in the end ;)
The Unroller component goes along the strip face by face, rotating it into a single plane.
Note that this component will still give a result even if you supply it with non planar quads - it will just fold them along a diagonal. However, if the faces are significantly non-planar, then it won't work as well for fabricating from a smooth strip of sheet material, so it is better to try and make sure your planarizing in the relaxation part is working well.
The Unroller component also has a T input which allows you to unroll only part of the mesh at a time. This is mainly for animation purposes, and most of the time you will probably just want to leave it set at 1.
At the moment the unroller is limited to working with open strips, so if your strip forms a closed loop, you will have to split it first. Later releases should include an automatic 'loop snipper'.
The final part of the definition then takes all these strips, orients them into the XY plane, and does some very basic layout.
It's then up to you to label, add tabs, nest, laser cut and assemble!
Because of the subdivision, each strip should have an even number of quads, which can also be useful for generating interlocking tabs by offsetting alternate groups of edges. I'll try and post an example of this soon.
I hope this is helpful. It was my intention when making this that it could be a relatively quick and easy way of making smooth curved structures out of sheet material, (I'm thinking card, polypropylene, metal, thin plywood...) with a lot less fixing/connecting work than doing a similar shape with individual panels.
Thanks to all the participants in these long-running threads:
http://www.grasshopper3d.com/forum/topics/how-to-create-nodesbone
http://www.grasshopper3d.com/forum/topics/skeletal-mesh*
which inspired this work, especially some of the comments by Ivan Kiryakov, Wiktor Kidziak, Giulio Piacentino, Andrew Haas and Mårten Nettelbladt.
*note also that the meshes generated using this definition can be used for developable strips, because they have the even-valence property.
I was also inspired by these papers:
http://www.cs.jhu.edu/~misha/Fall09/Liu06.pdf
http://www.geometrie.tugraz.at/wallner/strip.pdf…
hat differ in shapes, sizes and height the facade would be a mess. Some spaces need some light while other can't have any. I would like to have full freedom of creation inside the building, to make it as functional as possible. Thats why i decided the parametric "skin" solution would be best. Since the location has industrial past (factories made of brick) i decided that brick would give interesting result.
I tried creating the definition on my own but since i lack skill in GH i got some problems (especially multiplication of bricks and the diffrence between each "level" (half a brick on y axis) caused problems for me.
I post my simple sketch explaining the idea of definition i would like to create (sorry about quality):
1 - Brep - I would like to use 25x12x6cm (classic brick) but as well experiment with diffrent shapes - like the one on the right with hole inside - that would give more light. Thats why i think the best solution would be using brep for this definition.
2- Multiplication - biggest problem for me - I don't know how tall the wall would be, what will be the final shape of Brep (brick) and that's why i would like to manipulate this with sliders as well. All the walls are flat (maybe it would be easier to use surface?). As i managed to multiply the bricks easy way i don't know how to gain control over height of the wall - for example that it is 30 bricks high, but has each second row moved on x axis by the distance of 1/2 brick. I tried using Series but with no success. Could you help me with that please?
3 - Rotation - i would like to use image sampler for that so i can "paint" where i want more sun and where i dont need it at all (black and white). The rotation has to be limited to 180 degrees as well. Obviously i didn't get here yet, but i never used image sampler so if you could give me some advice how to use component and how to create such images i would be really grateful.
4 - More of a concept thing - since the connection angles differ from 90 degrees i will have to figure out how to connect the parts of the wall at sides ;).
I would like to ask you for help with the defintion, since i am totally stuck at step 2. I post what i came up with so far. Thank you for your time and help!
PS. I post an image that is pretty similar to one of options i would like to check for my building.
…
lName, signalValue, operationMode):
sigV=signalValue
if sys.version_info[0] == 3:
if type(signalName) is str:
signalName=signalName.encode('utf-8')
if type(signalValue) is bytearray:
sigV = (ct.c_ubyte*len(signalValue))(*signalValue)
if type(signalValue) is str:
signalValue=signalValue.encode('utf-8')
sigV = (ct.c_ubyte*len(signalValue))(*signalValue)
else:
if type(signalValue) is bytearray:
sigV = (ct.c_ubyte*len(signalValue))(*signalValue)
if type(signalValue) is str:
signalValue=bytearray(signalValue)#<========This is line 1052
sigV = (ct.c_ubyte*len(signalValue))(*signalValue)
sigV=ct.cast(sigV,ct.POINTER(ct.c_ubyte)) # IronPython needs this
return c_WriteStringStream(clientID, signalName, sigV, len(signalValue), operationMode)
It displays the following error:
Program started
Connected to remote API server
Runtime error (TypeErrorException): unicode argument without an encoding
Traceback:
line 1052, in simxWriteStringStream, "C:\Program Files (x86)\V-REP3\V-REP_PRO_EDU\programming\remoteApiBindings\python\python\vrep.py"
line 70, in script
Any hint?…
are hotter than the least overlapped parts.
I'm trying to create gradients when overlapping between closed surfaces occur. The gradient goes from the center of the most overlapped figure to the edges of the least overlapped figures.
To help understand how I'm thinking it, I will first show you my solution for one figure.
As I said in the title, it's kind of a pseudo gradient. It's a way of organising areas (rings) inside of the geometry. To achieve this I thought in creating a series of rays that then can be divided in segments, in this case 3 segments of same lenght per ray, I could get more resolution in the gradient by dividing in more thus creating more rings...
in this picture the rays are in dark red and go from the center to 4 points in the perimeter, if I wanted more resolution I could have more rays, but with this simple figure 4 is enough
the rings are in a gradient of colors from the center to the perimeter, lighter in color each time:
so when I have 2 overlapping geometries
the center of the gradient should be on the center of the most overlapped part (in red) and go to the perimeter of the pink parts
for the red figure I draw the rays from the center to its perimetry. and for the pink figures the gradient should go from the parts that are in contact with the red figure to the perimeter, something like this:
still that is something I did with rhino and it's pretty intuitive...
the problem gets worse when i have more figures and more "heat centers"
like in these examples
maybe the approach should not be with rays to create the rings... maybe with offsets..
not sure if it's not too complicated to achieve in grasshopper and maybe there's another way of creating a gradient with multiple focuses...
would aprecciate any help
cheers…
phere with the maximum number of triangles but not much than a defined threshold.
I scaled that mesh just to fit Rhino grid, but it is not mandatory. What is useful, is to scale not uniformly the mesh (Scale NU). It could be done after cellular modifier applied or before or before and after. The 3 options are possible in the script. If you don’t need them just put 1 in scale sliders.
Ellipsoid mesh is the populated with points, I put 2 independents populations to randomize a bit further. For each vertices of the mesh the closest distance from the populated points is calculated.
Here is an illustration in color of this distance.
This distance is then used to calculate a bump. If domain for bump is beginning with negatives values to 0, it carves the mesh. Instead it bumps/inflates it.
Some images to illustrate the difference with populating 100 points with one or two populations.
Here some images to illustrate the application of scale before carving or after.
Next phase apply noise. At the moment I don't find it good.…
x geometry which will be the basis in plan for a building facade. The problem is as follows:
I am generating a series of arcs using 3 different ranges for radii. Each segment of the geometry is assigned one of the radii. The length of each arc segment is controlled by a specific number, also within a range -- the end goal is to divide this geometry into perfectly equal segments.
(Parameter Ranges)
I am building these arcs in such a way that they are tied to the arc drawn before it - meaning that as the length of the previous arc is adjusted, the arc in question will still begin where the previous arc ends, and be tangent from said previous arc.
This approach works well until I get to the final segment of the form. I want to be able to close the form in a way that the final arc both meets the first arc at its tangent point and is a length divisible by the desired segment length.
Through a series of trial and error by means of adjusting the radii, panel size, and arc lengths, I have been able to get the geometry to being very close to closed, but there is always some sort of remainder, or the last arc is not tangent to the first arc.
My thought is that this would be a perfect scenario to use Galapagos, but my attempts to do so have resulted in an almost immediate crash of rhino. I'm not sure if I'm feeding too many inputs into galapagos (the radii ranges and segment length ranges), or that the number I'm telling it to minimize is incorrect (distance between the end of the final segment and the start of the first segment), or if there is a larger issue with the definition I've written, but I haven't been able to figure out the issue.
Are there any thoughts out there on how I might be able to reach a possible solution? Or at the very least is there any precedent for a geometric shape similar to what I am trying to create which follows the same number of parameters I'm using?
I've attached the GH definition as well as a rhino model for your visual reference. To preview the GH form in rhino, simply assign the only curve in the attached rhino model to the crv node in grasshopper:
This simply locates everything that's being generated in grasshopper in space in rhino.
Thanks in advance for any thoughts, and also apologies for a somewhat potentially messy definition.
…
Added by Ray LeChase at 11:12am on August 31, 2016
d simulate the bending process of a flat stell sheet in order to get the same shape. This can be really interesting so we can evaluate the material beheaviour, the deformation on the cross section a
nd explore big deformations in mecanics analysis of materials.
I am not a mecanical engineer nor a civil engineer, I´m an Architect and my interest is the construcction method and extracting the necesary information to consider fabricating the project.
I´m having conceptual challengings on the methodology for this simulation, so I will post a small overview of what I`ve done.
1.- Understanding the Geometry.
This is a sclupture by the Venezuelan/Hungarian/German artist Zoltan Kunckel (KuZo).
The shape is achieved bending a pre water cut square sheet of stainless steel. After bended manually, the different lashes are pulled on the opposite direction. New curvatures are produced after all is deployed.
2.- Reproducing the Shape digitally.
Using Karamba I built a definition to reproduce the produced by physical stress. This model served to find deformations that occur when a set of loads are applied to a mesh. Following this process will allow us to find a coherent and more natural cross section so then we could re-shape simulating the bending process of a piece of ductile material.
3.- Discretizing curve
Reducing the model to its simplest element is a key aspect of finite nonlinear analysis. Once our shape is already defined we can divide its principal characteristic of its principal given curve.
At this point I have already found the desired curve.
I Think the better strategy to simulate bending the steel sheet into this shape, is rationalize the curve and divide it finding the tangents one of the curve that compose this sort of parabola. bur i don`t know how to parametrize that in GH.
Please. If someone have a better Idea about this process I`ll glad to read sugestions.
Tomás Mena
…
to enter the programming world and tinker more complex, interactive solutions. We will also explore advanced programming paradigms. There is no class official programming language, as both C# and Vb.Net are possible on the participant’s side, and all examples will be provided in both C# and Vb.Net. Additionally, we will see how to get started writing full .Net plug-ins. Finally, we will have time to explore user’s own proposals on the third day.
Day 1 Morning: programming introduction in .Net
• The Grasshopper scripting components. Choosing a .Net language. Language developments
• Variables declaration, assignment and utilization. Operators. Methods [functions]. Calls
• Classes: declaration and instancing. Constructors. Importing a namespace. Point3d, Lines
• Arrays declaration and usage. Lists. Adding to arrays and lists, advantages and opportunities.
Afternoon: patterns
• About OOP (object oriented programming) as opposed to procedural programming. Discussion
• Example of OOP good code reuse: sorting points by coordinates using the .Net SDK classes
• Lists as input parameters. Trees as input parameters. Usage and limitations
• Finding resources: on the net with website that can help getting started and troubleshoot. And books
Day 2 Morning: extending Grasshopper functionality with our definitions
• Store data between updates. The use of fields [globals, or static locals]
• Examples on how to use stored data between updates: a simple agents simulation
• Baking geometry with scripting directly into the Rhino document. Baking with names
• Passing custom types from a scripted component to another one. Our own code reusability
• Rendering an animation from Grasshopper. How to get started and final results
Afternoon: customizing our tools
• Our Rhino plug-in with Visual Studio C# [Vb.Net] Express Edition & wizard. Parametric mesher
• Writing a custom Grasshopper component: hacking an exporter for our data to Excel
Day 3 All day: personal project
• Rehearsal on any example from the first two days. A project that you want to start on your own, being it a Rhinoceros plug-in, a Grasshopper assembly or a script. Example might be to send data through network with UDP to Processing
MINIMUM REQUIREMENTS
A good foundation of Grasshopper visual programming is mandatory. You will need a level which corresponds to the Grasshopper 101 course outline. Examples of things that will not be covered in this course are: sorting document spheres by diameter, paneling of a surface with grasshopper components. You are expected to already know these from the Grasshopper course.…
So it's not true that Bounds.X is only a getter. However it does behave as though it is. This is because RectangleF is a Value Type instead of a Reference Type. When you assign a variable of one value type to another variable of the same type, you always assign a copy of the first value. So when you request the Bounds from an attributes class, what you get is a copy of the actual bounds. Changing the X on this copy would be a useless operation which is why Visual Studio catches this mistake.
Let's assume that Dog is a class (a reference type) and it has a get/set property for fur type. Then, if I type:
Dog A = new Dog();
A.Coat = Long;
Dog B = A;
B.Coat = Short;
At the end of these lines, both A and B have a short coat, because the act of assigning A to B (line 3) means that both A and B now point to the same instance of Dog in memory. In effect, A and B are the same. If Dog were a struct (a value type), then at the end of this code A and B would have different coats, because assigning A to B means creating a copy of A. Any changes made to B will not affect A.
The one place where this causes annoying situations is exactly where you ran into it. If a property returns a value type then it's typically not useful to call properties and methods on that returned data, as it would only affect the copy of the actual data instead of the original data. That's why, if you want to change the Bounds of an attribute, you need code like this:
RectangleF box = Bounds;
box.X +=10;
Bounds = box;
On to the second problem, which is that doing it this way won't help you one bit. Laying out a component is a difficult job and the size of the Bounds depends on many things:
The display mode of the component (icon or text).
The size of the text (depending on which Font to use).
The maximum number of input and output parameters.
The maximum width of the longest input/output parameter name.
The maximum number of state icons to draw on the input/output parameters.
Changing the Bounds after the layout has occurred will basically just invalidate the parameter layout, resulting in parameter names and grips being drawn in the wrong places.
If you want to affect the size of the Bounds for a GH_Component class, you're going to have to dive in and do the laying out yourself. As mentioned before, this is not trivial.
There are static methods on GH_ComponentAttributes which are helpful when doing this, have a look at:
LayoutComponentBox()
LayoutInputParams()
LayoutOutputParams()
LayoutBounds()
Unfortunately they are undocumented.
--
David Rutten
david@mcneel.com…
Added by David Rutten at 1:39pm on January 31, 2014