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

05/06/2014

Создание мультиполигона в AutoCAD средствами .NET API

Мультиполигон (MPolygon) – это пользовательский объект созданный для AutoCAD Map 3D. Но он доступен и в чистом AutoCAD и с ним можно работать средствами ObjectARX. Чтобы работать с ним в .NET необходимо добавить добавить ссылку на AcMPolygonMGD.dllи кроме того требуется, чтобы файл AcMPolygonObjNN.dbx (где NN = 19 для AutoCAD 2013 и 2014 и NN = 20 для AutoCAD 2015) загружен в AutoCAD до вызова любого из методов MPolygon. Оба этих файла содержатся в корневом каталоге AutoCAD.
Опубликовано 05.06.2014     Читать далее >>>
03/06/2014

Получение штриховки (Hatch) из мультиполигона (MPolygon)Автор: Александр Ривилис

Вопрос: В dwg-файле имеется множество мультиполигонов (MPolygon). Как из них можно получить штриховки (Hatch)? Метод MPolygon.Hatch в большинстве случаев дает штриховку, у которой в панели свойств неопределенна площадь.

Ответ: Ниже приводится код, который позволяет получить из MPolygon корректную (т.е. имеющую площадь) штриховку.

Опубликовано 03.06.2014     Читать далее >>>
31/05/2014

Идентификаторы элементов в Revit - Часть 4. Числовой и уникальный идентификатор меняется при повторном импорте

Предыдущие части:

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

В результате, все ссылки на связанную модель (вне IFC), такие как размерность, потерялись, после того, как мы заново импортировали отредактированную модель. Нам пришлось повторно подгонять импортированную модель.

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

Лёгкое программирование под Autodesk Vault. Часть 23

Vault API предоставляет множество методов для получения информации о файлах. Для этого используются функции Get* и Find*, которые расположены в службах DocumentService и DocumentServiceExtensions.
Опубликовано 30.05.2014     Читать далее >>>
29/05/2014

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

Получение общей информации по хранилищам
Опубликовано 29.05.2014     Читать далее >>>
29/05/2014

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

Добавление хранилищ на сервер Vault
Опубликовано 29.05.2014     Читать далее >>>
29/05/2014

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

Vault API предоставляет множество методов для работы с файлами. Поскольку большинство информации расположено в файлах, это довольно большая область API.
Опубликовано 29.05.2014     Читать далее >>>
28/05/2014

Идентификаторы элементов в Revit - Часть 3. Отрицательные значения ElementId

Предыдущие части:

Вопрос: Иногда я вижу отрицательные значения ElementId. Что это, и почему такое может быть?

Опубликовано 28.05.2014     Читать далее >>>
28/05/2014

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

Обновление свойств пользователей при помощи Autodesk Vault API.
Опубликовано 28.05.2014     Читать далее >>>
28/05/2014

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

Vault API предоставляет ряд методов для работы с хранилищами. Они расположены в службах FilestoreVaultService и KnowledgeVaultService. На основании сводной таблицы вы можете получить представление об этих методах.
Опубликовано 28.05.2014     Читать далее >>>
28/05/2014

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

Получение хранилищ Vault
Опубликовано 28.05.2014     Читать далее >>>
26/05/2014

Revit как сервис

За довольно короткое время уже несколько человек задавали вопрос о том можно ли использовать приложение Revit как услугу (сервис). Видимо пришло время разобрать этот вопрос поподробней.

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

Создание твердых тел выдавливанием полилинии

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

Посмотрите на следующий пример кода:

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

Создание Polyline3d без использования транзакции

Вы возможно в курсе, а может и не в курсе, что управлять примитивами в базе данных AutoCAD можно без использования транзакций... В примере ниже показано как с помощью методов Open и Close (Close происходит при выполнении закрывающейся фигурной скобки оператора using) создать Polyline3d и связанные с ней вершины PolylineVertex3d.

Мне нравится использовать Open и Close вместо транзакций по ряду причин:

Опубликовано 26.05.2014     Читать далее >>>
22/05/2014

Событие закрытия PaletteSet

PaletteSet в AutoCAD становится невидимым когда нажимается кнопка закрытия. Чтобы узнать что палитра закрыта можно использовать событие "StateChanged".
Опубликовано 22.05.2014     Читать далее >>>
21/05/2014

Доступ к Revit из внешнего приложенияАвтор: Виктор Чекалин

Как известно, официального API для доступа к Revit из внешнего приложения не существует.

Тем не менее, можно реализовать его самостоятельно, хоть и с некоторыми ограничениями.

Обращаться к методам Revit API можно только в определенных контекстах:

  • открытие/закрытие приложения (IExternalApplication.OnStartup и IExternalApplication.OnShutdown)
  • Выполнение внешней команды (IExternalCommand.Execute)
  • Событие Idling (UIApplication.Idling)
  • Внешние события (ExternalEvents)

Ни один из этих способов недоступен вне приложения Revit.

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

Определение прерывания команды при выполнении acedCommandC

Выполнение команд в AutoCAD сейчас возможна двумя способами вместо одного варианта функции acedCommand. Функция acedCommandS проще для использования, но требует задания сразу всех параметров, которые необходимы AutoCAD для завершения команды и без ввода данных пользователем. При выполнении команды при помощи функции acedCommandS её нельзя прервать.

Функция acedCommandC используется в том случае когда может возникнуть необходимость паузы для ввода данных пользователем. Тут возможно прерывание пользователем выполнения команды вместо ввода данных. Чтобы идентифицировать это событие в коде используются функции "acedCmdCWasCancelled" и "acedCallBackOnCancel". Так же в силу асинхронности функции acedCommandC, завершение команды может быть идентифицировано только в функции обратного вызова, как в следующем коде.

Опубликовано 21.05.2014     Читать далее >>>
19/05/2014

Зумирование до границ окна с использованием CommandASync

В этой статье я проиллюстрирую пример использования AutoCAD 2015 API "Editor.CommandAsync".

Вопрос: Можно ли зумировать в пределах окна до тех пор пока не будет нажата кнопка ESC или отмена?

Ответ: Да. Это возможно с помощью CommandAsync.

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

Внутри палитр инструментов AutoCAD. Подводя итоги...

Подведем некоторые итоги "разбора" состава палитр инструментов. Что необходимо делать, если самостоятельно создавать инструмент синхронизации серверных палитр у десятков / сотен пользователей?
Опубликовано 16.05.2014     Читать далее >>>
16/05/2014

Добавление значка к курсору в AutoCAD 2015 с помощью .NET

В AutoCAD API 2015 появилась возможность добавлять свой значок к курсору.

Следует отметить, что значок курсора – это BITMAP-объект. Для того, чтобы у вас был прозрачный фон помните, что в качестве прозрачного фона AutoCAD использует пикселы (R=192, G=192, B=192)

Я решил добавить значок курсора в одной команде и удалить его в другой – для того чтобы увидеть как это будет работать в начале выбора примитивов и в других случаях - но более характерно добавлять значок при запуске JIG и удалять его сразу после его завершения.

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