protected override void SolveInstance(IGH_DataAccess DA)
        {
            sSystem     ssys     = null;
            string      meshName = "";
            List <Mesh> ms       = new List <Mesh>();

            System.Drawing.Color col = System.Drawing.Color.Empty;


            if (!DA.GetData(0, ref ssys))
            {
                return;
            }
            if (!DA.GetData(1, ref meshName))
            {
                return;
            }
            if (!DA.GetDataList(2, ms))
            {
                return;
            }
            if (!DA.GetData(3, ref col))
            {
                return;
            }


            string          modelUnit = Rhino.RhinoDoc.ActiveDoc.ModelUnitSystem.ToString();
            sRhinoConverter rhcon     = new sRhinoConverter(modelUnit, "Meters");

            Mesh bm = new Mesh();

            foreach (Mesh m in ms)
            {
                Mesh ensuredM = rhcon.EnsureUnit(m) as Mesh;
                bm.Append(ensuredM);
            }
            bm.Vertices.CombineIdentical(false, false);

            for (int i = 0; i < bm.Vertices.Count; ++i)
            {
                bm.VertexColors.SetColor(i, col);
            }

            int           count     = 0;
            List <string> meshNames = new List <string>();

            foreach (sMesh sm in ssys.meshes)
            {
                if (sm.meshName == meshName)
                {
                    count++;
                }
                meshNames.Add(sm.meshName);
            }

            string mms = "Appended Meshes";

            if (count == 0)
            {
                sMesh sm = rhcon.TosMesh(bm);
                sm.opacity  = (double)(col.A) / (255.0);
                sm.meshName = meshName;

                ssys.meshes.Add(sm);
            }

            foreach (string mn in meshNames)
            {
                mms += "\n" + mn;
            }
            this.Message = mms;


            DA.SetData(0, ssys);
        }