Hi, i created a family mass composed by model lines, i want to place a structural framing beam for each line i’ve in the family. i wrote a code to place a point at the beginning and end of each line, but i get an empty list as result. Do you have some suggestion?
import sys
import clr
clr.AddReference('ProtoGeometry')
from Autodesk.DesignScript.Geometry import *
clr.AddReference('RevitAPI')
from Autodesk.Revit.DB import *
clr.AddReference('RevitServices')
from RevitServices.Persistence import DocumentManager
doc = DocumentManager.Instance.CurrentDBDocument
points = []
mass_instances_collector = FilteredElementCollector(doc).OfClass(FamilyInstance).WhereElementIsNotElementType().OfCategory(BuiltInCategory.OST_Mass)
for mass_instance in mass_instances_collector:
family = mass_instance.Symbol.Family
if family.FamilyCategory.Id == BuiltInCategory.OST_Mass:
mass_geometry = mass_instance.Symbol.get_Geometry(Options())
for geo_obj in mass_geometry:
if isinstance(geo_obj, GeometryInstance):
geometry = geo_obj.GetInstanceGeometry()
for g in geometry:
if isinstance(g, Line):
line = g
start_point = line.GetEndPoint(0)
end_point = line.GetEndPoint(1)
points.append((start_point.X, start_point.Y, start_point.Z))
points.append((end_point.X, end_point.Y, end_point.Z))
OUT = points
mass families