Esempio n. 1
0
 /// <summary>
 /// 
 /// </summary>
 /// <param name="param"></param>
 /// <returns></returns>
 public static string ParamValueToStr(Revit.Parameter param)
 {
     if (param.StorageType == Revit.StorageType.Double)
         return param.AsDouble().ToString();
     else if (param.StorageType == Revit.StorageType.ElementId)
         return param.AsElementId().ToString();
     else if (param.StorageType == Revit.StorageType.Integer)
         return param.AsInteger().ToString();
     else if (param.StorageType == Revit.StorageType.String)
         return param.AsString();
     else {
         Debug.Assert(false);
         return string.Empty;
     }
 }
Esempio n. 2
0
 SetParameter (Revit.Parameter parameterToSet, Revit.ParameterSet parameterSet)
 {
     foreach (Revit.Parameter param in parameterSet) {
         if (param.Definition.Name == parameterToSet.Definition.Name) {
             switch (param.StorageType) {
             case Revit.StorageType.Double:
                 parameterToSet.Set(param.AsDouble());
                 break;
             case Revit.StorageType.ElementId:
                 Revit.ElementId elemId = param.AsElementId();
                 parameterToSet.Set(elemId);
                 break;
             case Revit.StorageType.Integer:
                 parameterToSet.Set(param.AsInteger());
                 break;
             case Revit.StorageType.String:
                 parameterToSet.Set(param.AsString());
                 break;
             }
             return;
         }
     }
 }
Esempio n. 3
0
 /// <summary>
 /// Initialize a Room element
 /// </summary>
 /// <param name="room"></param>
 private void InitRoom(DB.Architecture.Room room)
 {
     InternalSetRoom(room);
 }
Esempio n. 4
0
 /// <summary>
 /// Create from an existing Revit Element
 /// </summary>
 /// <param name="space">An existing Revit space</param>
 private Space(DB.Mechanical.Space space)
 {
     SafeInit(() => InitSpace(space));
 }
Esempio n. 5
0
 /// <summary>
 /// Create from an existing Revit Element
 /// </summary>
 /// <param name="group">An existing Revit Group</param>
 private Group(DB.Group group)
 {
     SafeInit(() => InitGroup(group));
 }
Esempio n. 6
0
        /// <summary>
        /// Place a Group in the model
        /// </summary>
        /// <param name="point">The group instance location</param>
        /// <param name="groupType">The type of the group</param>
        private void InitGroup(DB.XYZ point,DB.GroupType groupType)
        {
            DB.Document document = DocumentManager.Instance.CurrentDBDocument;

            // This creates a new wall and deletes the old one
            TransactionManager.Instance.EnsureInTransaction(document);

            //Phase 1 - Check to see if the object exists and should be rebound
            var groupElem = ElementBinder.GetElementFromTrace<DB.Group>(document);

            if (groupElem == null)
                groupElem = document.Create.PlaceGroup(point, groupType);

            InternalSetGroup(groupElem);

            TransactionManager.Instance.TransactionTaskDone();

            if (groupElem != null)
            {
                ElementBinder.CleanupAndSetElementForTrace(document, this.InternalElement);
            }
            else
            {
                ElementBinder.SetElementForTrace(this.InternalElement);
            }
        }
Esempio n. 7
0
 /// <summary>
 /// Create a group from an existing reference
 /// </summary>
 /// <param name="group"></param>
 /// <param name="isRevitOwned"></param>
 /// <returns></returns>
 internal static Group FromExisting(DB.Group group, bool isRevitOwned)
 {
     return new Group(group)
     {
         //IsRevitOwned = isRevitOwned
     };
 }
Esempio n. 8
0
 SetParameters (Revit.ParameterSet parameterSetToSet, Revit.ParameterSet parameterSet)
 {
     foreach (Revit.Parameter param in parameterSetToSet) {
         SetParameter(param, parameterSet);
     }
 }
Esempio n. 9
0
 /// <summary>
 /// Create from an existing Revit Element
 /// </summary>
 /// <param name="GroupType">An existing Revit GroupType</param>
 private GroupType(DB.GroupType GroupType)
 {
     SafeInit(() => InitGroupType(GroupType));
 }
Esempio n. 10
0
 /// <summary>
 /// Set the internal Element, ElementId, and UniqueId
 /// </summary>
 /// <param name="GroupType"></param>
 private void InternalSetGroupType(DB.GroupType GroupType)
 {
     InternalGroupType = GroupType;
     InternalElementId = GroupType.Id;
     InternalUniqueId = GroupType.UniqueId;
 }
