public GH_GetterResult LoadFromSelection(out PointCloud pc) { var go = new GetObject(); go.GeometryFilter = Rhino.DocObjects.ObjectType.Point | Rhino.DocObjects.ObjectType.PointSet; if (go.GetMultiple(1, 0) == Rhino.Input.GetResult.Cancel) { pc = null; return(GH_GetterResult.cancel); } pc = new PointCloud(); for (int i = 0; i < go.ObjectCount; i++) { var obj = go.Object(i); var rhObj = obj.Object(); if (rhObj.ObjectType == ObjectType.Point) { var pt = obj.Point().Location; var col = rhObj.Attributes.ObjectColor; pc.Add(pt, col); } else if (rhObj.ObjectType == ObjectType.PointSet) { using (PointCloud cloud = obj.PointCloud()) { foreach (var item in cloud.AsEnumerable()) { pc.Add(item.Location, item.Normal, item.Color); } } } } return(GH_GetterResult.success); }