internal Dyn.Geometry EnsureUnit(Dyn.Geometry geo, bool disposeInput = false) { Dyn.Geometry scgeo = null; Dyn.Plane xy = Dyn.Plane.XY(); if (targetUnit == baseUnit) { scgeo = geo.Scale(xy, 1, 1, 1); } else { if (baseUnit == "Meters" && targetUnit == "Feet") { double factor = 3.280841666667; scgeo = geo.Scale(xy, factor, factor, factor); } else if (baseUnit == "Feet" && targetUnit == "Meters") { double factor = 0.304800164592; scgeo = geo.Scale(xy, factor, factor, factor); } else { } } if (disposeInput) { geo.Dispose(); } xy.Dispose(); return(scgeo); }
internal OctreeNode ClosestNodeRecursive(OctreeNode ot, Autodesk.DesignScript.Geometry.Geometry geom) { if (ot.isLeaf()) { return(ot); } double minDist = -10; OctreeNode closestNode = null; foreach (OctreeNode child in ot.children) { if (!ot.isValid()) { continue; } double childDist = child.DistanceTo(geom); if (minDist < 0 || childDist < minDist) { minDist = childDist; closestNode = child; } } return(ClosestNodeRecursive(closestNode, geom)); }
/// <summary> /// Create a Revit DirectShape given some geometry, a name for the shape, a Category, and Material. /// The geometry will be tessellated before being placed in the Revit model /// The category of a DirectShape cannot be changed after creation, so /// a new DirectShape will be generated if the category input is changed. /// </summary> /// <param name="geometry">A Solid or Surface that will be tessellated and placed in the Revit model as a DirectShape</param> /// <param name="name">A string name for the DirectShape</param> /// <param name="category">Must be a top level Built-in Category</param> /// <param name="material">A Material to apply to the faces of the DirectShape</param> /// <returns>A DirectShape Element</returns> public static DirectShape ByGeometry(Autodesk.DesignScript.Geometry.Geometry geometry, Category category, [DefaultArgumentAttribute(" DirectShape.DynamoPreviewMaterial")] Material material, string name = DEFAULT_NAME) { if (geometry == null) { throw new ArgumentNullException("geometry"); } if (name == null) { throw new ArgumentNullException("name"); } if (category == null) { throw new ArgumentNullException("category"); } if (material == null) { throw new ArgumentNullException("material"); } if (geometry is Autodesk.DesignScript.Geometry.Solid || geometry is Autodesk.DesignScript.Geometry.Surface) { return(new DirectShape(geometry, name, category, material)); } throw new ArgumentException(Revit.Properties.Resources.DirectShapeInvalidArgument); }
/// <summary> /// Import a collection of Geometry (Solid, Curve, Surface, etc) into Revit as an ImportInstance. /// </summary> /// <param name="geometry">A single piece of geometry</param> /// <returns></returns> public static ImportInstance ByGeometry(Autodesk.DesignScript.Geometry.Geometry geometry) { List <Autodesk.DesignScript.Geometry.Geometry> geometries = new List <Autodesk.DesignScript.Geometry.Geometry>(); geometries.Add(geometry); return(ByGeometries(geometries.ToArray())); }
private static Autodesk.DesignScript.Geometry.Geometry Transform(Autodesk.DesignScript.Geometry.Geometry geom, CoordinateSystem coordinateSystem) { if (coordinateSystem == null) { return(geom); } return(geom.Transform(coordinateSystem)); }
/// <summary> /// Import a collection of Geometry (Solid, Curve, Surface, etc) into Revit views as an ImportInstance. /// </summary> /// <param name="geometry">A single piece of geometry</param> /// <param name="view">The view into which the ImportInstance will be imported.</param> /// <returns></returns> public static ImportInstance ByGeometryAndView(Autodesk.DesignScript.Geometry.Geometry geometry, Revit.Elements.Views.View view) { List <Autodesk.DesignScript.Geometry.Geometry> geometries = new List <Autodesk.DesignScript.Geometry.Geometry>(); geometries.Add(geometry); return(ByGeometriesAndView(geometries.ToArray(), view)); }
/// <summary> /// This method contains workarounds for increasing the robustness of input geometry /// </summary> /// <param name="geometry"></param> /// <param name="translation"></param> private static void Robustify(ref Autodesk.DesignScript.Geometry.Geometry geometry, ref Autodesk.DesignScript.Geometry.Vector translation) { // translate centroid of the solid to the origin // export, then move back if (geometry is Autodesk.DesignScript.Geometry.Solid) { var solid = geometry as Autodesk.DesignScript.Geometry.Solid; translation = solid.Centroid().AsVector(); var tranGeo = solid.Translate(translation.Reverse()); geometry = tranGeo; } }
/// <summary> /// Import a collection of Geometry (Solid, Curve, Surface, etc) into Revit as an ImportInstance. /// </summary> /// <param name="geometry">A single piece of geometry</param> /// <returns></returns> public static ImportInstance ByGeometry(Autodesk.DesignScript.Geometry.Geometry geometry) { if (geometry == null) { throw new ArgumentNullException("geometry"); } // Create a temp file name to export to var fn = System.IO.Path.GetTempPath() + Guid.NewGuid().ToString() + ".sat"; var translation = Vector.ByCoordinates(0, 0, 0); Robustify(ref geometry, ref translation); var exported_fn = geometry.ExportToSAT(fn); return(new ImportInstance(exported_fn, translation.ToXyz())); }
/// <summary> /// Import a collection of Geometry (Solid, Curve, Surface, etc) into Revit as an ImportInstance. /// </summary> /// <param name="geometry">A single piece of geometry</param> /// <returns></returns> public static ImportInstance ByGeometry(Autodesk.DesignScript.Geometry.Geometry geometry) { if (geometry == null) { throw new ArgumentNullException("geometry"); } // transform geometry from dynamo unit system (m) to revit (ft) geometry = geometry.InHostUnits(); var translation = Vector.ByCoordinates(0, 0, 0); Robustify(ref geometry, ref translation); // Export to temporary file var fn = System.IO.Path.GetTempPath() + Guid.NewGuid().ToString() + ".sat"; var exported_fn = geometry.ExportToSAT(fn); return(new ImportInstance(exported_fn, translation.ToXyz())); }
public void Tessellate(IRenderPackage package, TessellationParameters parameters) { package.RequiresPerVertexColoration = true; Point center = SphereNode.Center(this); Autodesk.DesignScript.Geometry.Geometry geometry = Sphere.ByCenterPointRadius(center, this.radius); 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])); } center.Dispose(); geometry.Dispose(); }
private static Autodesk.DesignScript.Geometry.Geometry Tag(Autodesk.DesignScript.Geometry.Geometry geo, Autodesk.Revit.DB.Reference reference) { return(geo); }
/// <summary> /// Create a TranformableExample class which stores a Geometry object and a Transform. /// </summary> /// <param name="geometry"> a geometry object</param> /// <returns></returns> public static TransformableExample ByGeometry(Autodesk.DesignScript.Geometry.Geometry geometry) { var newTransformableThing = new TransformableExample(geometry); return(newTransformableThing); }
public OctreeNode ClosestNode(Autodesk.DesignScript.Geometry.Geometry geometry) { return(ClosestNodeRecursive(this._root, geometry)); }
/// <summary> /// Create PDF Geometry from Dynamo Geometry /// </summary> /// <param name="geometry"></param> /// <param name="settings"></param> public PDFGeometry(Dyn.Geometry geometry, PrintSettings settings) { this.Geometry = geometry; this.Settings = settings; }