Python and install it and it should work fine.
2. You still see the image above in case 1 however you have GHPython already installed. What about that?
In this case probably the GHA component is blocked. Find GHPython.GHA on your system (usually at: C:\Users\%username%\AppData\Roaming\Grasshopper\Libraries) . Right click, go to properties and select unblock.
To make sure that GHPython is working fine on your system open the attachment file (testGHPython.gh). You should see something similar to the image below on your screen when you open the file:
If you see the something similar you should be fine to go! Try to open one of the example files.
3. You have Ladybug running but in some of the case the output is missing. You see something similar to this:
or this
This one is because you are using old version of GHPython. Close the file without saving. Download the new version and install it and re-open the file. It should work fine now.
Hope it helps,
Mostapha
…
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…
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?…
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
…
rrect, the heat balance of a zone is always 0 = Qcool/heat + Qinf + Qvent + Qtrans + Qinternalgains + Qsol. These parameters also correspond with the readEPresult element. However, if i sum up these values there is a slight deviation.
The deviation is greater during daytimes and in winter, suggesting it has something to do with the heating values.
Attached you'll find an image of the energy plus outputs that I use and the resulting -.CSV file that I constructed. In this you'll see that the balance does not add up.
Am i missing some energy flows?
Thanks for the help.
Hour[H]
Qbal{kWh]
Qint[kWh]
Qsol[kWh]
Qinf[kWh]
Qvent[kWh]
Qtrans[kWh]
Tair[°C]
Tdrybulb[°C]
DIFFERENCE
1
3,039357
0,137702
0
-0,253218
-0,321929
-2,000028
20
5,1
0,601884
2
3,107099
0,125462
0
-0,247457
-0,315484
-1,881276
20
4,6
0,788344
3
3,181073
0,119342
0
-0,261765
-0,334485
-2,473788
20
4,3
0,230377
…
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