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

28/08/2015

Это экземпляр приложения Civil 3D?Автор: Дмитрий Загорулькин

Это .NET версия кода, размещенная моим коллегой (оригинал тут), переработанная под Civil 3D.

Когда мы получаем экземпляр запущенного приложения AutoCAD, мы не знаем, что это за вертикальный продукт, так как все они базируются на одной платформе. Чтобы определить, с чем мы имеем дело, мы должны как-то это проверить. И это как раз то, что делает этот код:

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

Использование ReferenceIntersector со связанными файлами

Вопрос: Согласно документации к API, а также предварительного тестирования, ReferenceIntersector не находит пересечения с элементами в связанных файлах в Revit 2015.

Например, мы не сможем найти, что кабельный канал пересекает стену.

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

Очистка словарных записей в файле dwg

Достаточно давно на работе я столкнулся с необходимостью очистки файла dwg от словарных записей. Основная работа выполняется в AutoCAD2009x64, и, казалось бы, ничего сложного быть не должно.
Опубликовано 26.08.2015     Читать далее >>>
25/08/2015

Доступ к IfcGUID импортированной стены

Вопрос: У меня есть стена, которая в IFC файле задана с идентификатором ‘3lDzp1LFjDqwXDAihsyNrA’ и выглядит примерно так:

Код: [Выделить]
  #615 = IFCWALLSTANDARDCASE( '3lDzp1LFjDqwXDAihsyNrA',

    #42, '\X2\6A196E9658C1\X0\:(P)PC200:1185289', $,

    '\X2\6A196E9658C1\X0\:(P)PC200:794115',

    #587, #613, '1185289' );

Как можно получить IFC GUID '3lDzp1LFjDqwXDAihsyNrA' для этой стены в модели Revit?

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

Получение списка видимых примитивов в динамическом блоке

Членом ADN был задан следующий вопрос:

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

Решение основывается на предложении Тони Танзилло из этого сообщения на форуме.

Решение:

К сожалению API динамических блоков ограничено и нет прямого пути для получения этой информации. Эта информация в словаре расширения динамического блока и требуется смотреть на свойства экземпляра класса "AcDbBlockVisibilityParameter" (это родной класс ObjectARX, но он недоступен через публичные API ни в C++, ни в .NET).

Так что требуется несколько больше работы для получения этой информации. Вот несколько шагов:

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

Как сохранить идентификатор объекта в словаре расширения другого объекта?

Следующий код показывает как это сделать. Обратите внимание, что необходимо преобразовать ObjectId в ads_name для сохранения результата в Xrecord, и наоборот для получения ObjectId из буфера результата Xrecord. Также отметьте, что необходимо передать ссылку на первый элемент цепочки буферов методу setFromRbChain() вместо указателя на resbuf.

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

Добавление словаря расширения

Для каждого объекта AutoCAD можно сохранить его пользовательские данные. Обычно это делается для графических примитивов, когда для них сохраняется неграфическая информация. Например, для отрезка AutoCAD можно сохранить строку и/или число (в его словаре расширения). Следующий код показывает как можно добавить в словарь расширения плавающее число и строку.
Опубликовано 19.08.2015     Читать далее >>>
19/08/2015

Объект Security в PLM 360

Рассматриваются особенности обекта Security в PLM 360
Опубликовано 19.08.2015     Читать далее >>>
17/08/2015

Состояние объекта - Свойство Master

Рассматриваются свойства объекта Master в PLM 360
Опубликовано 17.08.2015     Читать далее >>>
14/08/2015

Добавление нового положения файла при помощи Sheetset API

Вот кусок кода, добавляющий новое положение файла и устанавливает новое положение листа при помощи Sheetset API :
Опубликовано 14.08.2015     Читать далее >>>
13/08/2015

Реакторы внешних ссылок

На работе понадобилось "причесать" стандартный механизм обработки внешних ссылок, используемый в AutoCAD. VISRETAIN (о которой недавно была статья) установлена равной 1. Файл подосновы вставляется как вставленная ссылка в файл основных решений. В файле основных решений выключаются и/или замораживаются некоторые слои. Файл, естественно, сохраняется. Потом файл основных решений используется как внешняя ссылка в текущей работе. И вот тут вылезает очень интересная штука: при вставке "основных решений" состояние слоев "подосновы" не подхватывается и берется именно в том виде, в каком оно есть в исходном файле ("подосновы"). Оставлю за скобками правильность такого решения Autodesk, равно как и требования пользователей "брать то состояние слоев, которое есть в файле основных решений" - надо сделать так, чтобы читалось. Понятно, что надо обрабатывать в реакторах. Вот об этом и расскажу.
Опубликовано 13.08.2015     Читать далее >>>
13/08/2015

