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

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     Читать далее >>>
29/12/2014

Текстуры для произвольной фигуры

Вопрос: Можно ли задать текстуру (материал) для произвольной фигуры?

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

Создание зависимостей труб по осевой линии

Заказчик хочет использовать Revit API для создания зависимостей двух труб по центру их осей. Я думаю, это вполне осуществимо, и вот такой у меня родился план действий:

  • Получить осевую линию труб с помощью метода Element.get_Geometry()
  • Создать новую зависимость методом Document.Create.NewAlignment()
Опубликовано 27.12.2014     Читать далее >>>
25/12/2014

Категории для произвольной фигуры

Вопрос: Я хотел бы создать произвольные фигуры (DirectShape) для визуального отображения разлиных типов балок и поместить их в различные категории. Пока что я могу создать их только во встроенной категории, например, вот так:

Код - C#: [Выделить]
  ElementId id = new ElementId(

    BuiltInCategory.OST_StructuralFraming );

 

  DirectShape ds = DirectShape.CreateElement(

    doc, id, "A", "B" );

А могу ли я создать свою категорию и использовать ее при создании фигуры?

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

Поворот на Пи

Вопрос: Я пытаюсь создать приложение, которое переведет модель из SolidWorks в Revit. Идея состоит в том, чтобы перерисовать модель SolidWorks в Revit.

Я столкнулся с очень странным поведением метода ElementTransformUtils.RotateElement, и мне интересно, сталкивались вы с этим или может у вас есть какие мысли по этому поводу.

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

Пересечение всех экземпляров семейств с элементом

Вопрос: Как я могу найти все колонны, которые пересекают заданную стену?

Ответ: В Revit API нет метода, который позволили бы определить отношения между колоннами и стеной.

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

Полезный вспомогательный класс для выбора двух элементов

Вчера мы обсуждали как создать размер между центрами семейств. Код команды, переведённый в том примере, довольно небольшой.

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

Его можно использовать везде, где вам нужно автоматически или интерактивно в модели выбрать два элемента одного типа.

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

Создание размера между центрами семейств

Вопрос: Я знаю, как создать размер между гранями двух семейств.

А как можно создать размер между центрами этих семейств?

Опубликовано 13.12.2014     Читать далее >>>
29/11/2014

Как получить все уровни, упорядоченные по высоте

Вопрос: Как я могу получить коллекцию уровней, отсортированную по высоте уровня? Пока что мне кажется, что FilteredElementCollector возвращает IEnumerable и его можно отсортировать с помощью OrderBy, затем, вызвав метод ToElementIds(), то будет создан набор идентификаторов, в уже нужном порядке. Верно?

Вот код, который я попробовал. Он не работает:

Код - C#: [Выделить]
  UIDocument uiDoc = this.ActiveUIDocument;

  Document doc = uiDoc.Document;

 

  FilteredElementCollector levCollector

    = new FilteredElementCollector( doc );

 

  ICollection<Element> levelsCollection

    = levCollector.OfClass( typeof( Level ) )

      .OrderBy( lev => lev.Elevation )

      .ToElementIds();

Кто-то может мне подсказать, что я делаю не так?

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