ADN Open CIS
Сообщество программистов Autodesk в СНГ

22/03/2015

Определение идентификатора или геометрических ссылок вершин кривой

Вопрос: Я пытаюсь получить вершины всех граней в Revit.

Я пробовал воспользоваться методом Edge.AsCurve().GetEndPoint(0/1), который возвращает координаты начальной и конечной точки кривой.

Но мне также хотелось бы получить уникальный идентификатор каждой вершины, таким образом, чтобы я мог исключить повторяющиеся вершины.

Опубликовано 22.03.2015     Читать далее >>>
21/03/2015

Событие по изменению выделенного элемента

Много разработчиков интересуются возможностью получить оповещения, когда меняется выделение текущего объекта в пользовательском интерфейсе.

Я уже обсуждал реализацию данной возможности в статье Использования события Idling для отслеживания выделения объектов (на англ.) и одним из ключевых аспектов обсуждения являлись так называемые уровни возникновения события, т.е. различные возможности приложения реагировать на изменения объектов в модели.

Опубликовано 21.03.2015     Читать далее >>>
10/03/2015

Пример использования метода PostRequestForElementTypePlacement

Метод NewFamilyInstance предоставляет возможность программно создать новый экземпляр семейства в проекте или вложенный экземпляр семейства в редакторе семейств.

Но он совсем не поддерживает какие-либо взаимодействие с пользователем.

Небольшое взаимодействие с пользователем появилось в методе PromptForFamilyInstancePlacement, который был представлен в Revit 2011 API.

По крайней мере он показывает пред просмотр экземпляра семейства и предлагает пользователю выбрать месторасположение экземпляра.

Опубликовано 10.03.2015     Читать далее >>>
09/03/2015

Открытие файла проекта в событиях Revit API

Вопрос: Довольно понятная и четкая ошибка возникает при попытке выполнить метод Application.OpenandActivateDocument() дважды (т.е. пока нет активных документов, метод работает).

Я пробую выполнить этот метод в обработчике события Idling. Я думал я могу выполнять открытие документа в обработчике события.

Опубликовано 09.03.2015     Читать далее >>>
08/03/2015

Определение типа поверхности под выбранной точкой

Вопрос: Я пишу надстройку для Revit 2015 где мне нужно вставить семейство в проект.

Я хочу вставить семейство сразу на поверхность существующего элемента. Но, в зависимости от ситуации, я должен его вставить на различный тип поверхности. Например, на плоскую поверхность или цилиндрическую. Проблема в том, что я не могу определить тип поверхности перед тем как делать вставку.

Опубликовано 08.03.2015     Читать далее >>>
25/02/2015

Как добавить связь с файлом Revit

В Revit можно создать связь с другим файлом Revit в помощью команды Вставка > Связать с Revit.

 

А как можно сделать то же самое, но используя API?

Опубликовано 25.02.2015     Читать далее >>>
24/02/2015

Как программно извлечь список горячих клавиш

Вопрос: Подскажите как можно получить список горячих клавиш с помощью Revit API.

Опубликовано 24.02.2015     Читать далее >>>
23/02/2015

Как получить параметры доступные для использования фильтрации спецификации

В Revit мы можем создать спецификацию с определенным фильтром. Таким образом, только элементы, удовлетворяющие фильтру, будут выведены в спецификации. Например, мы можем выбрать элементы, находящиеся только на уровне 1.

Есть ли какой-либо способ, получить все параметры, по которым можно отфильтровать для заданной категории?

Опубликовано 23.02.2015     Читать далее >>>
22/02/2015

Пример использования групп транзакций

Вопрос: Я создаю приложение, в котором мне нужно:

  1. Загрузить семейство из файла
  2. Получить объект FamilyManager из редактора семейств и получить доступ к некоторым параметрам.
  3. Поместить экземпляр семейства в проект.

Загрузка семейства в проект, осуществляется в транзакции.  Затем, чтобы открыть редактор семейств, транзакция должна быть закрыта. А для размещения экземпляра изменённого семейства в проект, транзакция снова должна быть открыта.

По этой причине Revit создает два состояния, которые можно отменить с помощью операция «Отмена» - одно для каждой транзакции.

Если ли способ объединить две транзакции в одну, таким образом, чтобы была лишь одна операции отмены?

Я использую TransactionMode.Manual.

Опубликовано 22.02.2015     Читать далее >>>
21/02/2015

Автозагрузка проекта при запуске Revit