Твердые тела и поверхности Fusion - Часть 3

Рассматриваются особенности топологии Fusion 360
Опубликовано 13.08.2015     Читать далее >>>
11/08/2015

Твердые тела и поверхности Fusion - Часть 4

Рассматриваются особенности топологии Fusion 360
Опубликовано 11.08.2015     Читать далее >>>
10/08/2015

Как удалить полностью словарь расширения (ExtDict) примитива средствами .NET?Автор: Александр Ривилис

Как удалить полностью словарь расширения (ExtDict) примитива средствами .NET?

В статье Как удалить полностью словарь расширения (ExtDict) примитива? описано как это сделать средствами ObjectARX. Ниже приводится код как тоже самое можно сделать при помощи AutoCAD .NET API:

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

Установка положения MText для каждого из масштабов аннотаций

Для аннотативного MText его положение можно менять при помощи ручек. Это положение специфическое для каждого из масштабов аннотаций чертежа. В данный момент не существует публичного API для установки положения аннотативного примитива для каждого масштаба программным путём. В качестве альтернативного метода можно использовать установку масштаба перед установкой положения. Этот пример кода проходит по коллекции масштабов и устанавливает позицию MText для каждого из масштабов.

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

Твердые тела и поверхности Fusion - Часть 2

Рассматриваются особенности топологии Fusion 360
Опубликовано 08.08.2015     Читать далее >>>
06/08/2015

Как показать иерархическое меню в Ленте

Если вам нужно показать простой (одноранговый) список – подойдёт RibbonSplitButton. О нём есть соответствующая статья. Но если вам нужно организовать иерархическое меню - подойдёт RibbonMenuButton. Ниже пример кода, создающий меню как на следующей картинке:
Опубликовано 06.08.2015     Читать далее >>>
05/08/2015

О методе AcDbObject::releaseExtensionDictionary

В чем разница между вызовом метода erase() непосредственно для словаря расширения (extension dictionary) и вызовом releaseExtensionDictionary() для объекта-владельца?

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

Фундаментальное различие между вызовом releaseExtensionDictionary() для родительского объекта и вызовом erase() для словаря расширения становится совершенно очевидным если посмотреть на результаты вызова двух других методов работы со словарём расширения: extensionDictionary и createExtensionDictionary. Рассмотрим следующие две последовательности:

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

Как удалить полностью словарь расширения (ExtDict) примитива?Автор: Александр Ривилис

Вопрос:
Как удалить полностью словарь расширения (ExtDict) примитива?

Ответ:
В статье О методе AcDbObject::releaseExtensionDictionary описано как и для чего использовать этот метод. Однако для того, чтобы воспользоваться эти методом следует сначала очистить (т.е. удалить все элементы) словаря расширения. Следующий код показывает, как это сделать и результаты его работы:

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

НПИ (CUI) и прозрачные картинки

До AutoCAD 2014 включительно, AutoCAD использует только формат BMP в CUI. Так как формат BMP не поддерживает прозрачность, AutoCAD использует RGB-цвет 192,192,192 как прозрачный. Пользователи AutoCAD могут использовать эту особенность в CUI.

Но это ограничивает возможность использования прозрачности только фоновым цветом 192,192,192. Любые другие фоновые цвета становятся видимыми в CUI.

Начиная с AutoCAD 2015 (и в более новых версиях), вы можете использовать формат PNG для картинок. Так как PNG формат поддерживает прозрачность, вы можете установить прозрачность для картинки и не ограничены только фоновым цветом 192,192,192.

Если у вас есть картинка в формате BMP с фоновым цветом (типа 192,192,192) тогда вызов “Bitmap.MakeTransparent” API поможет конвертировать этот цвет в прозрачный. Следующий код конвертирует BMPс фоновым цветом 192,192,192 в прозрачный PNG

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