algorithmic modeling for Rhino

Widget to select and instantiate components from the canvas. It uses an XML database to record the more frequent components and connections between components.
This allows selection using tabbed distribution, frequency of components/connections, frequency of parameters/connections and random components.

To use: alt + right click or dragging a wire + right click. To access the menu right click on inner circle.

I always wanted something like this to have a faster workflow. However, it is not much improvement as I expected, but it also requires getting used to this. Please note that the frequency components that appear depend of the xml database, so that with time your database will be closer to your really habits of components. However, you can register the components and connections of gh files from the This file also contains more details.

To install:
- Put the .gha and .xml files in the Components Folder:
-- File > Special Folders > Components Folder.
-- Or C:\Users\USER\AppData\Roaming\Grasshopper\Libraries
- Restart Rhino + Grasshopper.

AxonWidget.gha (v 0.2.2  | 13/09/2017)

AxonConnectivityDatabase.xml (requires Human plugin)

About AxonFile:

Perhaps I have done very confusing for someone. I wanted to put options to manipulate the database, but this is not necessary to use the widget.

Write connections from gh files in the Axon Database
This serves to read gh files and add that information (how many times a component is used and the connections between them) to the database. With this you can fill the database with your habits of use of components.

Reset Axon Database
This is to empty the database. Do not use if you do not want to lose the entire database. Without this registration, the widget does not work. This is intended for later to use WriteFromFile script with your own files, to have a database that collects your usage habits of components and connections between them.

Deserialize the top components of the Axon Database
This shows in human language most used components and their connections. It is only for the curious, or for those who need the information of the database for some reason.

Major changes of 0.2.1 release:

- Now when the widget is disabled, are not accessed at any time to the database, is completely isolated.

- Reduced runtime. Instantiate a component or create a connection and add it to the database took between 200 ~ 400 ms, now only takes between 2 ~ 10 ms!!. The database is only saved when you close a document, and not on any new record as before. I know, this was obvious, but really good improvement anyway.

- Bugs fixed.

Major changes of 0.2.2 release:

- Bug fixed: when the definition is very large instantiation took a long time.

Views: 4407


You need to be a member of Grasshopper to add comments!

Join Grasshopper

Comment by Abraham Yezioro on March 9, 2016 at 3:14am

Here you go:

System::Windows::Forms::Application::ThreadException event occured

SENDER: System.Threading.Thread

EXCEPTION: System.ArgumentNullException
MESSAGE: Value cannot be null.
Parameter name: image
SOURCE: System.Drawing
   at System.Drawing.Graphics.DrawImage(Image image, Int32 x, Int32 y, Int32 width, Int32 height)
   at System.Drawing.Bitmap..ctor(Image original, Int32 width, Int32 height)
   at System.Drawing.Bitmap..ctor(Image original, Size newSize)
   at AxonWidget.Axon.SetElementsByCategory()
   at AxonWidget.Axon.SetElements()
   at AxonWidget.Axon.set_IsActive(Boolean value)
   at AxonWidget.Axon.OnMouseDown(Object sender, MouseEventArgs e)
   at System.Windows.Forms.MouseEventHandler.Invoke(Object sender, MouseEventArgs e)
   at System.Windows.Forms.Control.OnMouseDown(MouseEventArgs e)
   at System.Windows.Forms.Control.WmMouseDown(Message& m, MouseButtons button, Int32 clicks)
   at System.Windows.Forms.Control.WndProc(Message& m)
   at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)



Comment by Daniel González Abalde on March 9, 2016 at 3:10am


When rhino crashing, before closing the warning message, generates two files on the desktop. One is a text file, open it and tell me what it says. With so little information I can not help you.

Comment by Abraham Yezioro on March 9, 2016 at 2:26am

Looks interesting Daniel. But it is crashing Rhino every time i right click the widget.

Any ideas?


Comment by Amir Soltani on March 8, 2016 at 2:31pm

Really cool Daniel.

Comment by Andy Chen on March 7, 2016 at 8:19pm
Comment by nardo chai on March 7, 2016 at 6:45pm

Should be turned off the memory load.

Comment by Sebastien Perrault on March 7, 2016 at 4:25pm

Thanks ! I had forgotten the trick...

Comment by Daniel González Abalde on March 7, 2016 at 3:07pm

Hi Sebastien,

in the rhino command line, type GrasshopperDeveloperSettings and enable/disable the COFF option and restart rhino + gh.

Let me know if this works.

Comment by Sebastien Perrault on March 7, 2016 at 3:01pm

Bonjour Daniel,

I have this error from WriteFromFile component :

1. [A]AxonWidget.Axon ne peut pas être converti en [B]AxonWidget.Axon. Le type A provient de 'AxonWidget, Version=, Culture=neutral, PublicKeyToken=null' dans le contexte 'LoadNeither' d'un tableau d'octets. Le type B provient de 'AxonWidget, Version=, Culture=neutral, PublicKeyToken=null' dans le contexte 'LoadFrom' à l'emplacement 'C:\USERS\SP\APPDATA\ROAMING\GRASSHOPPER\LIBRARIES\AXON\AxonWidget.gha'. (line: 114)

Could you help ?

Thank you !

Comment by Daniel González Abalde on March 7, 2016 at 1:48pm

Hola Rodolfo,

put the AxonWidget.gha and AxonConnectiviyDatabase.xml in the components folder, and restart rhino + gh. That's all. You can find the components folder from Gh interface | File > Special Folders > components Folder.

To know if it is allready installed, go to Display > Canvas Widgets, and check if there is one named Axon. It is a widget, so you do not find a new tab as with other plugins.

The Reset Axon Database is to delete the current database and create a new root in the xml (without the root, can not (de)serialize). For example, if you do not want to use the record of frequency of components and connections of MY files, and use yours, you can use ResetRoot script and then WriteFromFile script, to have a database closer to your habits of components and connections (assuming you use files created by you).

If you have deleted the content of the xml (using ResetRoot), you can re-download it and replace it in the components folder.

Sorry if I have not been clear enough.





  • Add Photos
  • View All

© 2021   Created by Scott Davidson.   Powered by

Badges  |  Report an Issue  |  Terms of Service