Developing free plugin for the AEC Industry - Need Help

Hi everyone I’m Keshava Narayan, an architect by education.

I am trying to build some open source / free plugins for Rhino which would be useful for the AEC industry. I’ve tried to not complicate it much by mostly building off python as we are using this currently as an internal tool.

It’s very difficult to sell software in AEC, so will keep this entirely for free for everyone with maybe GPLv3.

Here is the link of the features I have built so far - Overview | Spacio Techtonics

Do let me know if any of you are interested in building this with me and can contribute in any way - not necessarily with code btw.

Hi @keshavanarayan82

FYI the links on that page return 404

I am trying to build some open source / free plugins

Sounds great. Have you got a link to the source code repos? I can’t seem to find one, just dead links to markdown documents, and a subscription form for a wait list.

Also, do you have users or stakeholders, who are asking for these plug-ins and features by the way? Have you or they reviewed all the existing plug-ins for the AEC industry, e.g. on food4rhino?

For Grasshopper Python plug-ins, I recommend using this framework too: GitHub - compas-dev/compas-actions.ghpython_components: Trying to make Grasshopper development version-control friendlier since 1337. · GitHub

GitHub - SPACIO-TECHTONICS/rhino-plugins · GitHub - github
Overview | Spacio Techtonics - docs

I don’t know who or what wrote the code, but it could use some tests, or a code quality tool running on it, to catch basic indentation issues, e.g.

Lol yep. It was mostly internal and asked help from claude to make a github repo out of it.
Thanks for the hint. Do you know any code quality libraries I could use?

I’ve mostly been doing this single handedly for internal use.

There are so many syntax errors in there, I just find it hard to believe all those files have ever been run even once (without ending in an error).

Anyway you can’t go wrong by installing uv. Many other code quality tools are available, but I like Ruff.

Then for example:

git clone https://github.com/SPACIO-TECHTONICS/rhino-plugins
cd rhino-plugins

Then uvx ruff check . > ruff_errors.txt generates the attached file. e.g.

invalid-syntax: Expected an indented block after function definition
  --> Roebuck\knaddContructionLine_cmd.py:13:1
   |
13 | print("Executing " + __commandname__)
   | ^^^^^
14 |
15 |     point_a = rs.GetPoint("Pick First Point")
   |

invalid-syntax: Unexpected indentation
  --> Roebuck\knaddContructionLine_cmd.py:15:1
   |
13 | print("Executing " + __commandname__)
14 |
15 |     point_a = rs.GetPoint("Pick First Point")
   | ^^^^
16 |     if point_a:
17 |         addConstructionLine(point_a)
   |

invalid-syntax: Expected a statement
  --> Roebuck\knaddContructionLine_cmd.py:19:1
   |
17 |         addConstructionLine(point_a)
18 |
19 | def addConstructionLine(point_a):
   | ^
20 |     line_color_1 = System.Drawing.Color.FromArgb(200,200,200)
21 |     line_color_2 = System.Drawing.Color.FromArgb(255,0,0)
   |

Found 235 errors.
No fixes available (9 hidden fixes can be enabled with the `--unsafe-fixes` option).

ruff_errors.txt (68.8 KB)

If you used any of Rhino and GHPython’s ‘magic’ variables (e.g. ghdoc) then in the repo I would also run uv init and added:

pyproject.toml

[tool.ruff.lint]
builtins = ["ghdoc"]

But I’m not sure if that’s the latest setting and I didn’t spot anything that needed it so far, other than Python 2’s reload, which can be (and perhaps should be) imported from importlib anyway.