Grasshopper

algorithmic modeling for Rhino

Hi all,

I was wondering if there is a way to access the karamba.gha via python? Is there an API for karamba? Or another way to get structured information about an assembled karamba-model. 

I'm currently trying to make a code where I store all my model-info in a .Json file, to then be able to interpret this in multiple FEM-packages, but I'm having trouble adding Mesh-loads. By disassembling a model in grasshopper, a structural line model is not a problem, the mesh-load however is not specific at all. It just gives:

"Mesh-load: Load(x/y/z) [kN/m2]; global; LC[x]; Area:xx[m2]; Resultant:(x/y/z)[kN]"

Nothing about where the load is applied. How would I go about extracting this information?

Kind regards,

Merijn

Views: 330

Replies to This Discussion

Hi Merijn,

you can access the Karamba functionality via Python and IronPython. Both ways are described in the 'Karamba 1.1.0 Hacker's Essentials' (see http://www.karamba3d.com/download/hackers-essentials-2/?wpdmdl=4348...). The manual is not up to date, however you can use ILSpy to decompile 'karamba.gha' in order to see how it works. 

The MeshLoad-component is converted to point-loads on nodes and uniformly distributed loads on beams and trusses via the Assemble-component.

Using ILSpy you will see that there is a class 'Component_AssembleModel' and a class 'Component_AssembleModel_GUI'. The former performs the acutal task via the static method solve(), the latter provides the visual component. The easiest way to get the information from a MeshLoad would be to initiate the assemble process and then retrieve the load-data from the model.

Best,

Clemens

Hi Clemens,

Thanks a lot! as always!

Best,

Merijn

Hi Merijin,

I write here because I'd want to do your same process but passing from a .txt file.

I'm a very beginner of programming and I'm trying to use the GHPython component for write the model-info in a .txt file, but I don't understand how to do it.

I think the main problem is that I don't know how to get the informations. I downloaded the 'karamba_1_1_0_hackers_essentials' (linked above by Clemens) but in the Guide I don't find the python syntax.

For example I'd want to write in the GHPython component something that allow me to write for every node " 'Node' + str(ID) + str(XYZcoordinates)". I think I have to find a karamba function that gets the nodes coordinates, but I don't find it. I saw that there is a 'Displacement vector of the node' but I'm not able to call it.

I'm not sure, but I think that's the way that allow me to be able to get the informations and write it how I want.

I'm thinking wrong?

There is an easy way?

Cheers

Giovanni

Hi Giovanni,

the 'Node'-class possesses the public property 'pos' which returns the initial position of a node. The property 'ind' gives you the index of the node.

Best,

Clemens

Hi Clemens,

Thank you for the answer.

I searched 'pos' in the Guide and I find it in 'Fields' of 'Node Class'.

In the GHPyhton component after connecting 'Pt' from a 'Disassemble model' I write:

"import clr

clr.AddReferenceToFileAndPath("C:\Program Files (x86)\Rhinoceros 5\Plug-ins\Karamba.gha")

import Karamba.Nodes.Node as Node

print Node.pos"

but returns printed <field# pos on Node>.

How can I print that property correctly?

And an other question. I noticed that every class have 'Fields' and 'Properties'. They seems me quite similar, such as a kind of classes information.

What's the difference? I can get the information by 'Properties' like for the 'Fields'?

Sorry if the questions are too simple

Cheers

Giovanni

Hi Giovanni,

in the above code-snippet you seem to forget to input a node object.

Maybe it helps if you take a look at the 'Karamba 1.1.0 Hacker's Essentials' (see above).

For a basic introduction into Python please consult a text book or on-line resources (e.g. sourceforge).

Best,

Clemens

Hi Clemens,

you're right I forgot to input a node object, but however I don't understand how to use it. I tried in different ways.

As I said above I've already download the 'Karamba 1.1.0 Hacker's Essentials' but I don't find the python syntax in the 'Karamba110_HackersGuide' or samples of python scripting. There is only the example 'SimpleShellEso' but I can not figure out how to do it in my case.

I just asking how to get xyz coordinates of my model nodes.

So maybe I could understand how to use 'Fields' and 'Properties' of the classes for what I need.

Cheers

Giovanni

ok I finally understood

for node in inModel.nodes:
      print node.pos

I understood that there are some words not defined that work, now I'm beginning to do what I want and to work with 'Field' and 'Properties'.

Thanks anyway

Best

Giovanni

RSS

About

Translate

Search

Photos

  • Add Photos
  • View All

© 2019   Created by Scott Davidson.   Powered by

Badges  |  Report an Issue  |  Terms of Service