Ejemplo n.º 1
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)
        {
            IntPtr topoData     = IntPtr.Zero;
            bool   preview_mode = false;

            if (!DA.GetData(0, ref topoData))
            {
                return;
            }
            if (!DA.GetData(1, ref preview_mode))
            {
                return;
            }

            int n_part = TopoCreator.partNumber(topoData);

            if (preview_mode)
            {
                TopoCreator.preview(topoData);
            }
            else
            {
                TopoCreator.refresh(topoData);
            }

            List <Mesh> parts    = new List <Mesh>();
            List <Mesh> boundary = new List <Mesh>();

            for (int partID = 0; partID < n_part; partID++)
            {
                Rhino.Geometry.Mesh mesh = new Rhino.Geometry.Mesh();
                TopoCreator.getPartMesh(partID, mesh, topoData);
                if (TopoCreator.isBoundary(partID, topoData) == 1)
                {
                    boundary.Add(mesh);
                }
                else
                {
                    parts.Add(mesh);
                }
            }

            DA.SetDataList(0, parts);
            DA.SetDataList(1, boundary);
        }