void ReconstructElementTypeDuplicate ( DB.Document doc, ref DB.ElementType elementType, DB.ElementType type, string name ) { if ( elementType is DB.ElementType && elementType.Category.Id == type.Category.Id && elementType.FamilyName == type.FamilyName && elementType.GetType() == type.GetType() ) { if (elementType.Name != name) { elementType.Name = name; } if (elementType is DB.HostObjAttributes hostElementType && type is DB.HostObjAttributes hostType) { hostElementType.SetCompoundStructure(hostType.GetCompoundStructure()); } elementType.CopyParametersFrom(type); } else { elementType = type.Duplicate(name); } }
private View GetViewByName(string name) { FilteredElementCollector docFilter = new FilteredElementCollector(uidoc.Document); if (docFilter != null) { FilteredElementIterator viewsIterator = docFilter.OfClass(typeof(Autodesk.Revit.DB.View)).GetElementIterator(); while (viewsIterator.MoveNext()) { Autodesk.Revit.DB.View curView = viewsIterator.Current as Autodesk.Revit.DB.View; string curViewTypeName = curView.GetType().Name; if ((curViewTypeName == "ViewDrafting") || (curViewTypeName == "ViewPlan")) { Autodesk.Revit.DB.ElementId curElementId = curView.GetTypeId(); Autodesk.Revit.DB.ElementType curElementType = uidoc.Document.GetElement(curElementId) as ElementType; if (curElementType != null) { if (curElementType.GetType().Name == "ViewFamilyType") { Autodesk.Revit.DB.ViewFamilyType curViewFamilyType = (ViewFamilyType)curElementType; if (curViewFamilyType != null) { string curViewName = curViewFamilyType.Name + ": " + curView.Name; if (curViewName == name) { return(curView); } } } } } } } return(null); }
private List <string> GetDraftAndPlanViewsNames(Document vdoc) { List <string> names = new List <string>(); FilteredElementCollector viewFilter = new FilteredElementCollector(vdoc); if (viewFilter != null) { FilteredElementIterator viewsIterator = viewFilter.OfClass(typeof(Autodesk.Revit.DB.View)).GetElementIterator(); while (viewsIterator.MoveNext()) { Autodesk.Revit.DB.View curView = viewsIterator.Current as Autodesk.Revit.DB.View; string curViewTypeName = curView.GetType().Name; if ((curViewTypeName == "ViewDrafting") || (curViewTypeName == "ViewPlan") || (curViewTypeName == "ViewSchedule")) { Autodesk.Revit.DB.ElementId curElementId = curView.GetTypeId(); Autodesk.Revit.DB.ElementType curElementType = vdoc.GetElement(curElementId) as ElementType; if (curElementType != null) { if (curElementType.GetType().Name == "ViewFamilyType") { Autodesk.Revit.DB.ViewFamilyType curViewFamilyType = (ViewFamilyType)curElementType; if (curViewFamilyType != null) { string curName = curViewFamilyType.Name + ": " + curView.Name; names.Add(curName); } } } } } } names.Sort(); return(names); }
public static IDictionary MergeElementTypes(DynaElem FromType, DynaElem ToType) { // Name of Transaction string transactionName = "Merge Element Type"; // Get the Revit elements from the Dynamo Elements RevitDB.ElementType rFromType = (RevitDB.ElementType)FromType.InternalElement; RevitDB.ElementType rToType = (RevitDB.ElementType)ToType.InternalElement; RevitDoc document = rToType.Document; // Collect all instances of FromType RevitDB.FilteredElementCollector collector = new RevitDB.FilteredElementCollector(document); RevitDB.BuiltInParameter parameterId = RevitDB.BuiltInParameter.ELEM_TYPE_PARAM; RevitDB.FilterNumericEquals filterNumberRule = new RevitDB.FilterNumericEquals(); RevitDB.ParameterValueProvider provider = new RevitDB.ParameterValueProvider(new RevitDB.ElementId(parameterId)); RevitDB.FilterRule filterRule = new RevitDB.FilterElementIdRule(provider, filterNumberRule, rFromType.Id); RevitDB.ElementFilter filterParameter = new RevitDB.ElementParameterFilter(filterRule, false); Type instanceType = Select.InstanceClassFromTypeClass(rFromType.GetType()); if (instanceType != null) { collector.OfClass(instanceType); } IEnumerable <RevitDB.Element> instances = collector .WhereElementIsNotElementType() .WherePasses(filterParameter) .ToElements(); // Intialize list for elements that are successfully merged and failed to merge. List <DynaElem> elements = new List <DynaElem>(); List <DynaElem> elementsFailed = new List <DynaElem>(); // Define Function to change instances types. Action <IEnumerable <RevitDB.Element> > _SetType = (isntances) => { foreach (RevitDB.Element elem in instances) { // If Element is in a group, put the element in the failed list int groupId = elem.GroupId.IntegerValue; if (groupId == -1) { //elem.TextNoteType = rToType; RevitDB.Parameter param = elem.get_Parameter(RevitDB.BuiltInParameter.ELEM_TYPE_PARAM); param.Set(rToType.Id); DynaElem dElem = elem.ToDSType(true); elements.Add(dElem); } else { DynaElem dElem = elem.ToDSType(true); elementsFailed.Add(dElem); } } // Check if there are any instances of FromType left int count = collector.Count(); if (count == 0) { document.Delete(rFromType.Id); } }; if (document.IsModifiable) { TransactionManager.Instance.EnsureInTransaction(document); _SetType(instances); TransactionManager.Instance.TransactionTaskDone(); } else { using (Autodesk.Revit.DB.Transaction trans = new Autodesk.Revit.DB.Transaction(document)) { trans.Start(transactionName); _SetType(instances); trans.Commit(); } } return(new Dictionary <string, object> { { "Merged", elements }, { "Failed", elementsFailed } }); }
private List <string> getOpenPlanViewsTitles() { List <string> planViewsTitles = new List <string>(); if (this.uidoc != null) { Document doc = this.uidoc.Document; if (doc != null) { IList <UIView> uiviews = this.uidoc.GetOpenUIViews(); IList <UIView> cluiviews = new List <UIView>(); for (int i = 0; i < uiviews.Count; i++) { UIView curUIView = uiviews[i]; ElementId curViewId = curUIView.ViewId; if (curViewId != null) { Element curElement = doc.GetElement(curViewId); if (curElement != null) { string curElementTypeName = curElement.GetType().Name; if (curElementTypeName == "ViewPlan") { ViewPlan curViewPlan = curElement as ViewPlan; if (curViewPlan != null) { Autodesk.Revit.DB.ElementId curElementId = curViewPlan.GetTypeId(); Autodesk.Revit.DB.ElementType curElementType = doc.GetElement(curElementId) as ElementType; if (curElementType != null) { if (curElementType.GetType().Name == "ViewFamilyType") { Autodesk.Revit.DB.ViewFamilyType curViewFamilyType = (ViewFamilyType)curElementType; if (curViewFamilyType != null) { string curTitle = curViewFamilyType.Name + ": " + curViewPlan.Name; planViewsTitles.Add(curTitle); } } } } } else { cluiviews.Add(curUIView); } } } } if (cluiviews.Count > 1) { while (cluiviews.Count > 0) { try { UIView curUIView = cluiviews.ElementAt(0); cluiviews.RemoveAt(0); if (curUIView != null) { try { if (cluiviews.Count > 1) { curUIView.Close(); curUIView.Dispose(); } } catch (Exception exA) { } } } catch (Exception exB) { } } } } } return(planViewsTitles); }