Placing a new family on a face in Python
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report
Hi,
I'm putting together a routine to place face based families on a face of a generic object.
Looking at the API documentation, there is a method for doing this which look the one the to use:
NewFamilyInstance(Face, XYZ, XYZ, FamilySymbol) Inserts a new instance of a family onto a face of an existing element, using a location, reference direction, and a type/symbol.
I'm using Python through dynamo, I select the family symbol using a FilteredElementCollector.
When I run the code, it fails with the NewFamilyInstance with the error: TypeError: expected XYZ, got Surface
import clr clr.AddReference('ProtoGeometry') from Autodesk.DesignScript.Geometry import * # Import RevitNodes clr.AddReference("RevitNodes") import Revit clr.AddReference('RevitAPI') import Autodesk from Autodesk.Revit.DB import * # Import Revit elements from Revit.Elements import * # Import DocumentManager clr.AddReference("RevitServices") import RevitServices from RevitServices.Persistence import DocumentManager import sys sys.path.append('C:/Program Files (x86)/IronPython 2.7/Lib') from math import atan2, radians, cos, sin, degrees, sqrt, ceil doc = DocumentManager.Instance.CurrentDBDocument uiapp = DocumentManager.Instance.CurrentUIApplication app = uiapp.Application adoc = doc.ActiveView facetoplace = IN[0][0] familysym = IN[1] #NewFamilyInstance(Face, XYZ, XYZ, FamilySymbol) Inserts a new instance of a family onto a face of an existing element, using a location, reference direction, and a type/symbol. #Find family Symbol familysymname = "Brick" familysymtouse = 0 collector = FilteredElementCollector(doc).OfClass(FamilySymbol) famtypeitr = collector.GetElementIdIterator() famtypeitr.Reset() for item in famtypeitr: getfelement = doc.GetElement(item) getffamily = getfelement.Family getfname = getffamily.Name if getfname == familysym: familysymtouse = getfelement b1 = doc.Create.NewFamilyInstance(facetoplace, XYZ(1,0,0), XYZ(0,0,0), familysymtouse) OUT = [familysymtouse]
This is the Dynamo part:
Whats going wrong, I believe I'm giving all the required inputs?
Thanks.