Esempio n. 11
0
 /// <summary>
 /// Initialize a GroupType element
 /// </summary>
 /// <param name="GroupType">An existing Revit GroupType</param>
 private void InitGroupType(DB.GroupType GroupType)
 {
     InternalSetGroupType(GroupType);
 }
Esempio n. 12
0
 /// <summary>
 /// Create a space from an existing reference
 /// </summary>
 /// <param name="GroupType"></param>
 /// <param name="isRevitOwned"></param>
 /// <returns></returns>
 internal static GroupType FromExisting(DB.GroupType GroupType, bool isRevitOwned)
 {
     return new GroupType(GroupType)
     {
         //IsRevitOwned = isRevitOwned
     };
 }
Esempio n. 13
0
 /// <summary>
 /// Set the internal Element, ElementId, and UniqueId
 /// </summary>
 /// <param name="space"></param>
 private void InternalSetSpace(DB.Mechanical.Space space)
 {
     InternalSpace = space;
     InternalElementId = space.Id;
     InternalUniqueId = space.UniqueId;
     InternalBoundarySegments = GetBoundarySegment();
     InternalTransform = GetTransform();
 }
Esempio n. 14
0
 /// <summary>
 /// Initialize a Space element
 /// </summary>
 /// <param name="room"></param>
 private void InitSpace(DB.Mechanical.Space room)
 {
     InternalSetSpace(room);
 }
Esempio n. 15
0
 private Space(
     DB.Level level,
     DB.UV point)
 {
     SafeInit(() => InitSpace(level, point));
 }
Esempio n. 16
0
        private void InitRoom(DB.Level level, DB.UV point)
        {
            DB.Document document = DocumentManager.Instance.CurrentDBDocument;

            // This creates a new wall and deletes the old one
            TransactionManager.Instance.EnsureInTransaction(document);

            //Phase 1 - Check to see if the object exists and should be rebound
            var roomElem = ElementBinder.GetElementFromTrace<DB.Architecture.Room>(document);

            if (roomElem == null)
                roomElem = document.Create.NewRoom(level, point);

            InternalSetRoom(roomElem);

            TransactionManager.Instance.TransactionTaskDone();

            if (roomElem != null)
            {
                ElementBinder.CleanupAndSetElementForTrace(document, this.InternalElement);
            }
            else
            {
                ElementBinder.SetElementForTrace(this.InternalElement);
            }
        }
Esempio n. 17
0
 /// <summary>
 /// Set the internal Element, ElementId, and UniqueId
 /// </summary>
 /// <param name="room"></param>
 private void InternalSetRoom(DB.Architecture.Room room)
 {
     InternalRoom = room;
     InternalElementId = room.Id;
     InternalUniqueId = room.UniqueId;
     InternalBoundarySegments = GetBoundarySegment();
     InternalTransform = GetTransform();
 }
