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

04/12/2013

Группировка заголовков спецификации

Вопрос: Я пытаюсь сгруппировать заголовки спецификации с помощью метода ViewSchedule.GroupHeaders, но все время выскакивает ошибка: "Headers could not be grouped. Parameter name: right" (Заголовки не могут быть сгруппированы. Имя параметра: right)

Ответ: Действительно. Такая проблема существует. Мы уже обсуждали ее в прошлом и предлагали некоторые решения.

Опубликовано 04.12.2013     Читать далее >>>
04/12/2013

Передача списка значений в ObjectARX из Lisp приводит к ошибке

Вопрос:

Передача списка значений в ObjectARX-функцию из Lisp приводит к ошибкам в том случае, когда некоторые значения чисел (Пример: 5011, 25111) являются частью списка. Как этого избежать?

Ответ:

Некоторые числовые значения интерпретируются как DXF-коды, что и приводит к исключениям.

Опубликовано 04.12.2013     Читать далее >>>
03/12/2013

Vault API: Пользователи и роли, часть 1

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

Опубликовано 03.12.2013     Читать далее >>>
02/12/2013

Получение копий сложных объектов без помещения их в базу

Используя ObjectARX вы можете создать копию одиночного простого объекта без помещения в базу при помощи методов clone() или copyFrom(). Но эти два метода не работают со сложными объектами, такими как AcDbBlockReference (вставка блока) с AcDbAttribute (атрибут). Как описано в документации, метод clone() вызывает метод copyFrom(), который делает поверхностную копию объекта. Другими словами, эти методы не копируют объекты атрибутов (AcDbAttribute). И не существует прямого метода в ObjectARX чтобы получить полную копию сложного объекта.

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

Как сделать невидимое определение атрибута в блоке видимым

Следующий код делает невидимые определения атрибутов в блоке видимыми, а также обновляет все вставки этого блока для того, чтобы отразить изменения в определении блока.
Опубликовано 29.11.2013     Читать далее >>>
29/11/2013

Определения API PLM 360

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

Опубликовано 29.11.2013     Читать далее >>>
28/11/2013

Локализация общих параметров

Создавая приложения и add-in'ы, необходимо помнить, что их могут использовать на компьютере с языком интерфейса отличным от вашего. Или в Revit c другим языком интерфейса.

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

Revit API поддерживает создание таких надстроек. Яркий пример – использование, к примеру, перечисления BuiltInParameters и BuiltInCategories, вместо использования локализованных названий параметров и категорий, для работы со встроенными в Revit параметрами и категориями.

Опубликовано 28.11.2013     Читать далее >>>
28/11/2013

Надстройки Vault и диспетчер приложений

Ранее Vault мог загружать надстройки только из одного расположения.  Начиная с 2014 версии, он может загружать надстройки из трёх местоположений.  Для поддержания работы менеджера приложений были добавлены два новых местоположения.  Так, если вы разработали приложение для магазина Vault Exchange, вы можете установить его в местоположения, с которыми работает App Manager.

Опубликовано 28.11.2013     Читать далее >>>
27/11/2013

Как узнать если у блока определения атрибутов?

Определения атрибутов хранятся вместе со всеми остальными примитивами, составляющими блок. А когда добавляется ссылка на блок, то вставляются и соответствующие ссылки атрибутов. Один из способов определить наличие определений атрибутов в блоке – это использование метода “BlockTableRecord.HasAttributeDefinitions” соответствующей записи таблицы блоков.
Опубликовано 27.11.2013     Читать далее >>>
25/11/2013

Удаление неиспользуемых блоков

Ниже код показывает процедуру очистки таблицы блоков. Обратите внимание на цикл Do/while для удаления вложенных блоков.
Опубликовано 25.11.2013     Читать далее >>>
22/11/2013

Удаление неиспользуемых слоёв из чертежа

Метод Database.Purge можно использовать для идентификации неиспользованных слоёв. Если установлено что слой неиспользованный, то его можно безопасно удалять из базы при помощи метода “erase”.

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

Опубликовано 22.11.2013     Читать далее >>>
20/11/2013

Удаление неиспользуемых имен приложений из базы

Метод Database.Purge API можно использовать для идентификации неиспользуемых имён приложений. Когда имена неиспользованных приложений получены, так сразу можно использовать метод “erase” для удаления их из базы.
Опубликовано 20.11.2013     Читать далее >>>
18/11/2013

Создание и доступ к информации фильтра слоёв

Ниже примеры с использованием ObjectARX и .NET создания и манипулирования фильтрами слоёв. Простейший способ для того, чтобы узнать выражение фильтра слоёв – это создать его средствами AutoCAD и использовать этот код для поиска фильтра слоёв. Это можно затем использовать в коде для создания нового фильтра слоёв.
Опубликовано 18.11.2013     Читать далее >>>
17/11/2013

Получение копии примитива

Следующий код демонстрирует использование метода “DeepCloneObjects” для получения копии примитива, который уже находится в базе. Сначала код просит указать один примитив, затем делает его «глубокую копию» и меняет цвет примитива на красный. Для идентификации нового примитива код использует класс “IdMapping”, который позволяет получить связь между оригинальным объектом и его копией.

Опубликовано 17.11.2013     Читать далее >>>
17/11/2013

Сокращенное наименование единиц измерения

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

В Revit 2014 появилось новое API для работы с единицами измерения, с помощью которого можно легко решить те проблемы, с которыми мы сталкивались ранее при работе с единицами измерения. И я еще до сих пор не изучил подробно все эти методы.

Опубликовано 17.11.2013     Читать далее >>>
16/11/2013

Обновление 2 для Revit 2014

На страничке Autodesk Revit опубликована информация о вышедшем втором обновлении для Revit 2014:

Опубликовано 16.11.2013     Читать далее >>>
15/11/2013

Генерирование данных об использовании слоёв перед очисткой/удалением

Иногда случается, что не удаётся очистить слой и его свойство "IsUsed" возвращает trueдаже если этот слой не используется. Причина этого в том, что AutoCAD хранит информацию об использованных слоях и обновляет её только тогда, когда это требуется. Чтобы форсировать обновление этих данных следует использовать метод "GenerateUsageData" объекта LayerTable.

Это пример кода, который пытается удалить записи таблицы слоёв после вызова "GenerateUsageData".

Опубликовано 15.11.2013     Читать далее >>>
14/11/2013

Как сделать невидимую вставку атрибута видимой?

Если у определения блока для данной вставки блока есть невидимое определение атрибута, тогда и у вставки блока будет невидимый атрибут. Но вы можете сделать такие атрибуты видимыми при помощи кода, как показано ниже. Невидимые вставки атрибутов идентифицируются свойством “AttributeReference.Invisible”
Опубликовано 14.11.2013     Читать далее >>>
13/11/2013

Очистка чертежа от анонимных блоков

Вопрос:

Как я могу удалить из чертежа все неименованные (и не вставленные) блоки из чертежа программно?

Ответ:

Очистить чертеж от всех неимеющих ссылок объектов можно при помощи метода PurgeAll

Опубликовано 13.11.2013     Читать далее >>>
12/11/2013

Как разместить равноудаленные друг от друга точки вдоль кривой

Как можно сгенерировать список точек, равноудаленных друг от друга, вдоль кривой?

На самом деле это довольно нетривиальная задача, так как Revit API содержит лишь методы для работы с кривыми основываясь на внутренней параметризации кривых, и не содержит методов для работы с кривыми в системе координат проекта.

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

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