I would like to add my 2 cents.
I'm currently using Dynamo at work, and It's a good and fast way not only to construct geometries, but also to interact with i.e. Excel, or reading CSV files outputted from other softwares.
It also has a custom Python script node, powered by IronPython, so you can easily interface your workflow with .NET API (but you still use pywin32 to connect to COM API like I do - I never liked .NET
). It's also easy to turn your python script and/or a group of nodes into a custom node that you can package and offer to the community. I found it less intimidating for not-so-skilled coders like me. Still colleagues with no coding skills/logic formation find it confusing at first.
Another great feature/package you can find in dynamo (optimo) and grasshopper (galapagos) is the genetic algorithm that allows you to find solutions to complex problems via automatic reiterations. It's been used In conjunction with energy analysis tools (i.e. radiance via a grasshopper plugin) to study the best form and placement for windows, shades and PV panels (or integrated semi transparent PV).
I imagine this could/will be done with FreeCAD Arch workbench, some kind of visual programming and some OpenStudio/EnergyPlus nodes.