Esempio n. 18
0
    /// <summary>
    /// 
    /// </summary>
    /// <param name="app"></param>
    /// <param name="element"></param>
    /// <returns></returns>
    public static Revit.Element CloneElement( Application app, Revit.Element element )
    {
      Opening opening = element as Opening;
      if( opening != null )
      {
        return CloneElement( app, opening );
      }

      BoundaryConditions boundaryConditions = element as BoundaryConditions;
      if( boundaryConditions != null )
      {
        return CloneElement( app, boundaryConditions );
      }

      AreaLoad areaLoad = element as AreaLoad;
      if( areaLoad != null )
      {
        return CloneElement( app, areaLoad );
      }

      AreaReinforcement areaReinforcement = element as AreaReinforcement;
      if( areaReinforcement != null )
      {
        return CloneElement( app, areaReinforcement );
      }

      BeamSystem beamSystem = element as BeamSystem;
      if( beamSystem != null )
      {
        return CloneElement( app, beamSystem );
      }

      Dimension dimension = element as Dimension;
      if( dimension != null )
      {
        return CloneElement( app, dimension );
      }

      FamilyInstance familyInstance = element as FamilyInstance;
      if( familyInstance != null )
      {
        return CloneElement( app, familyInstance );
      }

      Floor floor = element as Floor;
      if( floor != null )
      {
        return CloneElement( app, floor );
      }

      Grid grid = element as Grid;
      if( grid != null )
      {
        return CloneElement( app, grid );
      }

      Group group = element as Group;
      if( group != null )
      {
        return CloneElement( app, group );
      }

      Level level = element as Level;
      if( floor != null )
      {
        return CloneElement( app, floor );
      }

      LineLoad lineLoad = element as LineLoad;
      if( lineLoad != null )
      {
        return CloneElement( app, lineLoad );
      }

      LoadCase loadCase = element as LoadCase;
      if( loadCase != null )
      {
        return CloneElement( app, loadCase );
      }

      LoadCombination loadCombination = element as LoadCombination;
      if( loadCombination != null )
      {
        return CloneElement( app, loadCombination );
      }

      LoadNature loadNature = element as LoadNature;
      if( loadNature != null )
      {
        return CloneElement( app, loadNature );
      }

      LoadUsage loadUsage = element as LoadUsage;
      if( loadUsage != null )
      {
        return CloneElement( app, loadUsage );
      }

      ModelCurve modelCurve = element as ModelCurve;
      if( modelCurve != null )
      {
        return CloneElement( app, modelCurve );
      }

      PointLoad pointLoad = element as PointLoad;
      if( pointLoad != null )
      {
        return CloneElement( app, pointLoad );
      }

      Rebar rebar = element as Rebar;
      if( rebar != null )
      {
        return CloneElement( app, rebar );
      }

      ReferencePlane referencePlane = element as ReferencePlane;
      if( referencePlane != null )
      {
        return CloneElement( app, referencePlane );
      }

      Room room = element as Room;
      if( room != null )
      {
        return CloneElement( app, room );
      }

      RoomTag roomTag = element as RoomTag;
      if( roomTag != null )
      {
        return CloneElement( app, roomTag );
      }

      SketchPlane sketchPlane = element as SketchPlane;
      if( sketchPlane != null )
      {
        return CloneElement( app, sketchPlane );
      }

      View3D view3D = element as View3D;
      if( view3D != null )
      {
        return CloneElement( app, view3D );
      }

      ViewDrafting viewDrafting = element as ViewDrafting;
      if( viewDrafting != null )
      {
        return CloneElement( app, viewDrafting );
      }

      ViewSection viewSection = element as ViewSection;
      if( viewSection != null )
      {
        return CloneElement( app, viewSection );
      }

      ViewSheet viewSheet = element as ViewSheet;
      if( viewSheet != null )
      {
        return CloneElement( app, viewSheet );
      }

      Wall wall = element as Wall;
      if( wall != null )
      {
        return CloneElement( app, wall );
      }

      // this element has not yet been exposed in the Creation Document class
      //Debug.Assert(false);

      return null;
    }
Esempio n. 19
0
 /// <summary>
 /// 
 /// </summary>
 /// <param name="parameterSetToSet"></param>
 /// <param name="parameterSet"></param>
 public static void SetParameters(Revit.ParameterSet parameterSetToSet, Revit.ParameterSet parameterSet)
 {
     foreach (Revit.Parameter param in parameterSetToSet) {
         SetParameter(param, parameterSet);
     }
 }
Esempio n. 20
0
 /// <summary>
 /// Create a space from an existing reference
 /// </summary>
 /// <param name="room"></param>
 /// <param name="isRevitOwned"></param>
 /// <returns></returns>
 internal static CustomRoom FromExisting(DB.Architecture.Room room, bool isRevitOwned)
 {
     return new CustomRoom(room)
     {
         //IsRevitOwned = isRevitOwned
     };
 }
Esempio n. 21
0
 /// <summary>
 /// Create from an existing Revit Element
 /// </summary>
 /// <param name="room">An existing Revit room</param>
 private CustomRoom(DB.Architecture.Room room)
 {
     SafeInit(() => InitRoom(room));
 }
Esempio n. 22
0
        /// <summary>
        /// Find the nearest level in the active document
        /// </summary>
        /// <param name="point">The reference point</param>
        /// <returns></returns>
        private static DB.Level GetNearestLevel(DB.XYZ point)
        {
            //find all level in the active document
            DB.Document doc = DocumentManager.Instance.CurrentDBDocument;

            DB.FilteredElementCollector collector = new DB.FilteredElementCollector(doc);
            List<DB.Level> activeLevels = collector.OfCategory(DB.BuiltInCategory.OST_Levels).WhereElementIsNotElementType().ToElements().Cast<DB.Level>().ToList();

            DB.Level nearestLevel = activeLevels.FirstOrDefault();
            double delta = Math.Abs(nearestLevel.ProjectElevation - point.Z);

            foreach (DB.Level currentLevel in activeLevels)
            {
                if (Math.Abs(currentLevel.ProjectElevation - point.Z) < delta)
                {
                    nearestLevel = currentLevel;
                    delta = Math.Abs(currentLevel.ProjectElevation - point.Z);
                }
            }

            return nearestLevel;
        }
