Определение идентификатора или геометрических ссылок вершин кривой
Вопрос: Я пытаюсь получить вершины всех граней в Revit.
Я пробовал воспользоваться методом Edge.AsCurve().GetEndPoint(0/1), который возвращает координаты начальной и конечной точки кривой.
Но мне также хотелось бы получить уникальный идентификатор каждой вершины, таким образом, чтобы я мог исключить повторяющиеся вершины.
Как получить название свойства материала для изменения
Событие по изменению выделенного элемента
Много разработчиков интересуются возможностью получить оповещения, когда меняется выделение текущего объекта в пользовательском интерфейсе.
Я уже обсуждал реализацию данной возможности в статье Использования события Idling для отслеживания выделения объектов (на англ.) и одним из ключевых аспектов обсуждения являлись так называемые уровни возникновения события, т.е. различные возможности приложения реагировать на изменения объектов в модели.
Пример использования метода PostRequestForElementTypePlacement
Метод NewFamilyInstance предоставляет возможность программно создать новый экземпляр семейства в проекте или вложенный экземпляр семейства в редакторе семейств.
Но он совсем не поддерживает какие-либо взаимодействие с пользователем.
Небольшое взаимодействие с пользователем появилось в методе PromptForFamilyInstancePlacement, который был представлен в Revit 2011 API.
По крайней мере он показывает пред просмотр экземпляра семейства и предлагает пользователю выбрать месторасположение экземпляра.
Открытие файла проекта в событиях Revit API
Вопрос: Довольно понятная и четкая ошибка возникает при попытке выполнить метод Application.OpenandActivateDocument() дважды (т.е. пока нет активных документов, метод работает).
Я пробую выполнить этот метод в обработчике события Idling. Я думал я могу выполнять открытие документа в обработчике события.
Определение типа поверхности под выбранной точкой
Вопрос: Я пишу надстройку для Revit 2015 где мне нужно вставить семейство в проект.
Я хочу вставить семейство сразу на поверхность существующего элемента. Но, в зависимости от ситуации, я должен его вставить на различный тип поверхности. Например, на плоскую поверхность или цилиндрическую. Проблема в том, что я не могу определить тип поверхности перед тем как делать вставку.
Как добавить связь с файлом Revit
В Revit можно создать связь с другим файлом Revit в помощью команды Вставка > Связать с Revit.
А как можно сделать то же самое, но используя API?
Как программно извлечь список горячих клавиш
Вопрос: Подскажите как можно получить список горячих клавиш с помощью Revit API.
Как получить параметры доступные для использования фильтрации спецификации
В Revit мы можем создать спецификацию с определенным фильтром. Таким образом, только элементы, удовлетворяющие фильтру, будут выведены в спецификации. Например, мы можем выбрать элементы, находящиеся только на уровне 1.
Есть ли какой-либо способ, получить все параметры, по которым можно отфильтровать для заданной категории?
Пример использования групп транзакций
Вопрос: Я создаю приложение, в котором мне нужно:
- Загрузить семейство из файла
- Получить объект FamilyManager из редактора семейств и получить доступ к некоторым параметрам.
- Поместить экземпляр семейства в проект.
Загрузка семейства в проект, осуществляется в транзакции. Затем, чтобы открыть редактор семейств, транзакция должна быть закрыта. А для размещения экземпляра изменённого семейства в проект, транзакция снова должна быть открыта.
По этой причине Revit создает два состояния, которые можно отменить с помощью операция «Отмена» - одно для каждой транзакции.
Если ли способ объединить две транзакции в одну, таким образом, чтобы была лишь одна операции отмены?
Я использую TransactionMode.Manual.
Автозагрузка проекта при запуске Revit
Вопрос: Мне интересно, как можно загрузить файл автоматически при загрузке Revit.
Класс UIControlledApplication является единственным параметром метода OnStartup класса, реализующего интерфейс IExternalApplication. А метод OpenAndActivateDocument есть только в классе UIApplication.
Как же вызвать метод UIApplication.OpenAndActivateDocument из метода OnStartup? Или может как-то можно решить эту проблему по-другому?
Сортировка и расположение кривых для создания замкнутого контура
Мне нужно определить полигон, определяющий границу мебели и оборудования для манипуляций с ним на мобильном устройстве.
Для отображения полигона с помощью SVG в браузере мобильного устройства мне определенно необходим набор последовательных кривых, образующих замкнутый контур.
Я упоминал использование класса ExtrusionAnalyzer для определения границ экземпляра семейства. При тестировании данного подхода, я обнаружил, что возвращаемые кривые не отсортированы.
Прерывание вставки экземпляра семейства
Вопрос: В некоторых случаях нам нужно ограничить вставку семейства при использовании метода PromptForFamilyInstancePlacement() и разершить пользователю вставить только одно семейство.
Как получить зеркальный объект после применения метода ElementTransformUtils.MirrorElement
Для получения симметричного объекта в Revit API есть два метода:
- ElementTransformUtils.MirrorElement
- ElementTransformUtils.MirrorElements
Проблема в том, что эти методы не возвращают какое-либо значение. А это значит, что на прямую мы не можем получить результат, т.е. объект, полученный в результате зеркального отображение исходного объекта.
Скрыть все элементы кроме элементов заданной системыАвтор: Виктор Чекалин
Скрыть все элементы, кроме элементов заданной системы
На форуме, у пользователя goblya, возник интересный вопрос. Так как решение его проблемы оказалось не таким-то уж и простым, и пришлось повозиться с окончательным решением, то решил создать статью с решением.
Итак, задача. Необходимо скрыть все элементы на виде, кроме элементов системы, к которой принадлежит выбранный элемент.
У пользователя это почти получилось. Действовал он в правильном направлении, однако, некоторые элементы все же не скрывались.
Как получить все доступные параметры экземпляра для категорииАвтор: Виктор Чекалин
Получить все параметры заданной категории можно двумя способами.
Первый заключается в том, что нужно получить объект в модели заданной категории и взять его коллекцию параметров.
Извлечение информации о материале
Вопрос: Как можно с помощью Revit API извлечь типовые свойства представления материала и файл изображения выдавливания?
Я добрался до некоторых свойств представления материала:
foreach (Element elem in collector){
Material mat = elem as Material;
AppearanceAssetElement ae = (AppearanceAssetElement)
m_CurrentDocument.GetElement(mat.AppearanceAssetId);
Asset set = ae.GetRenderingAsset();
......
}
Но как получить название и путь к файлу?
Запись данных в расширяемую область хранения при импорте IFC
Вопрос: я успешно изменил модуль экспорта в IFC и добавил экспорт данных из расширяемой области хранения.
Сейчас мне нужно изменить модуль импорта IFC файла для записи этих данных обратно в расширяемую область хранения. Как это можно реализовать?
Двумерные координаты конечных точек кривой на 3D-виде
Мне всегда нравились вопросы по геометрии, даже если они достаточно простые. Этот вопрос возможно не такой уж и простой.
Вопрос: Я хочу получить двумерные координаты конечных точек кривой, находясь в 3D-виде.
Ошибка при создании арматурных стержней из кривых
Мы знаем, что создать арматуру можно с помощью нескольких перегруженных методов. Одним из них является метод CreateFromCurves:
public static Rebar CreateFromCurves(Document doc, RebarStyle style, RebarBarType barType,
RebarHookType startHook, RebarHookType endHook, Element host,
XYZ norm, IList<Curve> curves,
RebarHookOrientation startHookOrient,
RebarHookOrientation endHookOrient,
bool useExistingShapeIfPossible, bool createNewShape);