Transfer Families with Project Parameters between files

Hi there, i just wondering if its possible to transfer families with associate Project Parameters (shared parameter) values between model files.

Thanks in advance.

I think you just need to copy a family from one project to another.
In Revit: add the link, select the family (Tab select) and copy to clipboard, paste in the same place in the destination file.
I would be harder to copy the family without the parameters :slight_smile:

Hi Marcel, thanks for your response, i was concerning about that workflow, but i want to know how to manage for like 200 families in a row, i managed to copy this shared parameter in the project to one inside builtin parameter inside the family, then export all families and import in the other Files but i need another clean workflow.

Thanks

There is a good addin from CCT Software called Shared Parameter Manager, might be what you are looking for.

So you want to copy the parameter values aswell?

Yes yes, te values concerning those shared parameters in the project.

You need to set up an experiment in a clean test file and learn the standard behaviour in Revit, then figure out how to do the same in Dynamo.

Ok, thanks

Hi there, im trying to bring to the current document all the family types from linked model with their project parameters.
When i try it the new Family Type add a value to avoid have same names, how can i avoid that? i want to overwrite the existing match families in the current document.
Here the code taken from the forum.

import clr

clr.AddReference('RevitServices')
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager
doc = DocumentManager.Instance.CurrentDBDocument

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

from System.Collections.Generic import List

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

def singleton(x):
	if hasattr(x,'__iter__'): return x[0]
	else : return x

def tolist(x):
	if hasattr(x,'__iter__'): return x
	else : return [x]

class CustomCopyHandler(IDuplicateTypeNamesHandler):
	def OnDuplicateTypeNamesFound(self, args):
 		return DuplicateTypeAction.UseDestinationTypes
 
 
linkInst = UnwrapElement(singleton(IN[0]) )
elements = UnwrapElement(tolist(IN[1]) )

linkDoc = linkInst.GetLinkDocument()
tf1 = linkInst.GetTotalTransform()
eId = List[ElementId]()
for e in elements:
	try:
		id1 = e.Id
	except:
		continue
	eId.Add(id1)

TransactionManager.Instance.EnsureInTransaction(doc)
co = CopyPasteOptions()
co.SetDuplicateTypeNamesHandler(CustomCopyHandler())
copy = ElementTransformUtils.CopyElements(linkDoc, eId, doc, tf1, co)
TransactionManager.Instance.TransactionTaskDone()

OUT = [doc.GetElement(i).ToDSType(False) for i in copy]

image

Perhaps an even easier solution: delete everything except the families you want to transfer in the old file. Move the remaining content to a conspicuous location (day 300’ below the origin point). Link old file into the new file, and then bind the link.