/// <summary> /// New Family Instance by Curve /// </summary> /// <param name="familyType">Family Type to be applied to new Family Instance.</param> /// <param name="line">Line to place Family Instance at.</param> /// <param name="level">Level to associate Family Instance with.</param> /// <returns>New Family Instance.</returns> public static Element ByLine(FamilyType familyType, Line line, Level level) { if (familyType == null) { throw new ArgumentNullException(nameof(familyType)); } var symbol = familyType.InternalElement as Autodesk.Revit.DB.FamilySymbol; var locationLine = line.ToRevitType() as Autodesk.Revit.DB.Line; var hostLevel = level.InternalElement as Autodesk.Revit.DB.Level; return(new FamilyInstances(symbol, locationLine, hostLevel)); }
/// <summary> /// Create a Revit Grid Element in a Project along a Line. /// </summary> /// <param name="line"></param> /// <returns></returns> public static Grid ByLine(Autodesk.DesignScript.Geometry.Line line) { if (Document.IsFamilyDocument) { throw new Exception("A Grid Element can only be created in a Revit Project"); } if (line == null) { throw new ArgumentNullException("line"); } return(new Grid((Autodesk.Revit.DB.Line)line.ToRevitType())); }
/// <summary> /// Place a Revit family instance of the given the FamilyType (also known as the FamilySymbol in the Revit API) /// on a surface derived from a backing Revit face as reference and a line as reference for its position. /// /// Note: The FamilyPlacementType must be CurveBased and the input surface must be created from a Revit Face /// </summary> /// <param name="familyType">Family Type. Also called Family Symbol.</param> /// <param name="face">Surface geometry derived from a Revit face as reference element</param> /// <param name="line">A line on the face defining where the symbol is to be placed</param> /// <returns>FamilyInstance</returns> public static FamilyInstance ByFace(FamilyType familyType, Surface face, Autodesk.DesignScript.Geometry.Line line) { if (familyType == null) { throw new ArgumentNullException("familyType"); } if (face == null) { throw new ArgumentNullException("face"); } if (line == null) { throw new ArgumentNullException("line"); } var reference = ElementFaceReference.TryGetFaceReference(face); return(new FamilyInstance(familyType.InternalFamilySymbol, reference.InternalReference, (Autodesk.Revit.DB.Line)line.ToRevitType())); }