# Ungrouping & Purging All Families in a Model

**URL:** <https://forum.dynamobim.com/t/ungrouping-purging-all-families-in-a-model/8210>\
**Category:** Revit\
**Tags:** revit\
**Created:** [December 13, 2016, 12:32pm UTC](https://forum.dynamobim.com/t/ungrouping-purging-all-families-in-a-model/8210 "2016-12-13T12:32:20Z")\
**Posts on this page:** 1\
**Showing post:** 16

<div class="post-metadata">

**Author:** ![Einar\_Raknes](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.dynamobim.com/einar_raknes/32/8566_2.png) [@Einar\_Raknes](https://forum.dynamobim.com/u/Einar_Raknes)\
**Post date:** [February 16, 2017, 7:45pm UTC](https://forum.dynamobim.com/t/ungrouping-purging-all-families-in-a-model/8210/16 "2017-02-16T19:45:48Z")

</div>

I found some time to take a look at the reloading:

The IFamilyLoadOptions implemented in python:

```
class FamilyOption(IFamilyLoadOptions):
	def OnFamilyFound(self,familyInUse,overwriteParameterValues):
		overwriteParameterValues = True
		return True
		
	def OnSharedFamilyFound(self, sharedFamily, familyInUse, FamilySource, overwriteParameterValues):
		return True

```

Here is the call of the LoadFamily method call on the familydocument:

```
famdoc.LoadFamily(doc, FamilyOption())

```

@luisa Do you want to test the script? It doesn’t purge anything, because that has to be done manually. There is no API call to the purge command in Revit.

 ![](https://us1.discourse-cdn.com/flex022/uploads/dynamobim/original/3X/a/5/a50a7d09dec8297562dceed1b1afd4f687cfbca7.png)

[OpenAndUngroupFamilies.dyn](https://forum.dynamobim.com/uploads/short-url/rw94M28mnrYbha2xSBaQ1eFxFXz.dyn) (6.1 KB)

For anyone that might be interested,.the complete python script:

```
import clr

clr.AddReference('RevitAPI')
from Autodesk.Revit.DB import *
from Autodesk.Revit.DB.Structure import *

clr.AddReference('RevitAPIUI')
from Autodesk.Revit.UI import *

clr.AddReference('System')
from System.Collections.Generic import *

clr.AddReference('RevitNodes')
import Revit
clr.ImportExtensions(Revit.GeometryConversion)
clr.ImportExtensions(Revit.Elements)

clr.AddReference('RevitServices')
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager

doc = DocumentManager.Instance.CurrentDBDocument
uidoc=DocumentManager.Instance.CurrentUIApplication.ActiveUIDocument

class FamilyOption(IFamilyLoadOptions):
	def OnFamilyFound(self,familyInUse,overwriteParameterValues):
		overwriteParameterValues = True
		return True
		
	def OnSharedFamilyFound(self, sharedFamily, familyInUse, FamilySource, overwriteParameterValues):
		return True
		
#Preparing input from dynamo to revit
families = UnwrapElement(IN[0])

for f in families:
	famdoc = doc.EditFamily(f)
	fec = FilteredElementCollector(famdoc).OfCategory(BuiltInCategory.OST_IOSModelGroups).WhereElementIsNotElementType()
	if fec.FirstElement() is not None:
		groups = fec.ToElements()

		TransactionManager.Instance.EnsureInTransaction(famdoc)
		[g.UngroupMembers() for g in groups]
		TransactionManager.Instance.TransactionTaskDone()
		TransactionManager.Instance.ForceCloseTransaction()
		
		TransactionManager.Instance.EnsureInTransaction(doc)
		famdoc.LoadFamily(doc, FamilyOption())
		TransactionManager.Instance.TransactionTaskDone()
		TransactionManager.Instance.ForceCloseTransaction()
		
		#famdoc.SaveAs(path +"\\" + e.Name + ".rfa")
OUT = 0
```

---

_[View the full topic](https://forum.dynamobim.com/t/ungrouping-purging-all-families-in-a-model/8210)._
