Плагин AutoCAD для оптимизации производственных чертежей

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

О клиенте

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

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

  • Регион: Европа
  • Отрасль: Производство / САПР и промышленная автоматизация
  • Срок реализации: около 1 месяца

Задача

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

  • Совместить нативные и управляемые технологии. Плагин должен был объединить вычислительное ядро на ObjectARX/C++20 с пользовательским интерфейсом на C#/.NET, включая элементы ленты AutoCAD, контекстное меню и плавающую панель;
  • Обеспечить поддержку нескольких версий AutoCAD. Решение должно было работать с AutoCAD 2021-2025. Для каждой версии требовался отдельный SDK ObjectARX, при этом кодовая база должна была оставаться общей;
  • Восстанавливать контуры из отдельных примитивов. Плагину необходимо было преобразовывать независимые объекты Line, Arc, Polyline и Spline в связанные контуры без исходных данных об их смежности;
  • Учитывать требования производственного оборудования к геометрии. Обработанная геометрия должна была соответствовать ограничениям конкретного оборудования, включая допустимую погрешность аппроксимации по хорде, минимальный радиус дуги и требования к углам излома.

Наш подход

Мы выстроили процесс разработки в виде нескольких независимых инфраструктурных и алгоритмических уровней, каждый из которых можно было отдельно тестировать и дорабатывать. Нативный компонент на ObjectARX отвечал за команды AutoCAD и непосредственную работу с чертежами, отдельная библиотека на C++ — за обработку геометрии и конфигурацию, мост на C++/CLI обеспечивал взаимодействие между нативным и управляемым кодом, а пользовательский интерфейс работал на C#/.NET.

Такой подход позволил отделить критически важную бизнес-логику от зависимостей, связанных с AutoCAD, и покрыть ее модульными тестами без запуска самой программы. При этом логику интерфейса удалось оставить в управляемом коде. Для вспомогательных задач — чтения INI-файлов, работы с путями, сравнения координат и обработки ошибок — мы использовали собственные легковесные решения. Благодаря этому плагин получился предсказуемым в работе, компактным и удобным в сопровождении.

Решение

СКЭНД разработала нативный плагин ObjectARX для AutoCAD с многоуровневой архитектурой, которая объединяет высокопроизводительное ядро обработки геометрии на C++ и пользовательский интерфейс на C#/.NET. Плагин загружается непосредственно в AutoCAD, добавляет собственную вкладку на ленту, контекстное меню и плавающую WPF-панель и регистрирует команду для обработки выбранных примитивов чертежа.

В ходе обработки плагин фильтрует объекты по слою и длине, восстанавливает контуры, упрощает геометрию, аппроксимирует кривые дугами и сохраняет оптимизированный результат в отдельном слое PROCESSED.

Ключевые возможности

  • Архитектура на C++ и C#. Плагин объединяет нативное ядро на ObjectARX/C++20 и интерфейс на C#/.NET с помощью моста C++/CLI;
  • Обработка примитивов AutoCAD. Решение напрямую работает с объектами Line, Arc, Polyline и Spline в AutoCAD и фильтрует их по заданным правилам;
  • Восстановление контуров. Плагин объединяет отдельные примитивы в связанные контуры, анализируя начальные и конечные точки объектов;
  • Упрощение геометрии. Алгоритм Дугласа — Пекера снижает сложность контуров, сохраняя отклонения в пределах допустимой погрешности по хорде;
  • Аппроксимация дугами. Обработанные контуры преобразуются в дуги с учетом требований к минимальному радиусу и углу замыкания сегментов;
  • Настройка через INI-файл. Параметры, связанные с требованиями производственного оборудования, можно изменять без внесения изменений в код плагина;
  • Интерфейс, встроенный в AutoCAD. Пользователи взаимодействуют с плагином через вкладку на ленте, контекстное меню и плавающую WPF-панель;
  • Тестируемая логика на C++. Логика обработки геометрии и конфигурации вынесена в отдельную библиотеку и покрыта модульными тестами.

Скриншоты

  • Вкладка «Упрощение геометрии» и контекстное меню Вкладка «Упрощение геометрии» и контекстное меню позволяют запускать команды плагина непосредственно из стандартного интерфейса AutoCAD.
  • Настройки Ограничения производственного оборудования, выходные параметры, допуски и настройки журналирования можно задавать непосредственно в AutoCAD и сохранять в INI-файле.
  • Контур Белой линией показан результат работы команды “Упростить” - оптимизированный контур, построенный по исходным примитивам. Алгоритм устраняет ступенчатые переходы и сохраняет отклонение от исходной геометрии в пределах заданного допуска.

Технологический стек

  • Языки и платформа: C++20, C# (.NET), ObjectARX SDK 2021-2025, Visual Studio 2022
  • API AutoCAD: AcDbDatabase, AcDbLine / Arc / Polyline / Spline, acedRegCmds, AcApDocManagerReactor, acedGetCurrentSelectionSet
  • Взаимодействие C++ и .NET: сборка C++/CLI в качестве связующего слоя, LoadLibrary + GetProcAddress для динамической загрузки
  • Интерфейс (.NET): Autodesk.Windows.Ribbon, PaletteSet, ContextMenuExtension, WPF через ElementHost
  • Обработка геометрии: восстановление контуров с помощью хеш-таблицы на основе кодов точек, алгоритм Дугласа — Пекера, аппроксимация дуг по трем точкам и методом наименьших квадратов
  • Алгоритмы: двухпроходное построение цепочек для открытых и замкнутых контуров, определение углов излома, сглаживание дугой с учетом минимального радиуса
  • Стандартная библиотека C++: std::filesystem, std::format, std::ranges, unordered_map/set, reference_wrapper, optional, unique_ptr
  • Конфигурация: собственный INI-парсер, типобезопасные шаблонные методы чтения и записи, тесты на корректность цикла чтения и повторной записи данных
  • Тестирование: Visual Studio CppUnitTestFramework, сценарии проверки чтения и повторной записи, а также обработки некорректных данных
  • Сборка: MSBuild, файлы .props для разных версий AutoCAD

Результат

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

  • Нативный плагин ObjectARX с поддержкой AutoCAD 2021-2025;
  • Гибридная архитектура на C++ и C# с отдельным вычислительным ядром и интерфейсом на .NET;
  • Собственная вкладка на ленте AutoCAD, контекстное меню и плавающая WPF-панель;
  • Автоматизированная обработка объектов Line, Arc, Polyline и Spline;
  • Восстановление контуров, упрощение геометрии, аппроксимация дугами и сглаживание углов излома;
  • Настройка правил обработки через INI-файл без внесения изменений в код;
  • Логика обработки геометрии и конфигурации вынесена в отдельную библиотеку C++ и покрыта тестами;
  • Оптимизированный результат сохраняется в отдельном слое PROCESSED для дальнейшего использования в производстве.

Нуждаетесь в разработке похожего проекта?

Свяжитесь с нами

Мы любим новые проекты! Напишите нам, и мы ответим вам в ближайшее время.

Спасибо, что написали нам! Ваше сообщение было успешно отправлено. Мы обязательно ответим на него в ближайшее время. Пожалуйста, проверьте, получили ли Вы от нас письмо-подтверждение на указанную Вами почту.