Вопрос: Мне интересно, как можно загрузить файл автоматически при загрузке Revit.

Класс UIControlledApplication является единственным параметром метода OnStartup класса, реализующего интерфейс IExternalApplication. А метод OpenAndActivateDocument есть только в классе UIApplication.

Как же вызвать метод UIApplication.OpenAndActivateDocument из метода OnStartup? Или может как-то можно решить эту проблему по-другому?

Опубликовано 21.02.2015     Читать далее >>>
15/02/2015

Сортировка и расположение кривых для создания замкнутого контура

Мне нужно определить полигон, определяющий границу мебели и оборудования для манипуляций с ним на мобильном устройстве.

Для отображения полигона с помощью SVG в браузере мобильного устройства мне определенно необходим набор последовательных кривых, образующих замкнутый контур.

Я упоминал использование класса ExtrusionAnalyzer для определения границ экземпляра семейства. При тестировании данного подхода, я обнаружил, что возвращаемые кривые не отсортированы.

Опубликовано 15.02.2015     Читать далее >>>
14/02/2015

Прерывание вставки экземпляра семейства

Вопрос: В некоторых случаях нам нужно ограничить вставку семейства при использовании метода PromptForFamilyInstancePlacement() и разершить пользователю вставить только одно семейство.

Опубликовано 14.02.2015     Читать далее >>>
25/01/2015

Как получить зеркальный объект после применения метода ElementTransformUtils.MirrorElement

Для получения симметричного объекта в Revit API есть два метода:

  • ElementTransformUtils.MirrorElement
  • ElementTransformUtils.MirrorElements

Проблема в том, что эти методы не возвращают какое-либо значение. А это значит, что на прямую мы не можем получить результат, т.е. объект, полученный в результате зеркального отображение исходного объекта.

Опубликовано 25.01.2015     Читать далее >>>
24/01/2015

Скрыть все элементы кроме элементов заданной системыАвтор: Виктор Чекалин

Скрыть все элементы, кроме элементов заданной системы

На форуме, у пользователя goblya, возник интересный вопрос. Так как решение его проблемы оказалось не таким-то уж и простым, и пришлось повозиться с окончательным решением, то решил создать статью с решением.

Итак, задача. Необходимо скрыть все элементы на виде, кроме элементов системы, к которой принадлежит выбранный элемент.

У пользователя это почти получилось. Действовал он в правильном направлении, однако, некоторые элементы все же не скрывались.

Опубликовано 24.01.2015     Читать далее >>>
23/01/2015

Как получить все доступные параметры экземпляра для категорииАвтор: Виктор Чекалин

Получить все параметры заданной категории можно двумя способами.

Первый заключается в том, что нужно получить объект в модели заданной категории и взять его коллекцию параметров.

Опубликовано 23.01.2015     Читать далее >>>
12/01/2015

Извлечение информации о материале

Вопрос: Как можно с помощью Revit API извлечь типовые свойства представления материала и файл изображения выдавливания?

Я добрался до некоторых свойств представления материала:

Код - C#: [Выделить]
 foreach (Element elem in collector)

  {

    Material mat = elem as Material;

    AppearanceAssetElement ae = (AppearanceAssetElement)

      m_CurrentDocument.GetElement(mat.AppearanceAssetId);

    Asset set = ae.GetRenderingAsset();

    ......

  }

Но как получить название и путь к файлу?

Опубликовано 12.01.2015     Читать далее >>>
11/01/2015

Запись данных в расширяемую область хранения при импорте IFC

Вопрос: я успешно изменил модуль экспорта в IFC и добавил экспорт данных из расширяемой области хранения.

Сейчас мне нужно изменить модуль импорта IFC файла для записи этих данных обратно в расширяемую область хранения. Как это можно реализовать?

Опубликовано 11.01.2015     Читать далее >>>
10/01/2015

Двумерные координаты конечных точек кривой на 3D-виде

Мне всегда нравились вопросы по геометрии, даже если они достаточно простые. Этот вопрос возможно не такой уж и простой.

Вопрос: Я хочу получить двумерные координаты конечных точек кривой, находясь в 3D-виде.

Опубликовано 10.01.2015     Читать далее >>>
30/12/2014

Ошибка при создании арматурных стержней из кривых

Мы знаем, что создать арматуру можно с помощью нескольких перегруженных методов. Одним из них является метод CreateFromCurves:

Код - C#: [Выделить]
 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);

Опубликовано 30.12.2014     Читать далее >>>