public static SpeckleObject fromBrep(Brep o, bool getEncoded, bool getAbstract) { var encodedObj = "RH:" + SpeckleConverter.getBase64(o); var ms = getMeshFromBrep(o); Rhino.Geometry.VolumeMassProperties volumeProps = Rhino.Geometry.VolumeMassProperties.Compute(o); Rhino.Geometry.AreaMassProperties areaProps = Rhino.Geometry.AreaMassProperties.Compute(o); SpeckleObject obj = new SpeckleObject(); obj.value = new ExpandoObject(); obj.properties = new ExpandoObject(); obj.type = "Brep"; obj.hash = "Brep." + SpeckleConverter.getHash(encodedObj); obj.encodedValue = getEncoded ? encodedObj : ""; obj.value.vertices = ms.Vertices; obj.value.faces = ms.Faces; obj.value.colors = ms.VertexColors; obj.properties.volume = volumeProps.Volume; obj.properties.area = areaProps.Area; obj.properties.volumeCentroid = fromPoint(volumeProps.Centroid); obj.properties.areaCentroid = fromPoint(areaProps.Centroid); return(obj); }
public static SpeckleObject fromMesh(Mesh o) { var encodedObj = "RH:" + SpeckleConverter.getBase64(o); Rhino.Geometry.VolumeMassProperties volumeProps = Rhino.Geometry.VolumeMassProperties.Compute(o); Rhino.Geometry.AreaMassProperties areaProps = Rhino.Geometry.AreaMassProperties.Compute(o); SpeckleObject obj = new SpeckleObject(); obj.value = new ExpandoObject(); obj.properties = new ExpandoObject(); obj.type = "Mesh"; obj.hash = "Mesh." + SpeckleConverter.getHash(encodedObj); obj.value.vertices = o.Vertices.Select(pt => fromPoint(pt)); obj.value.faces = o.Faces; obj.value.colors = o.VertexColors.Select(c => c.ToArgb()); //o.UserData obj.properties.volume = volumeProps.Volume; obj.properties.area = areaProps.Area; obj.properties.volumeCentroid = fromPoint(volumeProps.Centroid); obj.properties.areaCentroid = fromPoint(areaProps.Centroid); return(obj); }
public static SpeckleObject fromPolyline(Polyline poly) { var encodedObj = "RH:" + SpeckleConverter.getBase64(poly.ToNurbsCurve()); Rhino.Geometry.AreaMassProperties areaProps = Rhino.Geometry.AreaMassProperties.Compute(poly.ToNurbsCurve()); SpeckleObject obj = new SpeckleObject(); obj.value = new ExpandoObject(); obj.properties = new ExpandoObject(); obj.type = "Polyline"; obj.hash = "Polyline." + SpeckleConverter.getHash(encodedObj); obj.value = poly.Select(pt => fromPoint(pt)); obj.properties.length = poly.Length; obj.properties.area = areaProps != null ? areaProps.Area : 0; obj.properties.areaCentroid = areaProps != null?fromPoint(areaProps.Centroid) : null; return(obj); }
public static SpeckleObject fromCurve(Curve o, bool getEncoded, bool getAbstract) { var encodedObj = "RH:" + SpeckleConverter.getBase64(o); Rhino.Geometry.AreaMassProperties areaProps = Rhino.Geometry.AreaMassProperties.Compute(o); var polyCurve = o.ToPolyline(0, 1, 0, 0, 0, 0.1, 0, 0, true); Polyline poly; polyCurve.TryGetPolyline(out poly); SpeckleObject obj = new SpeckleObject(); obj.value = new ExpandoObject(); obj.properties = new ExpandoObject(); obj.type = "Curve"; obj.hash = "Curve." + SpeckleConverter.getHash(encodedObj); obj.value = fromPolyline(poly); obj.encodedValue = getEncoded ? encodedObj : ""; obj.properties.length = o.GetLength(); obj.properties.area = areaProps != null ? areaProps.Area : 0; obj.properties.areaCentroid = areaProps != null?fromPoint(areaProps.Centroid) : null; return(obj); }