algorithmic modeling for Rhino
Hi everyone,
I am trying to script Karamba in IronPython with GhPython. New to it. I am having a few issues starting with this one:
I cannot find the way to output the correct Karamba type. The consistent error I get when calling Karamba via node-in-code or via the Karamba Assembly:
Data conversion failed from Goo to Element
Data conversion failed from Goo to Model
and so on.
Attached is a file comparing an IronPython attempt to translate the Karamba GH component MeshToShell. Note: To run the script, karamba.gha should be located in the same folder.
How can I unwrap Goo and output the correct Karamba type?
Also, I could not find yet good examples of Karamba implementations in IronPython besides the one included in the Hackers Guide 1.1.0 -which does not go through all the steps needed for a simple analysis-. It would be great to know if there is any limitation that I should be aware of while trying to script Karamba this way.
Thank you!
Inés
Tags:
I wonder if Karamba.Utilities.ToGH or FromGH can help somehow? I gave it a try with no luck:
import clr
clr.AddReferenceToFile("karamba.gha")
import Karamba.Elements as kElements
import Karamba.Models as kModels
import Karamba.Utilities as kUtil
elemShellAssembly = kElements.GrassShell(mesh)
listElem = []
listElem.append(elemShellAssembly)
print type(listElem)
print type(listElem[0])
newElem = kUtil.ToGH.Values(listElem)
Which raises this exception:
<type 'list'>
<type 'GrassShell'>
Runtime error (ArgumentTypeException): expected List[Curve], got list
Traceback:
line 23, in script
Which brings 2 more questions:
- Is this exception a miscommunication between C# List and IronPython list?
- Since .ToGH allows .Values(List<GrassShell>), why it looks for a List[Curve]?
Lost here. Any hint would be greatly appreciated!!
Inés
File!
Dear Inés,
sorry for my late reply - I was on holiday.
One has to wrap the 'GrassShell'-object in a Grasshopper wrapper object - 'GH_Element' in this case (see attached definition).
For each Karamba object which can float around in a GH definition there is a corresponding GH_... object.
You can use most Karamba components directly in your code: the GUI-components are named e.g. 'Component_MeshToShell_GUI'. The work is done in static methods - e.g. 'public static void solve(List<Point3d> in_nodes, List<Mesh> in_meshes, double limit_dist, List<String> in_ids, List<Color> in_colours, out List<Point3d> out_points, out List<GrassShell> out_shells, out String info)' of the class 'Component_MeshToShell'.
The C# part of Karamba can be decompiled using e.g. ILSpy (which is free). With this tool you can see how the Karamba components perform their work.
Best,
Clemens
Karamba.Utilities.ToGH is used to create the GH-wrappers about the items of a list, FromGH removes them (see attached file).
Best,
Clemens
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