Тема: ObjectARX. Утилита TotalBreaker - разбиение примитивов в точках взаимного пересечения.
Ссылка на загрузку последней версии утилиты TotalBreaker.
Описание.
Мои друзья проектировщики попросили меня разработать приложение расширяющее возможности команды _BREAK. Задача была поставлена следующим образом: необходимо разбить группу выбранных примитивов в местах их взаимного пересечения.
Несмотря на кажущуюся простоту решение этой задачи оказалось не совсем простым. При работе с небольшим количеством примитивов (используя простой способ итерации) всё довольно легко и быстро. Но, когда количество примитивов тысячи или, тем более, десятки тысяч процесс ожидания окончания работы становится практически бесконечным.
Существует ряд уже готовых утилит позволяющих реализовать подобное (например известное приложение Break All or Some). Но все они имеют весьма "чахлую" производительность. Требовалась значительно бОльшая производительность для работы с большим количеством объектов.
Поэтому в программе я использовал переработанный и усовершенствованный движок основанный на алгоритме "поиска ближайшего соседа".
Таким образом мне удалось достичь достаточно высокой производительности. Так, например, 20 000 примитивов (на машине с процессором класса Intel Core 2 Duo) обрабатывается в среднем за 6 секунд.
Предварительно обернув приложение в диалоговый дружественный интерфейс, придав программе некоторого лоска и упаковав в инсталлятор я выкладываю её для всеобщего пользования.
Установка.
Снабжена классическим инсталлятором. Для установки программы нужны права администратора.
После установки используйте команду _TOTALBREAK.
Программа оперирует следующими типами примитивов:
- Линии (LINE)
- Дуги (ARC)
- Окружности (CIRCLE)
- Полилинии (LWPOLYLINE, 2DPOLYLINE).
Реализована поддержка следующих версий AutoCAD:
- AutoCAD 2007 (x86)
- AutoCAD 2008 (x86)(x64)
- AutoCAD 2009 (x86)(x64)
- AutoCAD 2010 (x86)(x64)
- AutoCAD 2011 (x86)(x64)
- AutoCAD 2012 (x86)(x64)
- AutoCAD 2013 (x86)(x64)
- AutoCAD 2014 (x86)(x64)
Замечания по интерфейсу.
Интерфейс англоязычный. Локализации пока нет. Тем не менее интерфейс программы довольно прост - думаю разберётся и школьник...