Добрый день. Есть задача получения граней элементов (например стен) для последующей обработки, например расстановки креплений. Я хотел использовать следующий код (пример макроса):
public void Start()
{
//Получение активного документа
UIApplication App=this.ActiveUIDocument.Application;
Autodesk.Revit.DB.Document doc = App.ActiveUIDocument.Document; //Получаем активный документ
Autodesk.Revit.UI.UIDocument uidoc = App.ActiveUIDocument; //Получаем активный uiдокумент
Selection choices = uidoc.Selection;
Reference faceRef=choices.PickObject(ObjectType.Face);
if(faceRef!=null)
{
Element elem = doc.GetElement(faceRef);
if(elem!=null)
{
var face = elem.GetGeometryObjectFromReference(faceRef);
if(face!=null)
{
TaskDialog.Show("Info",face.GetType().Name);
}
}
}
}
В активном документе все прекрасно работает. Проблема в том что проектировщики архитектуру хранят в отдельном файле и подгружают их как ссылку. Метод PickObject не срабатывает на элементах внутри документов ссылок. Существует ли способ выбора и получения граней ссылочных документов наподобие метода PickObject чтобы проектировщик сам выбирал грань с которой работать?
Пока что единственный вариант какой приходит в голову это использовать ObjectType.LinkedElement, затем как-то обрабатывая геометрию, находить ближайшую грань к элементу для которого нужно расставлять крепление.