Hey y’all, excited to finally have some time to dig more into Speckle!
I’m starting in on scoping out building a Fusion 360 connector, mostly to use for my businesses that do a lot of BIM → Fabrication projects for AEC.
Fusion has a decent Python API, and so that’s where I’m starting. Any and all advice and info would be appreciated!
Going to start with a general outline and plan, then look at the bits I can do vs. what I’ll probably need to hire people to help with instead. If you know Fusion’s API at all, and do freelance work, I’d love to talk with you.
As you work on your planning, we’re here to support you.
Thanks! I’m sure to have some questions, I’m starting by parsing the Blender Connector first, as it’s also Python, and trying to understand more about what it will take to make one for Fusion.
There isn’t anything in it yet, but here’s where I’ll be pushing code as I try to test stuff: GitHub - BecauseWeCan/speckle-fusion: A Speckle Connector for Fusion 360
Because all softwares and their APIs, have idiosyncrasies - blender included - keep the qgis connector in sight as well. Also python based it uses Qt for its interface.
A connector will have 3 major components:
UI - sometimes of your choosing, sometimes dictated.
Registration - how Fusion adopts your plug-in, usually very standardised boilerplate
Conversions - what the api allows you to do.
As you are motivated to do this, what is your intended workflow to support? It maybe, for your basic starter project POC, that you concentrate on the minimum you need to achieve that rather than scoping the whole thing.
E.g. you want to share a fusion project as a client viewable thing
Registration - might be a minimum no matter what
Conversion - What is the basic content of a Speckle commit to be visible in the viewer
UI - A text box for a stream url and a send button.
specklepy can do all the heavy lifting with finding local accounts, generating commits and the sending mechanics. I’m unfamiliar with fusion, perhaps there is no registration and UI necessary and there is a scripting environment. Either way, keep a simple workflow to achieve in mind. The rest can follow.
Thanks for the repo link, you are free to be as private or public, closed or open, commercial or free as you like, but consider early what your approach and licence might be - other similarly motivated fusion familiar contributors may not need hiring!
Great to know, I’ll look at the QGIS connector as well.
Intended workflow (for my use) is to make an easier / better way to take part of a Revit, Rhino, or Blender “design model” into Fusion to turn it into a “fabrication model” for production via industrial-scale CNC & 3D printing. So it’s pretty much all conversion of elements from Speckle into editable models in Fusion.
Thankfully Fusion has a Python API already that allows one to make various plug-ins with UI’s and/or icons on it’s existing toolbars, and that API also looks like it allows for full creation of various geometry elements, and Fusion is generally really good at dealing with pretty random imported geometry that you need to edit / further detail for fabrication.
So my first workable test will probably be just taking a very simple BRep from Speckle into Fusion and going from there.
I’m fully thinking this would be something open to all Fusion users, as it’s really just more of a tool I’d like to make our core service better / faster. For example, it would be awesome for us to be able to interoperate with larger AECO firms on a Speckle level when we’re tasked with helping them figure out how to produce the more custom, creative, and complex elements of their designs!
Just thinking we might need to hire some folks because there’s likely to be some heavy lifts along the way that I personally won’t have time or expertise to done alone, and just want to be realistic about this project.
Nice to see you around these parts! I should open up slack more…
The above might be a massive PITA re geometry kernels loving each other so much. To prepare you a bit, we’re quite pragmatic around our breps:
- our source of breps, currently, is exclusively Rhino
- a subset of them can be converted to real ones in the likes of Revit, otherwise we fall back on meshes
If you find any wizards that want to take up this Brep challenge and have a pragmatic approach (ie, we don’t want to produce another kernel), more than happy to join up on this!
Shoot, yeah, also it might be a big PITA because if I’m reading the Speckle docs right, it looks like the awesome ‘Objects Kit’ stuff is just C# .NET, and that the Python API stuffs doesn’t have it (yet)?
Thanks for the head’s up around Breps! This is probably a bigger lift than I’ll be able to do now, but I’ll keep researching to confirm that.
Might honestly be easier to do this with Inventor then instead, for Fusion only has Python or C++ as API options, and Inventor does have C#.
Specklepy doesn’t yet include variation Object Kits support kits, but if it helps, you shouldn’t need it to get going.
The Default Kit is all that is presently supported by most Connectors, and there is near parity between speckle-sharp objects for the Default and specklepy objects right now - increasingly so, thanks to @gjedlicska.
Showing some support here! I’d love to see a Fusion 360 connector, would be awesome to send files straight to blender for rendering. (And I’m sure the whole 360 community would love that too ;).) Goodluck Jeffrey!
While you are correct, that the
Objects Kit as in hot swappable kit support only exists in the C# SDK,
specklepy does have a relatively on par experience of what our default Objects Kit provides in the dotnet ecosystem.
So there shouldn’t be a major technical blocker to what you are trying to do and if there are any quirks that cause issues I can help you smoothing them out.
(One of) our goal is to provide a seamless feature par experience across our SDKs to empower you building on top of them.
Awesome to know!
Now it looks like the next thing is to dig more into the Fusion Python API side of things to see how well supported topology/geometry creation is therein, and how that might work with data coming from Speckle.