Add Family Instance by Location ( point/plane )

Okay so the clash points that you are collecting are not scaled to the Revit model units.

This is the location of the instance:

And this is the plane origin that you are trying to reorient to:

I changed the python node to reorient based on the location of the instance itself but use the X and Y axis directions from the plane:

Also added data type checks. Change the python code to this:

import clr
clr.AddReference('System.Core')
clr.AddReference('RhinoInside.Revit')
clr.AddReference('RevitAPI') 
clr.AddReference('RevitAPIUI')

from System import Enum

import rhinoscriptsyntax as rs
import Rhino
import RhinoInside
import Grasshopper
from RhinoInside.Revit import Revit, Convert
from Autodesk.Revit import DB

doc = Revit.ActiveDBDocument

clr.ImportExtensions(RhinoInside.Revit)

if isinstance(I, DB.FamilyInstance) and isinstance(L, Rhino.Geometry.Plane):
    t = DB.Transaction(doc, "Align Instance")
    t.Start()
    I.Pinned = False
    I.SetTransform(I.Location.Point, L.XAxis.ToHost(), L.YAxis.ToHost())
    I.Pinned = True
    t.Commit()

Here is proof of work:

2 Likes