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