On joining SkyCiv a few months ago I was keen to get my hands dirty with the API and start writing some code. Within a few weeks of starting, an opportunity arose to develop an integration with Hypar – “the next-generation platform for generating, designing and sharing building systems”.
Hypar immediately struck me as the perfect platform for early-stage concept design of buildings. If I could link SkyCiv’s powerful analysis and design capabilities with Hypar, Architects and Engineers could explore different design options, confirm their structural feasibility and measure their material economy, all in one live collaborative workflow.
Standing on the shoulders of giants
I didn’t want to have to write some code for the whole process, from start to finish. I wanted to zero in on the Engineering processes – building the model and running the analysis – and automate them. This is where the extensive range of functions available on the Hypar platform came in very useful. I could quickly mimic the Architect’s process and derive a structural framing system from it using a bunch of existing Hypar functions:
Based on the building envelope, size and floor height, these functions gave me a structural frame with some physical beam sizes, from which I could start thinking about how to generate the structural analysis model.
The nuts & bolts of creating a SkyCiv function on Hypar
Next I needed to know how to build a custom function on the Hypar platform. The principal programming language available on Hypar is C# – a lucky coincidence for me since I was already familiar with C#.
In terms of actually passing data and commands to Structural 3D via SkyCiv, I needed to set up a http request. Not a problem, since C# (like other popular languages) has baked in functionality for creating http requests.
💡 You can interface with the SkyCiv cloud API from any code that’s capable of making a http request
To create the analysis model of the building, I had to take the structural framing and make some assumptions about it. For example, I set all the members to use the largest steel I-section that would fit in the depth specified by the structural framing function.
Also, I set all of the members to be fully fixed, as well as the supports (this was pretty unrealistic, but I wanted to get the full workflow working, so I needed the model to be completely stable).
Based on these assumptions, I wrote some code to automatically generate the nodes, members, supports and loads, as well as instruct SkyCiv Structural 3D to run an analysis for me.
Finally I wrapped all this data up into the http request and sent it to the SkyCiv API.
Reflecting on the process
Building the solution confirmed some suspicions I had from the outset – that the bulk of the work is in generating the arrangement of nodes and beams, before we even get to calling the API. If you are looking to write your own solution against the SkyCiv API – keep this in mind.
Also, I had to bake a lot of engineering decisions (like the fixities of the members) into my generation of the model. It would be better to expose those choices to the user. This in fact is the essence of automating structural engineering processes – working out what the user really wants to control, and taking care of the heavy lifting (such as creating nodes and members) using programming code.
Eating my own dogfood
Another thing that struck me while writing code to call the API in a real application was this: I’m spending a lot of time creating a JSON file for the http request. Are our users struggling with this as well? Can I automate this somehow? Maybe it’s even been done before?
Luckily for me, my colleague Nilay had already built an extensive C# wrapper around the API, for use in the Grasshopper & Revit Integrations. I was able to grab what I needed from this and quickly build the first version of my Hypar function.
Soon we will package up this wrapper code into a consumable package, so that the team at SkyCiv, and you (the users) are all working from the same codebase. At that point, we will really be “eating our own dogfood“. Note: we already have packages for Python and NodeJS.
The finished result – alpha version of a concept design package on Hypar
Whilst still only an alpha version/proof-of-concept, with the SkyCiv Hypar function we can do some pretty great stuff.
First, we can automatically create the analysis model and send it to SkyCiv Structural 3D. All the nodes, members & supports are created for you. Loads are specified qualitatively (Low-Medium-High) and applied automatically. Once saved, we can open the model on the SkyCiv platform:
The model is stable and we can run analysis, as well as view all the usual results from the analysis, like member axial force:
We can automatically run analysis and bring results back, so a color map can be drawn in the Hypar platform, in this case indicating which members fail a deflection check:
For a proof-of-concept the Hypar-SkyCiv integration is looking pretty good. However, there’s a bunch of stuff still to come:
- Make it possible to create different structural systems, such as braced steel frames or concrete moment frames
- Work with the coming SkyCiv optimizer to find the most efficient sections for the members
- Quantify the cost and carbon impact of designs and offer a complete ‘optioneering’ workflow
- Derive wind loads (from the latitude/longitude) using the building location function in Hypar
- Many more!
If you’re excited by the possibility of concept design in your web browser, we’d love to hear from you. What would you like to see in the Hypar-SkyCiv link? What parts of the workflow are you most interested in automating? Which parts do you need more control over?
Interested in building your own solutions using the SkyCiv API?
If you’re an existing SkyCiv user, you’ll already have API credits and authentication information. If not, you can sign up for a Free 30 Day Trial to the SkyCiv API Account and you can start experimenting with the API right away!
Otherwise if you’re new to programming but keen to learn, check out our introduction to programming course on Udemy. It’s a great place to start!
API Manager - UK/Europe
MEng (Hons), PhD (Engineering)