Controller
(by seghier)
*Grasshopper Controller Suite: Three tools to control Grasshopper from custom UIs: Eto (cross-platform), WPF (Windows only), and Web (browser-based on LAN).
Downloads:
187
Support Email


Grasshopper Controller Suite (Params >> Control)

This suite of components provides powerful methods for creating external, user-friendly remote controls for your Grasshopper definitions. Instead of interacting with the Grasshopper canvas directly, you can generate a separate window that exposes sliders, buttons, toggles, and other parameters, making your scripts accessible to non-technical users or simply easier to manage.

There are three distinct components, each built with a different technology and serving a specific purpose:

  1. Eto Controller (EtoCtrl): The cross-platform solution.
  2. WPF Controller (WpfCtrl): The native Windows solution.
  3. Web Controller Server (WebCtrlServer): The network-enabled, web-based solution.

Core Concept: How They Work

All three components operate on the same fundamental principle:

  1. You place standard Grasshopper interface objects (like sliders, toggles, panels, etc.) onto your canvas.
  2. You group these objects together using the standard Grasshopper Group feature (Ctrl+G).
  3. You give the group a unique Nickname.
  4. You feed the group's nickname into the controller component.
  5. The controller component finds all the supported interface objects within that group and generates a new, clean user interface in a separate window.
  6. Interacting with the controls in the new window directly modifies the values of the original Grasshopper objects and triggers a re-computation of the solution.

Supported Grasshopper Objects

All controllers can manage the following objects when placed inside a target group:

  • GH_NumberSlider: Creates a slider with a value input box.
  • GH_Panel: Creates a multi-line text box.
  • GH_ButtonObject: Creates a push-button.
  • GH_BooleanToggle: Creates a toggle switch/checkbox.
  • GH_ValueList: Creates a dropdown menu (ComboBox).
  • GH_ColourSwatch: Creates a color picker.
  • GalapagosGeneListObject: Creates an expandable group of sliders for the gene pool.

1. Eto Controller (EtoCtrl)

The Eto Controller is the most versatile component for multi-OS environments. It uses the Eto.Forms UI framework, which is the standard cross-platform framework for Rhino plugins and works seamlessly on both Windows and macOS.

Key Features

  • Cross-Platform: Works identically on Rhino for Windows and Rhino for Mac.
  • Native Look and Feel: The UI window uses the native operating system's controls, so it will look like a standard Windows application on Windows, and a standard macOS application on a Mac.
  • Simple and Reliable: Direct, in-process communication with Grasshopper makes it fast and stable.

When to Use It

  • When you need your Grasshopper script and its controller to work on both Windows and macOS.
  • When you are developing a tool for a team with mixed operating systems.
  • When you want a simple, no-fuss remote control for your local machine.

How to Use

  1. Place the Eto Controller component on the canvas.
  2. Create one or more Grasshopper groups containing the controls you want to expose.
  3. Give each group a unique Nickname.
  4. Connect a Panel containing the group nicknames to the G input of the controller.
  5. Click the button to open the Eto control window.
  6. Use the right-click context menu on the component to adjust the default Width and Height of the controller window.

2. WPF Controller (WpfCtrl)

The WPF Controller uses Windows Presentation Foundation (WPF), a powerful Microsoft framework for creating rich user interfaces on Windows. This allows for a highly-styled, custom UI that is consistent across all Windows machines.

Key Features

  • Windows Only: This component will not work on Rhino for Mac.
  • Highly Stylable: The UI is built with WPF, allowing for custom themes (like the included Dark/Light mode), animations, and more complex control layouts.
  • Rich UI Controls: Leverages modern WPF controls for a polished user experience.

When to Use It

  • When you are developing exclusively for a Windows environment.
  • When you want a more visually customized and branded controller window.
  • When you need a local remote control and do not require network access.

How to Use

  1. Place the WPF Controller component on the canvas.
  2. Follow the same grouping and naming procedure as the Eto Controller.
  3. Connect a Panel with the group nicknames to the G input.
  4. Click the button to launch the WPF control window.
  5. The window has a built-in theme toggle (️/) and a refresh button.
  6. Use the right-click context menu on the component to adjust the Width and Height of the window.

