private static double GetWindowArea(Autodesk.Revit.DB.Element insert) { var winType = (Autodesk.Revit.DB.FamilySymbol)insert.Document.GetElement(insert.GetTypeId()); var furnitureWidthInstance = insert.get_Parameter(Autodesk.Revit.DB.BuiltInParameter.FURNITURE_WIDTH)?.AsDouble() ?? 0; var furnitureWidthType = winType.get_Parameter(Autodesk.Revit.DB.BuiltInParameter.FURNITURE_WIDTH)?.AsDouble() ?? 0; var furnWidth = furnitureWidthInstance > 0 ? furnitureWidthInstance : furnitureWidthType; var familyWidthInstance = insert.get_Parameter(Autodesk.Revit.DB.BuiltInParameter.FAMILY_WIDTH_PARAM)?.AsDouble() ?? 0; var familyWidthType = winType.get_Parameter(Autodesk.Revit.DB.BuiltInParameter.FAMILY_WIDTH_PARAM)?.AsDouble() ?? 0; var famWidth = familyWidthInstance > 0 ? familyWidthInstance : familyWidthType; var roughWidthInstance = insert.get_Parameter(Autodesk.Revit.DB.BuiltInParameter.FAMILY_ROUGH_WIDTH_PARAM)?.AsDouble() ?? 0; var roughWidthType = winType.get_Parameter(Autodesk.Revit.DB.BuiltInParameter.FAMILY_ROUGH_WIDTH_PARAM)?.AsDouble() ?? 0; var rWidth = roughWidthInstance > 0 ? roughWidthInstance : roughWidthType; var width = rWidth > 0 ? rWidth : famWidth > 0 ? famWidth : furnWidth; var furnitureHeightInstance = insert.get_Parameter(Autodesk.Revit.DB.BuiltInParameter.FURNITURE_HEIGHT)?.AsDouble() ?? 0; var furnitureHeightType = winType.get_Parameter(Autodesk.Revit.DB.BuiltInParameter.FURNITURE_HEIGHT)?.AsDouble() ?? 0; var furnHeight = furnitureHeightInstance > 0 ? furnitureHeightInstance : furnitureHeightType; var familyHeightInstance = insert.get_Parameter(Autodesk.Revit.DB.BuiltInParameter.FAMILY_HEIGHT_PARAM)?.AsDouble() ?? 0; var familyHeightType = winType.get_Parameter(Autodesk.Revit.DB.BuiltInParameter.FAMILY_HEIGHT_PARAM)?.AsDouble() ?? 0; var famHeight = familyHeightInstance > 0 ? familyHeightInstance : familyHeightType; var roughHeightInstance = insert.get_Parameter(Autodesk.Revit.DB.BuiltInParameter.FAMILY_ROUGH_HEIGHT_PARAM)?.AsDouble() ?? 0; var roughHeightType = winType.get_Parameter(Autodesk.Revit.DB.BuiltInParameter.FAMILY_ROUGH_HEIGHT_PARAM)?.AsDouble() ?? 0; var rHeight = roughWidthInstance > 0 ? roughHeightInstance : roughHeightType; var height = rHeight > 0 ? rHeight : famHeight > 0 ? famHeight : furnHeight; var winArea = width * height; return(winArea); }
private static List <Autodesk.Revit.DB.XYZ> GetGeometryPoints(Autodesk.Revit.DB.Element e) { var pts = new List <Autodesk.Revit.DB.XYZ>(); using (var opt = new Autodesk.Revit.DB.Options()) { opt.IncludeNonVisibleObjects = true; using (var geom = e.get_Geometry(opt)) { ExtractPtsRecursively(geom, ref pts); } } return(pts); }
internal FamilyInstances(Autodesk.Revit.DB.FamilySymbol fs, Autodesk.Revit.DB.XYZ point, Autodesk.Revit.DB.Element host, Autodesk.Revit.DB.Level level) { SafeInit(() => InitFamilyInstance(fs, point, host, level)); }
private void InitFamilyInstance(Autodesk.Revit.DB.FamilySymbol fs, Autodesk.Revit.DB.XYZ point, Autodesk.Revit.DB.Element host, Autodesk.Revit.DB.Level level) { //Phase 1 - Check to see if the object exists and should be rebound var doc = DocumentManager.Instance.CurrentDBDocument; var oldFam = ElementBinder.GetElementFromTrace <Autodesk.Revit.DB.FamilyInstance>(doc); //There was a point, rebind to that, and adjust its position if (oldFam != null) { InternalSetFamilyInstance(oldFam); InternalSetFamilySymbol(fs); return; } //Phase 2- There was no existing point, create one TransactionManager.Instance.EnsureInTransaction(doc); //If the symbol is not active, then activate it if (!fs.IsActive) { fs.Activate(); } var fi = doc.Create.NewFamilyInstance(point, fs, host, level, Autodesk.Revit.DB.Structure.StructuralType.NonStructural); InternalSetFamilyInstance(fi); TransactionManager.Instance.TransactionTaskDone(); ElementBinder.SetElementForTrace(InternalElement); }