• Stars
    star
    111
  • Rank 313,092 (Top 7 %)
  • Language
    C#
  • License
    GNU General Publi...
  • Created over 4 years ago
  • Updated almost 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Package for building web-based User Interfaces (UI) in Rhino Grasshopper.

Grasshopper Web UI

Generic badge GitHub tag (latest by date) GitHub

GitHub last commit GitHub issues GitHub closed issues GitHub contributors

Prototype for building a Grasshopper interface using native web components.

Development

  1. Clone locally
  2. Re-link and restore dependencies
  3. Build (everything shoudl copy to the Grasshopper/Libraries location)
  4. Open the ServeInterface.gh

Usage

Build/Use

If you need/want to make modifications/contributions to this package, please refer to the Development section above.

If you just want to use the package, please refer to the Releases section of GitHub. From there, download the latest release, unzip the file, and paste the contents into %appdata%\Grasshopper\Libraries.

Hard-Coded UI

The simplest way to use this package is as a dedicated input-receiver by supplying a hard-coded HTML file. This would allow you to read user inputs, but not add any information to the interface. It would require that you or someone else on your team has basic web-coding skills, as they're needed to write the interface. Samples of these kinds of interfaces can be found in the Web UI folder.

After building the .gha from source, you can open the Grasshopper File ServeInterface.gh for testing of this workflow.

Links Image
Vue.js UI - ServeInterface.gh Vue.js UI
Bootstrap HTML UI - ServeInterface.gh Bootstrap UI
Vanilla HTML UI - SampleScriptHardcoded.gh Vanilla HTML UI

Grasshopper-Created UI

This method of using the package is closer to the familiar Grasshopper UI paradigm, as established by Andrew Heumann in Human UI. The goal is that the user can use Grasshopper to build a fully-functional HTML-based interface without needing to write any kind of textual code. This is still a Work-In-Progress and will remain that way for quite some time as there are very many elements that must be supported.

Grasshopper Definition Image
Custom GH UI Custom GH UI
Advanced Custom GH UI Custom GH UI

Support Map

Currently, the following UI (HTML) input components are supported in the specified contexts:

Component Read Value from HTML Create in GH Set Value from GH Output Set Label/Props from GH Output
Slider Yes Yes Yes No
Button Yes Yes No (Simulate Click) No
Text Input Yes Yes Yes No
Radio Button Yes Yes Yes No
Check Box Yes Yes Yes No
Color Yes Yes Yes No
Date Yes Yes Yes No
Time Yes Yes Yes No
Week Yes No TBD No
File Maybe No Maybe No
Text Label N/A Yes Yes N/A

Tentative Roadmap

Abstract

Human UI from Andrew Heumann has been a powerful force in the industry over the last X years - it helps us share and democratize computational know-how and deliver it to our colleagues who may not be as techincally inclined. I think it's time for the next step in this journey. With the web becoming the standard for app development, interaction design, and so much more - I think it makes sense to use it as the backbone for the project.

Roadmap

  • Ensure a Chromium-based execution environment.
  • Read values from the DOM.
  • Account for most common input-type items that may be in the DOM/needed by users.
  • Add elements/outputs to the DOM.
  • Create components to build an interface/DOM using Grasshopper only (no web dev knowledge).

Known Issues

Credits

Enormous thanks to everyone who has contributed in any way! I've tried to include everyone here, but I may have missed someone. If that's the case, I apologize :) - please reach out anytime.

More Repositories

1

awesome-bim

A curated collection of useful BIM (Building Information Modeling) resources, libraries, software and frameworks for AEC research, application development, data analysis, and general computation.
134
star
2

revit-wpf-template

Template for a Revit add-in using WPF and executing valid external commands within the Revit API context.
C#
129
star
3

vuetify-component-lib-template

Template for creating a component library/design system using Vue.js and Vuetify.js.
JavaScript
46
star
4

thesaurus

TT Hackathon 2018 - Autocomplete for Visual Programming Nodes
C#
25
star
5

py-design

Collection of Python tools and scripts for Grasshopper, Rhino, Dynamo, and pyRevit.
Python
13
star
6

c-sharp-design-patterns

Collection of various Object Oriented design patterns implemented in C#.
C#
12
star
7

urban-insights-frontend

Winning AEC Hackathon 2019 Silicon Valley Project. AR/VR Application for visualizing proposed buildings on their sites and overlaying environmental and zoning analysis.
Vue
10
star
8

stroll-poc

Javascript library for finding the optimal walking path to be as exposed to nature as possible.
JavaScript
6
star
9

algos

Low-level JavaScript algorithms for data processing/manipulation as shorthand for everyday use in frontend & backend code.
JavaScript
5
star
10

urban-insights-backend

Backend for Urban Insights App.
Python
5
star
11

data-vue

A collection of customizable, interactive, and reusable data visualization components built using D3 and Vue.js
Vue
5
star
12

quant-quarry

Set of tools/examples/research for market/security analysis built around Zipline/Quantopian platforms.
Jupyter Notebook
4
star
13

vue-composition-api-template

Vue.js 3.0 starter template & examples using the (to be released) Composition API.
JavaScript
4
star
14

vue-template

Vue.js 3.0 starter template & examples using the traditional API.
Vue
4
star
15

daylight-gan

Real-time daylight prediction using Rhinoceros3D, Grasshopper, Ladybug Tools and pyTorch
Python
4
star
16

stenotype

Helper/extension wrapper classes and methods for writing modular Revit API code, faster.
C#
3
star
17

vue-component-lib-template

Template for creating a component library/design system using Vue.js.
JavaScript
3
star
18

daylight-gan-app

Frontend for the Daylight GAN project.
Vue
2
star
19

ionic-threejs-template

Template for integrating three.js with a Typescript framework like Ionic. Includes local file referencing/loading and loading external three.js modules.
TypeScript
2
star
20

mesh-simplify

Experiments with mesh simplification.
C++
1
star
21

atom-ifc

Syntax highlighting for IFC in Atom.
CoffeeScript
1
star
22

obsidian

Lightweight design system for Vue.js based on expressive iteration using a minimal palette.
JavaScript
1
star
23

metavue

Library for charting the relationships between Vue.js components in an application structure.
JavaScript
1
star
24

daylight-gan-tfjs

Tensorflow.js implementation of the Daylight GAN project.
Python
1
star
25

vue-d3-bar-chart

Reusable, reactive, animated bar chart using D3 + Vue.js. Written in idiomatic Vue, rather than D3 syntax.
Vue
1
star
26

nuxt-template

Starter template for Nuxt.js projects.
Vue
1
star