I have coded an algorithm using Grasshopper but now I need to launch it with different parameters from a C++ software “in the background” (typically the parameters would be a boolean to launch the algorithm and a string with the path to an .obj file).
I have been searching for a way to do that. But I ended with complicated IPC communication in C++ and C# like a shared memory using file mapping (and I’m not even sure I’ll have access to the right libs on the C# scripting in Grasshopper…).
Is there a way to achieve what i want in an easy way that i didn’t see ?
Typically the way to communicate between C# and C++ is to write some exported C functions into your C++ library and then pInvoke into them from C#. This is how RhinoCommon communicates with the Rhino C++ SDK.
By “call” it often means just passing variables from C# to C++ and then getting output back.
PInvoke allows you to call functions from C++ .
Wrapping is a tedious process, but there are number of plugins already written that way.
I did one for wrapping pointcloud methods: Cockroach | Food4Rhino
There is also example from Dale, called Moose on Github.
What I really miss is how to pass nested arrays, since making flat arrays from nested ones are always a bit slow process.
For more complex things you can use CLI.
In all cases you are at the border of internet so allocate time implementing these workflows.