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

14/09/2014

Определение типа электрооборудования

Вопрос: Как правильно определить различия между распределительным щитом и щитом осветительных и бытовых приборов с помощью API? Например, из базового примера проекта Revit MEP, как мне определить тип оборудования SWB и MDP-1?

 

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

Ассоциативный Массив и его API

В AutoCAD 2012 появился так называемый ассоциативный массив. Одновременно с этим появилось и API для его создания, редактирования и получения информации о существующем ассоциативном массиве. Например, вот так можно получить характеристики массива:

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

Уникальность наименования и класс NamingUtils

В Revit API полно сюрпризов. Вот один из них, которых правел нас к новому вспомогательному классу, который раньше был не замеченным.

Опубликовано 13.09.2014     Читать далее >>>
10/09/2014

Как удалить неиспользуемые и необработанные ссылки на данные (DataLink)?Автор: Александр Ривилис

Для необработанных ссылок на данные свойство IsValid всегда равно false. А вот с неиспользуемыми ссылками на данные несколько сложнее. Метод DataLink.GetTargets() возвращает коллекцию ObjectId объектов/примитивов, которые используют эту связь. Если таблица (Table) использовала связь, то её ObjectId содержится в коллекции DataLink.GetTargets(). Если эту таблицу стереть, то DataLink.GetTargets() не будет содержать ObjectId таблицы, а будет содержать ObjectId для объекта TableContent (это не примитив, т.е. не является наследником Entity). Таким образом, если DataLink.GetTargets() не содержит ObjectId ни одного примитива, то соответственно он не используется и его можно удалить. Следующий код это и показывает:

Опубликовано 10.09.2014     Читать далее >>>
08/09/2014

Как получить неиспользуемые внешние ссылки, растры и подложки?Автор: Александр Ривилис

Вопрос: Мне нужно средствами AutoCAD .NET API получить неиспользуемые внешние ссылки (XREF), растры (IMAGE), pdf-подложки (PDFUNDERLAY) и dwf-подложки (DWFUNDERLAY). Как это можно сделать?

Ответ: Для внешних ссылок достаточно найти все записи таблицы блоков (BlockTableRecord), свойство XrefStatus которых отлично от NotAnXref и для них справедливо выражение GetBlockReferenceIds(false, true).Count == 0

Для растров и подложек процедура несколько иная. Необходимо найти соответствующую таблицу (ACAD_IMAGE_DICT – для IMAGE, ACAD_PDFDEFINITIONS – для PDFUNDERLAY, ACAD_DWFDEFINITIONS – для DWFUNDERLAY) и получить из неё все ObjectId элементов. После этого достаточно воспользоваться методом Database.Purge(), чтобы получить только те ObjectId элементов, которые не используются.

Опубликовано 08.09.2014     Читать далее >>>
04/09/2014

Лёгкое программирование под Autodesk Vault Часть 38Автор: Дмитрий Емельянов

Свойства. Введение
Опубликовано 04.09.2014     Читать далее >>>
01/09/2014

Лёгкое программирование под Autodesk Vault Часть 37Автор: Дмитрий Емельянов

Элементы. Обновление информации
Опубликовано 01.09.2014     Читать далее >>>
28/08/2014

Лёгкое программирование под Autodesk Vault Часть 36Автор: Дмитрий Емельянов

Элементы. Создание
Опубликовано 28.08.2014     Читать далее >>>
28/08/2014

Версия документа и количество сохранений

Александр Бушман (Alexander Buschmann) из компании IDAT Ingenieurbüro für Datenverarbeitung in der Technik GmbH прокомментировал статью о том, как отследить изменение семейства:

В Revit 2015 есть класс DocumentVersion, в котором есть свойства GUID и количество сохранений файла.

Имея эту информацию можно определить, были ли сделаны изменения или нет.

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

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

Лёгкое программирование под Autodesk Vault Часть 35Автор: Дмитрий Емельянов

Элементы. Получение информации
Опубликовано 27.08.2014     Читать далее >>>
27/08/2014

Обработка случая дублирования типоразмеров при копировании элементов через API

При использовании метода ElementTransformUtils.CopyElements можно получить вот такое вот предупреждение:

 

Обработка случая дублирования типоразмеров при копировании элементов через API

Это окно может появится, когда вы копируете тип, которого не существует в проекте, но вложенный тип уже находится в этом же проекте.

Опубликовано 27.08.2014     Читать далее >>>
26/08/2014

Синхронизация видов Пространства Модели

Это пример кода синхронизирующий параметры двух ВЭкранов пространства Модели. Для простоты код подразумевает, что Пространство Модели уже разделено вертикально на два ВЭкрана одинаковой ширины. Если ширина ВЭкранов не одинакова код сделает её одинаковой перед синхронизацией параметров ВЭкранов.

Опубликовано 26.08.2014     Читать далее >>>
25/08/2014

Добавление пространственного фильтра к вставке блока

В этой статье сделаны небольшие исправления для существующей статьи написанной моим коллегой Xiaodongв 2013, связанные с внутренними изменениями, которые приводят к аварийному завершению AutoCAD 2015 на 32-разрядных машинах. Чтобы предотвратить это я написал универсальный код.
Опубликовано 25.08.2014     Читать далее >>>
22/08/2014

Импортирование фильтров слоев

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

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

Опубликовано 22.08.2014     Читать далее >>>
21/08/2014

Изменение стадии вида

Вопрос: Возможно ли изменение стадии вида? Например, хотелось бы видеть свойство типа View.Phase.

Я попробовал изменить стадию, но безрезультатно.

Спасибо за помощь.

Опубликовано 21.08.2014     Читать далее >>>
21/08/2014

Подрезка внешних ссылок при помощи ObjectARX

Этот класс используется для определения пространственного фильтра, который AutoCAD использует для создания определения объемного отсечения вхождения блока внешней ссылки в основном чертеже. AutoCAD использует эту пространственный фильтр, чтобы решить, будет ли этот объекты с указанными ID обрабатываться при регенерации.

Ниже небольшой пример. Примечание: команда должна быть определена с флагом ACRX_CMD_NOINTERNALLOCK

Опубликовано 21.08.2014     Читать далее >>>
20/08/2014

Метод AcDbRegion::transformBy

Вопрос: У меня есть ситуации, в которых использование метода AcDbRegion::transformBy дает различные результаты в AutoCAD 2015 и в AutoCAD 2014 Можете ли Вы объяснить, что изменилось в этом методе, что приводит к различным результатам?

Ответ: Этот сценарий работал в AutoCAD 2014, потому что мы использовали больший допуск (equalPoint равный 1.0E-8 и equalVector равный 1.0E-6). В AutoCAD 2015 установка допуска не делается, так что это повлияло на некоторые сценарии выполнения ряда методов. Ниже указано как можно обойти эту ситуацию. Спасибо партнеру ADN, который показал нам такой вариант поведения.

Опубликовано 20.08.2014     Читать далее >>>
18/08/2014

Каждая кнопа на ленте привязана только к одной команде

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

Опубликовано 18.08.2014     Читать далее >>>
18/08/2014

Лёгкое программирование под Autodesk Vault Часть 34Автор: Дмитрий Емельянов

Элементы. Введение
Опубликовано 18.08.2014     Читать далее >>>
15/08/2014

Обновление файлов семейств без отображения диалога. Часть 2

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

Предложения были такими:

Разработчик, которого интересовал этот вопрос, попытался использовать эти способы. Я хотел бы обсудить что в итоге вышло.

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