Lock aligned families

The challenge with those methods is always to find the references, here is an example that uses uidoc pick face to pick them. This is of course a lot more work than just hitting the lock in revit, but I hope this helps to get you (or someone else) started:

import clr

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

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

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

view = doc.ActiveView
if IN[0]:
	r1 = uidoc.Selection.PickObject(Selection.ObjectType.Face, 'Pick first face for reference');
	r2 = uidoc.Selection.PickObject(Selection.ObjectType.Face, 'Pick second face for reference');
	
	
	#Do some action in a Transaction
	TransactionManager.Instance.EnsureInTransaction(doc)
	lockedAlign = doc.Create.NewAlignment(view, r1, r2)
	TransactionManager.Instance.TransactionTaskDone()
	
	OUT = view , lockedAlign
2 Likes