Esempio n. 23
0
 /// <summary>
 /// Initialize a group element
 /// </summary>
 /// <param name="group">An existing Revit Group</param>
 private void InitGroup(DB.Group group)
 {
     InternalSetGroup(group);
 }
Esempio n. 24
0
        /// <summary>
        /// Retrive family instance hosted in boundary elements
        /// This is the base function for Windows and Doors
        /// </summary>
        /// <param name="cat">The category of hosted elements</param>
        /// <returns></returns>
        private List<FamilyInstance> BoundaryFamilyInstance(DB.BuiltInCategory cat)
        {
            List<FamilyInstance> output = new List<FamilyInstance>();

            //the document of the room
            DB.Document doc = InternalElement.Document; // DocumentManager.Instance.CurrentDBDocument;

            //Find boundary elements and their associated document
            List<DB.ElementId> boundaryElements = new List<DB.ElementId>();
            List<DB.Document> boundaryDocuments = new List<DB.Document>();

            foreach (DB.BoundarySegment segment in InternalBoundarySegments)
            {
                DB.Element boundaryElement = doc.GetElement(segment.ElementId);
                if (boundaryElement.GetType() == typeof(DB.RevitLinkInstance))
                {
                    DB.RevitLinkInstance linkInstance = boundaryElement as DB.RevitLinkInstance;
                    boundaryDocuments.Add(linkInstance.GetLinkDocument());
                    boundaryElements.Add(segment.LinkElementId);
                }
                else
                {
                    boundaryDocuments.Add(doc);
                    boundaryElements.Add(segment.ElementId);
                }
            }

            // Create a category filter
            DB.ElementCategoryFilter filter = new DB.ElementCategoryFilter(cat);
            // Apply the filter to the elements in these documents,
            // Use shortcut WhereElementIsNotElementType() to find family instances in all boundary documents
            boundaryDocuments = boundaryDocuments.Distinct().ToList();
            List<DB.FamilyInstance> familyInstances = new List<DB.FamilyInstance>();
            foreach (DB.Document boundaryDocument in boundaryDocuments)
            {
                DB.FilteredElementCollector collector = new DB.FilteredElementCollector(boundaryDocument);
                familyInstances.AddRange(collector.WherePasses(filter).WhereElementIsNotElementType().ToElements().Cast<DB.FamilyInstance>().ToList());
            }

            //Find all family instance hosted on a boundary element
            IEnumerable<DB.FamilyInstance> boundaryFamilyInstances = familyInstances.Where(s => boundaryElements.Contains(s.Host.Id));

            //loop on these boundary family instance to find to and from room
            foreach (DB.FamilyInstance boundaryFamilyInstance in boundaryFamilyInstances)
            {
                DB.Phase familyInstancePhase = boundaryFamilyInstance.Document.GetElement(boundaryFamilyInstance.CreatedPhaseId) as DB.Phase;
                if (boundaryFamilyInstance.get_FromRoom(familyInstancePhase) != null)
                {
                    if (boundaryFamilyInstance.get_FromRoom(familyInstancePhase).Id == InternalRoom.Id)
                    {
                        output.Add(ElementWrapper.ToDSType(boundaryFamilyInstance, true) as FamilyInstance);
                        continue;
                    }
                }

                if (boundaryFamilyInstance.get_ToRoom(familyInstancePhase) != null)
                {
                    if (boundaryFamilyInstance.get_ToRoom(familyInstancePhase).Id == InternalRoom.Id)
                    {
                        output.Add(ElementWrapper.ToDSType(boundaryFamilyInstance, true) as FamilyInstance);
                    }
                }
            }

            output = output.Distinct().ToList();
            return output;
        }
Esempio n. 25
0
 /// <summary>
 /// Set the internal Element, ElementId, and UniqueId
 /// </summary>
 /// <param name="group"></param>
 private void InternalSetGroup(DB.Group group)
 {
     InternalGroup = group;
     InternalElementId = group.Id;
     InternalUniqueId = group.UniqueId;
 }
Esempio n. 26
0
 private CustomRoom(
     DB.Level level,
     DB.UV point)
 {
     SafeInit(() => InitRoom(level, point));
 }
Esempio n. 27
0
 private Group(DB.XYZ point, DB.GroupType groupType)
 {
     SafeInit(() => InitGroup(point,groupType));
 }
Esempio n. 28
0
 /// <summary>
 /// Create a space from an existing reference
 /// </summary>
 /// <param name="space"></param>
 /// <param name="isRevitOwned"></param>
 /// <returns></returns>
 internal static Space FromExisting(DB.Mechanical.Space space, bool isRevitOwned)
 {
     return new Space(space)
     {
         //IsRevitOwned = isRevitOwned
     };
 }