На прошлой неделе Хасан Мамаев задал вопрос:
Я пытаюсь получить геометрию нескольких экземпляров одного плоского семейства таким кодом:
i.GetInstanceGeometry()
но выдаёт ошибку: AttributeError: 'FamilyInstance' object has no attribute 'GetInstanceGeometry'
Объекты, из которых нужно вытянуть линии - условное отображение отверстий:
Сегодня появилось время, пытаюсь разобраться.
Первым делом обращаюсь к
документации.
Есть пример с извлечением геометрии из стены, но применить один в один не удалось.
После изысканий разработал такой код:
private List<Line> GetLines(Element element)
{
List<Line> lines = new List<Line>();
Autodesk.Revit.DB.Options geomOption = element.Document.Application.Create.NewGeometryOptions();
if (null != geomOption)
{
geomOption.View = element.Document.ActiveView;
}
GeometryElement geometryElement = element.get_Geometry(geomOption);
foreach (GeometryInstance gi in geometryElement)
{
foreach (GeometryObject go in gi.GetInstanceGeometry())
{
Line l = go as Line;
if (l != null)
{
lines.Add(l);
}
}
}
return lines;
}
Этот код заработал для элементов типа
Элементы узлов.
Для
Типовых аннотаций не работает. Если найду решение, то сделаю продолжение.
Удачи!