/// <summary> /// Create Edge (Line or Arc2) from Dynamo Line or Arc. /// Used for bar definition. /// </summary> public static Geometry.Edge FromDynamoLineOrArc2(Autodesk.DesignScript.Geometry.Curve obj) { // if polyline or similar. Autodesk.DesignScript.Geometry.Geometry[] items = obj.Explode(); if (items.Length != 1) { throw new System.ArgumentException("Exploded Curve should only have one item."); } Autodesk.DesignScript.Geometry.Geometry item = items[0]; // if Arc if (item.GetType() == typeof(Autodesk.DesignScript.Geometry.Arc)) { return(Edge.FromDynamoArc2((Autodesk.DesignScript.Geometry.Arc)item)); } // if Line else if (item.GetType() == typeof(Autodesk.DesignScript.Geometry.Line)) { return(Edge.FromDynamoLine((Autodesk.DesignScript.Geometry.Line)item)); } else { throw new System.ArgumentException($"Curve type: {obj.GetType()}, is not Line or Arc."); } }
public void Tessellate(IRenderPackage package, TessellationParameters parameters) { package.RequiresPerVertexColoration = true; Autodesk.DesignScript.Geometry.Geometry geometry = bbox.ToCuboid(); byte[] color = new byte[] { 0, 200, 200, 50 }; // As you add more data to the render package, you need // to keep track of the index where this coloration will // start from. geometry.Tessellate(package, parameters); if (package.MeshVertexCount > 0) { package.ApplyMeshVertexColors(CreateColorByteArrayOfSize(package.MeshVertexCount, color[0], color[1], color[2], color[3])); } geometry.Dispose(); }
/// <summary> /// Convert a Dynamo Curve to Edge. /// </summary> /// <param name="obj"></param> public static Geometry.Edge FromDynamo(Autodesk.DesignScript.Geometry.Curve obj) { // if polyline or similar. Autodesk.DesignScript.Geometry.Geometry[] items = obj.Explode(); if (items.Length != 1) { throw new System.ArgumentException("Exploded Curve should only have one item."); } Autodesk.DesignScript.Geometry.Geometry item = items[0]; // if Arc if (item.GetType() == typeof(Autodesk.DesignScript.Geometry.Arc)) { // output is a general purpose Edge return(Edge.FromDynamoArc1((Autodesk.DesignScript.Geometry.Arc)item)); } // if Circle else if (item.GetType() == typeof(Autodesk.DesignScript.Geometry.Circle)) { return(Edge.FromDynamoCircle((Autodesk.DesignScript.Geometry.Circle)item)); } // if Line else if (item.GetType() == typeof(Autodesk.DesignScript.Geometry.Line)) { return(Edge.FromDynamoLine((Autodesk.DesignScript.Geometry.Line)item)); } // if NurbsCurve else if (item.GetType() == typeof(Autodesk.DesignScript.Geometry.NurbsCurve)) { return(Edge.FromDynamoNurbsCurve((Autodesk.DesignScript.Geometry.NurbsCurve)item)); } // else else { throw new System.ArgumentException($"Curve type: {obj.GetType()}, is not supported for conversion to an Edge."); } }
public double DistanceTo(Autodesk.DesignScript.Geometry.Geometry geometry) { return(geometry.DistanceTo(Geometry.Point.MidPoint(bbox.MinPoint, bbox.MaxPoint))); }