e it as the same type. It refers to a different type definition apparently.
Error:
error: [A]MassPix cannot be cast to [B]MassPix. Type A originates from '7ea7fec0-99c5-49a8-ae80-af752ac2be94, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' in the context 'LoadFrom' at location 'C:\Users\pnourian\AppData\Local\Temp\7ea7fec0-99c5-49a8-ae80-af752ac2be94.dll'. Type B originates from 'fd0b2126-e10f-49de-9fc9-5504405d4135, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' in the context 'LoadFrom' at location 'C:\Users\pnourian\AppData\Local\Temp\fd0b2126-e10f-49de-9fc9-5504405d4135.dll'. (line: 82)
This is the case:
in component A:
Private Sub RunScript(ByVal x As Object, ByVal y As Object, ByRef A As Object) Dim kjh As New MassPix(2.1, 2.3, 4, 5) A = kjh End Sub
'<Custom additional code> Public Class MassPix Private x As Double Private y As Double Private S As Integer Private K As Integer Sub New(xu As Double, yv As Double, SZ As Integer, KL As Integer) x = Xu y = yv s = Sz k = Kl End Sub End Class '</Custom additional code> End Class
and in component B:
Private Sub RunScript(ByVal x As Object, ByVal y As Object, ByRef A As Object) Dim ABC As MassPix = CType(x, MassPix)
End Sub
'<Custom additional code> Public Class MassPix Private x As Double Private y As Double Private S As Integer Private K As Integer Sub New(xu As Double, yv As Double, SZ As Integer, KL As Integer) x = Xu y = yv s = Sz k = Kl End Sub End Class '</Custom additional code> End Class
the file is attached
ANY HELP IS VERY MUCH APPRECIATED! …
as one element.
Thank you
Comment by karamba on October 7, 2014 at 11:27pm
Hello Patricio, divide the beams in such a way that each boundary vertex of the shell becomes an endpoint of a beam segment.
Best, Clemens
Comment by Llordella Patricio on October 8, 2014 at 8:30amDelete Comment
Hi Clemens,
I did what you suggested but now assemble element doesn´t work properly. Could you please tell me how to fix it? Thanks in advance, Patricio
8-10-14losa%20cadena.gh
Comment by karamba on October 8, 2014 at 11:59am
Hi Patricio, if you flatten the 'Elem'-input at the 'Assemble'-component the definition works. The triangular shell elements have linear displacement interpolations whereas the beam deflections are exact. In order to get correct results you should refine the shell mesh.
Best, Clemens
Comment by Llordella Patricio on October 9, 2014 at 8:35amDelete Comment
Hello, succeeds in creating the mesh to the slab, and built the beam segment, but when I see the deformations are not expected because the beam is deformed as the slab.
Thanks for the help
PS: maybe I'm using the program for a type of structure that is not the most appropriate, as I saw in the examples of other structures. But this type of structure is that students taught
best regards
Patricio
9-10-14%20Example%201.gh
Comment by karamba on October 9, 2014 at 10:46am
You could use the 'Mesh Edges'-component to retrieve the naked edges and turn them into beams - see attached file:91014Example1_cp.gh
Best regards,
Clemens
Comment by Llordella Patricio on October 15, 2014 at 3:41pmDelete Comment
Dear clemens
I was doing a rough estimate of the deformation, and I can not achieve the same result with Karamba. When I make a rough estimate of the result with Karamba beams and mine are very similar, I think the problem is when I connect the shell, because there are no similar results.
I sent the GH file, and an image of the calculation
The structure is concrete The result I get is 0.58cm
thank youPatricio
15-10-14%20Example.gh
Comment by karamba yesterday
Dear Patricio,
try to increase the number of shell elements. As mentioned in the manual they are linear elements. A mesh that is too coarse leads to a response which is stiffer than the real structure.
Best,
Clemens
…
able and it needs to know how to convert itself from/to other types of data.
Let's say that you have a simple data type that combines a point and an integer:
public struct PointIndexData
{
public Point3d Point;
public int Index;
}
It doesn't really matter whether it's a class or a struct. Once you have your data type you can 'wrap' it up in goo in order to make it Grasshopper compliant:
public class PointIndexGHData : GH_Goo<PointIndexData>
{
//...
}
At this point you'll need to implement the 5 abstract methods that are not implemented by GH_Goo<T>. They might look something like this:
public class PointIndexGHData : GH_Goo<PointIndexData>{ public override IGH_Goo Duplicate() { PointIndexGHData dup = new PointIndexGHData(); dup.Value = Value; return dup; }
public override bool IsValid { get { return Value.Index >= 0; } }
public override string ToString() { return string.Format("{0} [{1}]", Value.Point, Value.Index); }
public override string TypeDescription { get { return "Points and Integers, living in perfect harmony"; } }
public override string TypeName { get { return "IndexPoint"; } }}
You'll probably also want to override the CastFrom and CastTo methods so that your data can easily be used by any component which takes in simple points or integers, and -in this case- you want your data to also implement the Grasshopper.Kernel.IGH_PreviewData interface as this data can -and should- be displayed in the Rhino viewports.
--
David Rutten
david@mcneel.com
Poprad, Slovakia…
your fully glazed building). Once a person looks away from the glazed building, they no longer experience glare. If you know the view that someone will have looking at your building, Honeybee has a large number of tools that will give you real and reliable numbers for glare.
I know that you are planning to use a different method here but I point out the above just to be clear that you are not necessarily sure that people will experience glare if you are just looking at the times of the year when direct sun will be bouncing off of the glass building onto another building. However, I can see this as a good starting point to assess the hours where there is a risk of glare in the building where light is being bounced to.
With that preamble out of the way, I can say that you are using a version of Ladybug that is 6 months old and I have updated your file for you. To update your components and to be sure that the file below works correctly, you should re-download the user objects from the main Ladybug page and drag them onto your canvas.
If you want to look at sunrays for a whole year, I would keep your number of test points low by increasing your grid size (I think 5 should suit your purposes). Also, you should only set the number of bounces to 1 as you are only really concerned about the one bounce off of the glass building. With these two things done, you can then hook up an analysis period and have it do bounces for every sun-up hour of the period an not take for ever to calculate on your machine. Perhaps an easier way to do this would be to take a sun-up hour for every month instead of a full analysis period, as I have done in your attached file.
Finally, you need to make the last bounce length long enough to intersect the neighboring building (I increased it to 15 meters). Then you can use the native grasshopper components to count the number of intersections.
You can see this all in this file:
https://www.dropbox.com/s/poe7i1zwut2fjg6/Glarescript19sept_CWM.gh?dl=0…
ll pop-up a message saying what it's happening inside that "A" slot, as i'm doing in the screenshot above.
"Similar" component is automatically converting his inputs into numbers (if it wasn't able to do it, it would be displayed an error).
If you compare the lists, you can see that the conversion from point to number is not very helpful at this moment (this specific conversion is the distance from the point to the world 0, or the length of the vector equivalent to the point, same thing).
2- Grasshopper lists-components managing.
A generic component in grasshopper behave different to what you are expecting.
What is happening here is somehow like this:
The component "Similar" (but it work like this in a lot of other components, if not all) take the first element in list "A" and combine it with the first element in list "B",
the second element in list "A" and combine it with the second element in list "B",
the third element in list "A" and combine it with the third element in list "B",
4th in A with 4th in B,
then, as the list B is shorter then list A (4vs33 elements), grasshopper repeat the last element in list B until the end of list A.
What you want to do after with that true/false list?
And how can you compare point with a 5% tolerance? Depending of their coordinates?
Or you want to remove every point in list A that is similar to at least one point in list B... ?
These are simple operations, and there are so many way to achieve any result.
If you can explain to what you are aiming for, it will be the best to help you.
:D
…
go and sulk in the corner, my C# is non existent, although i am making progress on python unfortunately slower than my grasshopper.
Attached is a typical relatively simple planar grillage model for a bridge form that is common in Australia/NZ/Asia. The analysis package has a good graphical interface, however i am looking at replicating the process ideally with GH. I am getting there.
There are a few constraints in the use of a super T, the precast mould is governed by two critical dimensions:
1. from the beams soffit to the underside of the precast flange, normally Depth -75 or 100mm. Depths that are common are 1200/1500/1800.
2.The real sweet spot dimension is the 1027mm dimension to the outside of the webs, this is a constraint
The actual shapes of the prestressed beams are governened by AS5100:5 Appendix H (from memory)
In my definition I included the super T cross section which is parametric.
The other definition is where I have got to with the grillage.
I am a little one dimensional: point-line-surface-volume. I think I am getting to grips with manageing data i lists.
My ulimate aim is to:
generate basic geometry in gh, the type of analysis will be a space frame or FE, these analysis types require different geometries imported to a structural analysis package
ideally utilise IFC, for materials, 2D, 3D drawings and project documentation
At the moment I am looking to generate all of my gemetry in GH, that seems to generate a lot of doubled up geometry. Deconstruct Brep may become my favourite.
A little excesive is the inclined members spilt into the same no. of points at the grillage length.
again thanks for you time, oh! took a a few minutes to work out how to plug your def's in.
kenyon
…
Added by Kenyon Graham at 7:57pm on December 3, 2015
t'd be great.
I am trying in Rhino 5 and would like to understand where to get the documentation and get the feel for the differences.
Also, do you write such scripts directly in the component? Or elsewhere? How can one debug them?
Thank you for your help.
Option ExplicitCall Main()Sub Main() Dim arrObjects, arrMP, i Dim offsetSize offsetSize = 1 arrObjects = Rhino.GetObjects("Select curves to offset") If IsArray(arrObjects) Then For i = 0 To UBound(arrObjects) arrMP = Rhino.CurveAreaCentroid(arrObjects(i)) If IsArray(arrMP) Then Dim arrNewobject, strGroup, grpName arrNewobject = Rhino.OffsetCurve(arrObjects(i), arrMP(0), offsetSize, ,2) Rhino.AddLayer("offset") Rhino.ObjectLayer arrObjects(i),"offset" Rhino.ObjectLayer arrNewobject,"offset" strGroup = Rhino.AddGroup Rhino.AddObjectsToGroup arrObjects(i), strGroup Rhino.AddObjectsToGroup arrNewobject, strGroup End If Next End If End Sub
…
a and we'll stop adding new stuff. At this point the Grasshopper version will be rolled to 1.0 Beta 1 and we'll keep on fixing serious bugs, resulting in Grasshopper 1.0 Beta 2 etc. etc. until the product is stable enough to be treated as a commercially viable product.
This does not mean Grasshopper will no longer be free. Robert McNeel & Associates (who develop and own the copyrights to Grasshopper) haven't decided yet whether or not to sell Grasshopper or whether to keep it as a free plug-in for Rhino customers.
As soon as Grasshopper 1.0 goes into beta, all development (apart from the odd bug-fix) stops and we start typing on Grasshopper 2.0. It will probably be a few months until the first 2.0 WIP version is released but basically the whole process starts over.
What are we looking to accomplish for 1.0 and which things are planned for 2.0 and beyond? The only major feature still missing in 1.0 is the Remote Control Panel. This feature was removed at some point and has been partially rewritten since then. Once it's finished, we consider the 1.0 feature set to be complete.
To be honest we've made very few concrete plans yet concerning 2.0, however it's clear that some things need to be at least seriously considered and researched. Here follows a list in no particular order:
Documentation System. This is one of the things we know we're going to do as we've already started. The Grasshopper help system will need to be rewritten and a lot of help topics need to be typed up. We have a pretty good idea what it is we want to accomplish with the new help and how we're going to go about it.
Vocabulary. Along with new documentation we'll critically analyse the current terminology and vocabulary of Grasshopper. We'll probably come up with glossaries and style sheets. We want to use words that are —at best— self documenting and —at worst— non ambiguous.
SDK and core library cleanup/improvement. Grasshopper was the first large scale product I ever developed and a lot of mistakes were made in the SDK design. A lot of functions and classes have been marked obsolete over time and many operations are not properly bottlenecked. I also want to add a lot more events so it's easier for code to keep close tabs on what's going on at any given moment.
GUI platform. At the moment Grasshopper is pure .NET winforms using GDI+ for all the interface drawing. There are certain performance issues with using large GDI+ surfaces and certain limitations on what we can and cannot draw. We will be investigating other graphics pipelines such as WPF, OpenGL, DirectX, OpenTK and whatever else seems promising.
Multi-threading. It is clear that some components are embarrassingly parallel, and since almost every single laptop and desktop has at least 4 cores these days it would be a shame not to use them. We will investigate what it takes to implement multi-threading as a standard feature.
Large file support. Grasshopper becomes awkward to use when a document contains more than a hundred or so components. We need to both improve the interface to provide methods for layering or grouping sub-algorithms and also add ways to reduce memory and computational overhead.
--
David Rutten
david@mcneel.com
Poprad, Slovakia…