algorithmic modeling for Rhino
I would like to sort objects by type. (Sorting only meshes and lines)
It works in c# component in grasshopper, when type hint is GeometryBase.
But when I try to input these objects in visual studio:
pManager.AddGeometryParameter("Geo", "G", "GeometryBase", GH_ParamAccess.list);
I get an error already at input part of code:
1. Invalid cast: Line » GeometryBase
I attached printscreens, gh, and code from visual studio.
Could you please give me an advice how to solve it?
Tags:
Rhino.Geometry.Line is a high-performance struct that does not partake in any of the interface/class hierarchies in RhinoCommon. If you want a line that is a type of GeometryBase you need to create a LineCurve class instead.
I thought to input a list System.Objects (nulls,meshes, lines) then.
It was just interested that C# in grasshopper converts line to lineCurve using type hint, but visual studio not.
But how to check the type of the object then? As with GeometryBase I just use ObjectType function.
This seems to work:
String t = G.GetType().ToString();
if(t == "Rhino.Geometry.Line"){
...
}
A more efficient way is to compare the Type objects directly rather than their string presentations. This can be beneficial if you are processing a lot of data. To get a Type object you can use the typeof operator as follow
if (G.GetType() == typeof(Rhino.Geometry.Line))
...
I much prefer the is and as keywords (though as won't work on structs, you'll need to cast in that case):
object someGeometry = ...;
if (someGeometry is Mesh)
Mesh mesh = someGeometry as Mesh;
else if (someGeometry is Line)
Line line = (Line)someGeometry;
The as keyword never throws exceptions and instead assigns null to the target is the conversion is not possible, which is why it cannot be used on structs.
Welcome to
Grasshopper
Added by Parametric House 0 Comments 0 Likes
Added by Parametric House 0 Comments 0 Likes
Added by Parametric House 0 Comments 0 Likes
Added by Parametric House 0 Comments 0 Likes
Added by Parametric House 0 Comments 0 Likes
© 2024 Created by Scott Davidson. Powered by