public static Autodesk.Revit.DB.Level ToNative(this SpeckleElementsClasses.Level myLevel) { var(docObj, stateObj) = GetExistingElementByApplicationId(myLevel.ApplicationId, myLevel.Type); // if the new and old have the same id (hash equivalent) and the doc obj is not marked as being modified, return the doc object if (stateObj != null && docObj != null && myLevel._id == stateObj._id && (bool)stateObj.Properties["userModified"] == false) { return((Autodesk.Revit.DB.Level)docObj); } if (docObj == null) { docObj = ExistingLevelByName(myLevel.levelName); } if (docObj == null) { docObj = ExistingLevelByElevation(myLevel.elevation); } // If no doc object, means we need to create it! if (docObj == null) { var myNewLevel = Autodesk.Revit.DB.Level.Create(Doc, myLevel.elevation * Scale); if (myLevel.levelName != null) { try { myNewLevel.Name = myLevel.levelName; } catch { } } if (myLevel.createView) { var vt = new FilteredElementCollector(Doc).OfClass(typeof(ViewFamilyType)).Where(el => ((ViewFamilyType)el).ViewFamily == ViewFamily.FloorPlan).First(); var view = Autodesk.Revit.DB.ViewPlan.Create(Doc, vt.Id, myNewLevel.Id); try { view.Name = myLevel.levelName; } catch { } } SetElementParams(myNewLevel, myLevel.parameters); myNewLevel.Maximize3DExtents(); return(myNewLevel); } var existingLevel = docObj as Autodesk.Revit.DB.Level; existingLevel.Elevation = myLevel.elevation * Scale; existingLevel.Name = myLevel.levelName != null && existingLevel.Name == null ? myLevel.levelName : existingLevel.Name; SetElementParams(existingLevel, myLevel.parameters); existingLevel.Maximize3DExtents(); return(existingLevel); }
public static SpeckleElementsClasses.Level ToSpeckle(this Autodesk.Revit.DB.Level myLevel) { // TODO var speckleLevel = new SpeckleElementsClasses.Level(); speckleLevel.elevation = myLevel.Elevation / Scale; // UnitUtils.ConvertFromInternalUnits(myLevel.Elevation, DisplayUnitType.Meters) speckleLevel.levelName = myLevel.Name; speckleLevel.parameters = GetElementParams(myLevel); speckleLevel.ApplicationId = myLevel.UniqueId; speckleLevel.elementId = myLevel.Id.ToString(); speckleLevel.GenerateHash(); return(speckleLevel); }