/// <summary> /// This is the method that actually does the work. /// </summary> /// <param name="DA">The DA object can be used to retrieve data from input parameters and /// to store data in output parameters.</param> protected override void SolveInstance(IGH_DataAccess DA) { List <Mesh> parts = new List <Mesh>(); List <Mesh> brdies = new List <Mesh>(); bool runProgram = false; if (!DA.GetDataList(0, parts)) { return; } if (!DA.GetDataList(1, brdies)) { return; } if (!DA.GetData(2, ref runProgram)) { return; } if (runProgram) { IntPtr graphData = TopoCreator.initContactGraph(); for (int kd = 0; kd < parts.Count; kd++) { var mesh = parts[kd]; addToContactGraph(mesh, false, graphData); } for (int kd = 0; kd < brdies.Count; kd++) { var mesh = brdies[kd]; addToContactGraph(mesh, true, graphData); } result = (TopoCreator.testInterlocking(graphData) == 1); DA.SetData(0, result); TopoCreator.deleteContactGraph(graphData); } DA.SetData(0, result); return; }