3. Web Controller Server (WebCtrlServer)

This is the most advanced and powerful controller. Instead of creating a native desktop application, it starts a local web server. The user interface is a web page (HTML, CSS, JavaScript) that can be viewed in a local pop-up window (using WebView2) or in any web browser on your network.

Key Features

  • Windows Only: The component itself requires Windows.
  • Network Accessible: Control your Grasshopper script from another computer, a tablet, or a smartphone connected to the same network.
  • Administrator Privileges Required: To host the server on your network IP address (and not just localhost), Rhino must be run as an administrator. This is a security requirement by Windows to allow an application to listen for network-wide requests.
  • Web-Based UI: The interface is built with standard web technologies, making it universally compatible with any modern browser.
  • On-Canvas Controls: This component features buttons and toggles directly on the component in the Grasshopper canvas for quick access to server functions.
  • Informative Output: The S output provides the server status, the network URL, and the state of the controller window.

When to Use It

  • When you need to control your Grasshopper script remotely from another device.
  • For presentations where a user can interact with the script from a tablet.
  • When you want a UI that is completely decoupled from the Rhino process.
  • When you are working exclusively on Windows and can run Rhino as an administrator.

How to Use

  1. IMPORTANT: Start Rhino by right-clicking its icon and selecting "Run as administrator".
  2. Place the Web Controller Server component on the canvas.
  3. Set up your groups and nicknames as with the other controllers and connect them to the G input.
  4. Use the on-canvas controls:
  • Create: Launches the local WebView2 window.
  • Show/Hide: Toggles the visibility of the local window.
  • Start/Stop: Starts or stops the underlying web server.
  • Restart: Restarts the server, useful after making changes.
  • Port: Allows you to change the server port (default is 8082).
  • Link: Opens the controller URL in your default web browser (e.g., http://127.0.0.1:8082/)

 

To access from another device, check the S output for the network URL (e.g., http://192.168.1.100:8082/) and enter it into the browser of your phone or tablet.

Important - Firewall Configuration: If you cannot connect from another device, it is likely that your Windows Defender Firewall is blocking the incoming request. You must create a new firewall rule to allow the specific TCP port the server is using.

To open the port:

  1. Open "Windows Defender Firewall with Advanced Security" from the Windows Start Menu.
  2. In the left pane, click on "Inbound Rules".
  3. In the right pane, click on "New Rule...".
  4. Select "Port" and click Next.
  5. Select "TCP" and then "Specific local ports". In the text box, enter the port number that the server is using (check the S output of the component, e.g., 8082). Click Next.
  6. Select "Allow the connection" and click Next.
  7. Choose when the rule applies. For a local network, checking "Private" and "Domain" is usually sufficient. Click Next.
  8. Give the rule a descriptive name (e.g., "Grashhopper Web Controller") and click Finish.

Once this rule is created, your other devices on the same network should be able to access the controller's web page.

Troubleshooting the Web Controller Server

"Server failed to start" or "Access Denied": You did not run Rhino as an administrator. Close Rhino and restart it with administrator privileges.

"The port is already in use": Another application is using the port. Change the port number using the on-canvas NumericUpDown or the right-click menu.

Cannot connect from another device: Ensure both devices are on the same Wi-Fi/local network and that your Windows Firewall is not blocking incoming connections on the specified port for the Rhino application.

Icons used:

  • License Type:
Cost:
Downloads
Title
Description
Platform
 
Eto Controller
2025-06-17
Grasshopper for Rhino 7 for Win
Grasshopper for Rhino 8 for Win
Grasshopper for Rhino 7 Mac
Grasshopper for Rhino 8 Mac
Wpf Controller
2025-06-17
Grasshopper for Rhino 7 for Win
Grasshopper for Rhino 8 for Win
Web Controller
2025-06-18
Grasshopper for Rhino 7 for Win
Grasshopper for Rhino 8 for Win
GHControllerTab
2025-07-24
Grasshopper for Rhino 7 for Win
Reviews