コード例 #1
0
ファイル: GH_DrawContacts.cs プロジェクト: kevlund/TopoRhino
        /// <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>();

            if (!DA.GetDataList(0, parts))
            {
                return;
            }
            DA.GetDataList(1, brdies);

            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);
            }

            Rhino.Geometry.Mesh rhmesh = new Rhino.Geometry.Mesh();
            TopoCreator.getContactMesh(rhmesh, graphData);
            DA.SetData(0, rhmesh);

            TopoCreator.deleteContactGraph(graphData);

            return;
        }
コード例 #2
0
        /// <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;
        }