Как добавить связь с файлом 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);
Текстуры для произвольной фигуры
Вопрос: Можно ли задать текстуру (материал) для произвольной фигуры?
Создание зависимостей труб по осевой линии
Заказчик хочет использовать Revit API для создания зависимостей двух труб по центру их осей. Я думаю, это вполне осуществимо, и вот такой у меня родился план действий:
- Получить осевую линию труб с помощью метода Element.get_Geometry()
- Создать новую зависимость методом Document.Create.NewAlignment()
Категории для произвольной фигуры
Вопрос: Я хотел бы создать произвольные фигуры (DirectShape) для визуального отображения разлиных типов балок и поместить их в различные категории. Пока что я могу создать их только во встроенной категории, например, вот так:
ElementId id = new ElementId(BuiltInCategory.OST_StructuralFraming );
DirectShape ds = DirectShape.CreateElement(
doc, id, "A", "B" );
А могу ли я создать свою категорию и использовать ее при создании фигуры?
Поворот на Пи
Вопрос: Я пытаюсь создать приложение, которое переведет модель из SolidWorks в Revit. Идея состоит в том, чтобы перерисовать модель SolidWorks в Revit.
Я столкнулся с очень странным поведением метода ElementTransformUtils.RotateElement, и мне интересно, сталкивались вы с этим или может у вас есть какие мысли по этому поводу.
Пересечение всех экземпляров семейств с элементом
Вопрос: Как я могу найти все колонны, которые пересекают заданную стену?
Ответ: В Revit API нет метода, который позволили бы определить отношения между колоннами и стеной.
Полезный вспомогательный класс для выбора двух элементов
Вчера мы обсуждали как создать размер между центрами семейств. Код команды, переведённый в том примере, довольно небольшой.
Это обусловлено тем, что я использовал новый вспомогательный класс JtPairPicker, который помогает выбрать два элемента в модели.
Его можно использовать везде, где вам нужно автоматически или интерактивно в модели выбрать два элемента одного типа.