Adelitusn.ru

ПК и Техника
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Конвертер XML-файлов в формат DXF (AutoCAD)

Конвертер XML-файлов в формат DXF (AutoCAD)

Преобразование файлов, это ничто иное как изменение файла, созданного в одной программе (файл DWG) в форму, понятную для другой программы (то есть формат DXF). Существуют множество сайтов, предлагающих преобразование фалов DWG в DXF «Online» — без необходимости специального скачивания программы на свой компьютер. Но если Вы не нашел соответствующего конвертатора файлов DWG в сети, Вы можете воспользоваться нашим списком программ, которые справятся с с преобразованием файла DWG в DXF.

Конвертирование DWG в DXF
DWG в DXF
  • AutoCADAutoCAD
  • Pro/EngineerPro/Engineer
  • Autodesk InventorAutodesk Inventor
  • SolidWorksSolidWorks
  • Solid EdgeSolid Edge
  • Adobe IllustratorAdobe Illustrator
  • Any DWF to DWG ConverterAny DWF to DWG Converter
  • Any DWG DXF ConverterAny DWG DXF Converter
  • CARTOMAP CAD for WindowsCARTOMAP CAD for Windows
  • Creo ParametricCreo Parametric
  • DWG TrueViewDWG TrueView
  • PRO LandscapePRO Landscape
  • AutoCAD for MacAutoCAD for Mac
  • AutoCAD WS for MacAutoCAD WS for Mac
  • Adobe Illustrator for MacAdobe Illustrator for Mac
  • LX-ViewerLX-Viewer
  • Autocad WS for iOSAutocad WS for iOS
  • CARTOMAP CAD for iOSCARTOMAP CAD for iOS
  • AutoCAD WS for AndroidAutoCAD WS for Android
Как преобразовать файл DWG в DXF?

Если Вы уже скачали и установили на своем компьютере один их конвертаторов, Вы можете начать процесс конверсии DWG в DXF. Обслуживание всех программ, как правило очень интуитивно и основано на одной и той же схеме. Коротко представим несколько шагов, которые всегда необходимо сделать, изменяя формат файла DWG:

Inventor. Быстрый экспорт развертки в DWG или DXF из 3d модели

Как правило, конечной целью проектирования деталей из листовых материалов в Inventor является получение развертки и сохранение ее в формате .dwg или .dxf. Именно с этими форматами работает большинство станков, позволяющих вырезать детали из листовых материалов по векторным файлам (лазерная, гидроабразивная, плазменная резка и т.п.). Для достижения этой цели, многие пользователи программы сначала создают 3d модель, потом получают проекцию детали в среде оформления чертежей и уже оттуда сохраняют файл через экспорт в .dwg. Но добиться того же результата можно проще и гораздо быстрее, причем прямо из среды 3d модели. И ниже мы рассмотрим как.

inventor деталь из листового металла

В среде листовых материалов в браузере отображается 2 состояния модели — «Модель после гибки» и «Развертка». Раздел «Развертка» появляется в дереве не сразу, а после того, как была нажата кнопка «Создать развертку» на вкладке «Листовой металл»:

inventor кнопка создать развертку

Далее для экспорта развертки в нужный вам формат, достаточно просто нажать правой клавишей мыши на этом разделе и выбрать пункт «Сохранить копию как»:

inventor сохранить развертку

В открывшемся окне задается имя, место сохранения, а также формат файла:

выбираем куда сохранить файл

Окно «Экспорт развертки» содержит 3 вкладки с настройками. На первой из них — «Общие» нужно задать версию файла для сохранения (какую именно уточняем в спецификации конкретного производственного оборудования или у технолога):

inventor настройка экспорта развертки, вкладка общие

На вкладке «Слой» можно при необходимости изменить стандартные имена слоев, веса (толщины) линий и самое главное — отключить экспорт тех или иных слоев, если они не нужны. Например, файл, предназначенный для резки, как правило, должен содержать в себе только контуры детали, лежащие в слое и не иметь никаких лишних линий или точек. Можно сразу задать эти настройки еще на этапе экспорта и сразу переименовать слои:

inventor настройка экспорта развертки, вкладка слой

На вкладке «Геометрия» находятся самые важные настройки:

inventor настройка экспорта развертки, вкладка геометрия

  • Заменить сплайны — поскольку наличие в векторном файле контуров, выполненных сплайнами, неприемлемо для большинства станков, имеет смысл поставить данную галочку. Обратите внимание, что в поле «Линейный допуск (А)» можно управлять точностью преобразования сплайна в линейные сегменты (какое именно значение задается этим параметром очень хорошо видно на справочной картинке).
  • Объединить контуры полилиниями — контуры детали будут преобразованы в полилинии, а работать с ними гораздо удобнее, чем с отдельными отрезками.
  • Переместить геометрию в первый квадрант — все объекты в .dwg файле будут перемещены в первую четверть, т.е. иметь положительные значения X и Y.
  • Обрезать осевые линии по контуру — разница будет заметна, если в модели есть какие-то вырезы, попадающие на сгибы и вы не отключали экспорт слоев, содержащих линии гиба. При включенной настройке эти линии будут подрезаны по контуру детали.

Все настройки экспорта в .dwg или .dxf просты и интуитивно понятны, но все же, рекомендую не вводить их каждый раз заново, а использовать кнопку «Сохранение конфигурации». Создав один или несколько .ini файлов с настройками, в следующий раз вы сможете быстро выбрать нужную конфигурацию из выпадающего списка. Использование конкретных конфигураций будет очень полезным при работе в коллективе — стандрартизация повышает скорость и качество работы сотрудников.

Читайте так же:
Способы удаленного управления Android-устройством: 5 бесплатных программ

Вот так полученная развертка выглядит в AutoCAD:

внешний вид полученной развертки в AutoCAD

Мы рассмотрели процесс экспорта разверток в векторные форматы непосредственно из среды листовой 3d модели. Если раньше вы делали это через создание промежуточного чертежа в Inventor (с его последующим пересохранением), то советую перейти на метод, описанный в данной статье, ведь это проще и быстрее. А время, как известно — ресурс не просто ценный, но и невосполнимый =)

Способы работы и просмотра формата DXF

Современное программное обеспечение позволяет избегать длительного процесса создания чертежей на бумаге. Сегодня достаточно установить одну из программ, и через некоторое время полноценный профессиональный чертёж будет готов. Производители программного обеспечения для удобства использования своего софта разработали универсальный dxf-формат, позволяющий использовать файлы во всех приложениях для векторной графики.

Как и чем открыть файл с расширением DXF

Работа с файлами с расширением DXF.

Что обозначает расширение dxf

Описание формата DXF показывает, что это текстовый файл в формате ASCII, благодаря которому его правильное чтение и запись возможны на любой аппаратной и системной платформе. Одним из недостатков полного формата DXF является относительно большой размер по сравнению с его двоичной версией DWG. Формат DWG был создан в Autodesk в 1982 году, где он был разработан вместе с программой AutoCAD. В принципе, с распространением AutoCAD в качестве основного инструмента для рисования чертежей САПР формат стал неотъемлемой частью проектной индустрии. В настоящее время он является одним из наиболее широко используемых форматов данных для проектирования. Технические документы, архитектурные, строительные проекты, проекты машиностроения и т. д. теперь сохраняются в файле .dwg. Формат файла DXF – взаимозаменяемый аналог DWG.

Способы открытия файла dxf

Это формат векторного файла, в котором можно сохранить как 2D, так и 3D чертежи. Расширение файла DXF разработано Autodesk для обмена данными между AutoCAD и 3D Studio, которая в то время ещё не являлась продуктом Autodesk. Популярность формата DXF связана с простотой создания файлов и наличием спецификации формата, что упрощает реализацию в САПР. Чтобы иметь возможность работать с расширением, необходимо установить одну из программ для просмотра и редактирования таких документов. Наиболее популярные из них описаны ниже.

Autodesk AutoCAD

Autodesk AutoCAD – классическая программа автоматизированного проектирования. С её помощью можно проектировать здания, мосты и многие другие механические детали. Это профессиональный инструмент для дизайнеров и архитекторов.

  • 2D и 3D дизайн;
  • огромные возможности;
  • встроенная поддержка dxf-файлов;
  • обширные параметры конфигурации;
  • сокращённое время разработки;
  • визуально усовершенствованное решение.
  • высокие требования к системе.

AutoCAD – это всё, что нужно для разработки, визуализации, документирования и обмена творческими идеями – от дизайна концепции до создания эскизов и рисунков. Программное обеспечение позволяет быстро и легко создавать проектную документацию с профессиональным уровнем контроля. Благодаря облачному сервису для отображения чертежей не нужно входить в систему или иметь продукт AutoCAD. Однако при этом изменять исходный DWG нельзя.

Открыть в Autodesk AutoCAD

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

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

Как открыть dxf-файл в Autocad? Достаточно воспользоваться изображением открывающейся папки на главной ленте программы или сочетанием клавиш Ctrl+O. После этого рядом с полем имени файла необходимо выбрать «Все форматы», чтобы программа смогла найти документы dxf. Теперь укажите путь к необходимому файлу и нажмите «Открыть». AutoCAD предлагает ещё более продвинутые инструменты совместного использования данных, такие как возможность экспорта файлов в более старые версии DWG, возможность экспорта и импорта файлов DWF с заметками и тегами, возможность публиковать файлы чертежей в формате Adobe PDF.

Читайте так же:
Как сделать фото с датой

Adobe Illustrator

Adobe Illustrator – лучшее векторное программное обеспечение для рисования, которое есть на рынке. Софт оснащён множеством инструментов и опций для профессионалов.

  • большой выбор шаблонов;
  • редактирование контрольных точек;
  • настройка интерфейса;
  • поддержка dxf;
  • динамические палитры цветов;
  • использование динамических углов.
  • программа сложна для новичков;
  • требует большого объёма ОЗУ.

Adobe Illustrator – это программа для цифровой графики с бесконечным потенциалом и расширенными возможностями. Как только вы привыкнете к интерфейсу в Adobe Illustrator, работа в этой программе станет интуитивно понятной и всего за несколько кликов вы сможете реализовать творческие проекты. Adobe Illustrator предлагает множество шаблонов для создания веб-сайтов, меню DVD, билетов, плакатов, листовок и т. д. Программа включает инструменты рисования, автоматическую систему слежения, динамическое согласование цветов и многие другие опции. Для экспериментов с 3D-эффектами и фильтрами может потребоваться некоторое время – чем лучше оборудование, тем быстрее. Чтобы открыть документ dxf, необходимо использовать меню Файл-Открыть. В диалоговом окне укажите требуемый формат и нажмите кнопку «Открыть».

Открыть в Adobe Illustrator

Благодаря возможности настраивать элементы рабочего пространства в соответствии с вашими потребностями, работа в Adobe Illustrator стала чрезвычайно удобна и эргономична. Как и в Photoshop, можно применять библиотеки часто используемых кистей и цветов, а также устанавливать комбинации клавиш для любимых инструментов. Как и Photoshop, Adobe Illustrator включает инструментальные палитры, но в этом случае они оптимизированы для векторной графики. Adobe Illustrator – самое популярное и лучшее программное обеспечение для создания векторной графики. Оно было признано профессиональными дизайнерами, веб-дизайнерами, иллюстраторами и архитекторами по всему миру.

Corel Draw

CorelDRAW — это набор графических инструментов. Программа предоставляет профессиональным графическим дизайнерам расширенные инструменты для создания и обработки цифровой графики – растровых и векторных изображений. Набор CorelDRAW состоит из четырёх компонентов. CorelDRAW предлагает инструменты для проектирования и создания графики. Corel Photo-Paint позволяет обрабатывать фотографии или графику и адаптировать их к проекту, созданному в CorelDRAW. Corel Capture используется для захвата графики с экрана компьютера. Bitstream Navigator – это инструмент управления шрифтами. Для открытия файла dxf нажмите Ctrl+O или Файл – Открыть другой. В диалоговом окне укажите расположение файла и нажмите «Открыть».

Открыть в CorelDRAW

Проекты CorelDRAW могут быть экспортированы в файлы PostScript, которые обеспечивают идентичную печать на всех профессиональных принтерах и плоттерах. Благодаря этому CorelDRAW представляет собой полноформатную студию цифровой графики. Программа используется для создания маркетинговых материалов в любых форматах – от визитных карточек до выставочных стендов, дизайна одежды, логотипов и подготовки печати на любом носителе. С этой программой определённо стоит познакомиться всем, кто намерен заниматься профессиональной графикой.

DWGSee DWG Viewer

DWGSee DWG Viewer является мощным инструментом для визуализации и печати файлов, имеющих расширение dxf. В дополнение к функциям просмотра приложение предлагает возможность конвертации между версиями расширения .dxf. Функции DWGSee:

  • окно с папкой и файловым проводником;
  • управление файлами AutoCAD – вырезать, копировать, вставить, удалить;
  • просмотр в виде миниатюр (5 размеров) или подробный вид;
  • полноэкранный режим;
  • модуль обновления программы;
  • встроенный конвертер файлов .dxf;
  • 4 типа масштабирования;
  • возможность изменения цвета фона;
  • вращение вокруг оси X и Y;
  • трёхмерная модель;
  • менеджер уровней;
  • контроль видимости в модели и области печати, замораживание-размораживание, блокировка, определение толщины линии, изменение цвета слоя;
  • менеджер XREF;
  • вертикальное разделение окна.

Для открытия формата используйте меню File – Open, и укажите путь к местоположению файла.

DWGSee DWG Viewer

Free DWG Viewer

Free DWG Viewer – бесплатная программа для открытия и печати файлов, сохранённых в форматах DWG, DXF и DWF. Документы такого типа используются профессиональными редакторами графики, такими как AutoCAD.

  • открывает и печатает файлы DWG, DXF и DWF;
  • работает как отдельное приложение, так и в браузере;
  • удобная навигация.
  • не обнаружены.
Читайте так же:
Способы создания снимков экрана на смартфонах ZTE

Для открытия формата используйте меню File – Open, и укажите путь к местоположению файла. Free DWG Viewer позволяет открывать и печатать файлы AutoCAD без установки этого дорогостоящего программного обеспечения. Отлично подходит для быстрого просмотра дизайна или чертежа в домашних условиях, что также будет полезно и для профессионалов. Программа поддерживает слои и, кроме того, позволяет сохранять изображения в формате JPG.

Free DWG Viewer

Хотя Free DWG Viewer доступен только на английском языке, навигация по нему не является проблемой. Проекты легко переключаются, а их масштабирование и поворот понятны интуитивно. Программа работает в двух режимах – может использоваться как автономное приложение Windows на рабочем столе или с помощью ActiveX в веб-браузере.

Почему именно dxf и в чем его достоинства

Преимущества использования универсального формата dxf очевидны – файлы поддерживаются всеми программами для просмотра и редактирования векторной графики и создания чертежей. Поэтому, если вы работаете с чертежами на работе и дома (или в другом месте), формат позволит вам продолжить работу в любое удобное время на любой платформе или компьютере.

Импортируем DXF чертеж в программе на Java, наступая на все грабли этого «простого» формата

AutoCAD и подобные ему САПР давно уже стали стандартом в области проектирования, и неудивительно что таким же стандартом стали широко используемые в них форматы файлов DWG/DXF. Так что если вы разрабатываете какое-то решение для архитекторов и проектировщиков, то умение работать с этими форматами (ну или хотя бы с одним из них) — must have фича вашего продукта.

В рамках своего вебсервиса для симуляции движения пешеходов пришлось и мне озаботиться импортом генпланов в этих форматах. Раньше с САПР я дела не имел, поэтому наивно думал «да что там, подумаешь — еще один формат чертежей, линии и многоугольники, что там может быть сложного?». Но в процессе работы выяснилось что сложного там может быть достаточно, некоторые нюансы вполне похожи на древние костыли, тянущиеся из глубин веков, при этом многие вещи толком не документированы в спецификациях самого формата (например работа с блоками или с кривыми). Видимо они считаются очевидными для любого чертежника, но что делать если вы родом из другой области, и таких знаний не имеете?

В общем под катом — перечисление граблей и решений, которые не удалось нагуглить и пришлось добывать полуночными бдениями над чертежами.

Решаемая задача

Мне для моего приложения на Java нужно было настроить импорт генпланов районов и конвертацию его во внутреннее упрощенное GeoJSON представление. При этом мне не нужна была полная информация и все виды сущностей, лишь некоторая их часть, которая бы использовалась в симуляции. Так что данный материал не охватывает все возможности и Нетривиальные Технические Решения DXF. А почему именно DXF, а не DWG? А про это ниже.

Выбор формата

Итак, что в первую очередь ассоциируется со словами «автокад» и «формат файла»? А это DWG. Бинарный закрытый формат, который изначально был создан AutoDesk’ом и его спецификации не раскрывались, однако в свое время он был удачно реверснут Open Design Alliance.
И вот тут следует разочарование №1: не существует актуальных бесплатных реализаций этого формата. Вообще.
Есть библиотека по работе с ним от AutoDesk. Есть популярная библиотека Teigha, созданная ODA. И… все. Обе они платные, причем хорошо платные (речь о сотнях и тысячах долларов). Не подходит.
Есть некоторое количество попыток реализовать стандарт в виде бесплатного Open-source решения. Например jdwglib. Но все они давно мертвы, обновлялись последний раз 5-10 лет назад. А прогресс не стоит на месте, новые версии автокада добавляют новые фичи и в DWG, в итоге с мечтой читать файлы современных версий можете попрощаться, как и с поддержкой и надеждой на фикс багов.

Альтернативой является DXF. Несколько менее популярный, но в то же время поддерживаемый всеми САПР, изначально открытый и поэтому, по идее, более распространенный.
Поиск библиотек поначалу тоже обескураживает — конкретно для Java нет ни одного живого проекта, везде та же картина: последние релизы 5-летней давности, заброшенные репозитории, грустно глядящие в вечность последние новости, полные неоправдавшегося оптимима и обещаний. Но сам по себе формат в отличие от DWG не так активно развивается, поэтому даже довольно старой библиотекой вполне можно открыть актуальные чертежи.

Читайте так же:
Как сделать качественный скриншот

В итоге была выбрана библиотека Kabeja, последний релиз которой был в 2011 году. С помощью идущего в комплекте сэмпла (конвертация DXF в SVG) было проверено что все актуальные файлы чертежей корректно открываются, после чего я приступил к импорту. Слегка правда насторожил меня один комментарий к вопросу про парсинг DXF от некоего CAD-гуру на Stackoverflow что, мол, «DXF выглядит простым но на деле ты запаришься с ним работать».

DXF чертеж содержит в себе набор слоев (layer) и блоков (block). Там есть и другие сущности, но для того чтобы выдрать координаты геометрии в простейшем случае они не нужны.

Со слоями все очевидно, работают они так же как и в каком-нибудь Photoshop. Слои можно включать-выключать и можно задавать дефолтные параметры графики для слоя (то есть например все линии по умолчанию на данном слое будут иметь такую-то толщину). Поскольку моей задачей была только выжимка координат, вопросами отображения я не занимался.

Окей, все кажется просто: бежим по списку слоев, для каждого слоя — по списку объектов, преобразуем координаты. Впрочем уже тут я наступил на первые грабли: набор слоев который вы видите в CAD и который есть в файле — это не одно и то же. Я себе голову сломал, почему у меня вдруг пропадали куски дорог. В NanoCAD они есть, в моем экспорте — нет. Полез в отладчик — их и в возвращаемых Kabeja структурах нет. Зато если проэкспортировать файл целиком их семплом — они есть. В общем выяснилось что один слой из редактора в файле может представляться несколькими слоями, с именами вида «layerName», «layerName @ 1». Зачем это сделано и откуда оно берется — черт его знает, но факт — поиск на точное совпадение имени слоя (на который намекает даже структура кода библиотеки, хранящая слои в Map с ключом-именем) не работает.

Блоки представляют собой шаблоны, которые единожды нарисовав можно многократно вставлять. При этом изменение базового блока изменит и все его вставки. Удобно. Еще круче то, что блок может содержать в себе объекты с нескольких слоев. При этом вставка тоже принадлежит какому-то слою. При этом блок может содержать в себе вставки других блоков. То есть можно сделать блоки «секция дома», затем составить из них блок «дом», который затем несколько раз вставить на карту. При этом итоговый объект будет иметь несколько слоев (отдельно заливка, отдельно контуры, отдельно специальные пометки), так же как исходные блоки. Все это очень круто с точки зрения пользователя, но добавляет работы программисту.
Более того, блок может вставляться не просто разово, а многократно в виде прямоугольной матрицы. Для этого у объекта вставки есть параметры с количеством рядов, столбцов и с расстоянием между ними.

В итоге пока что код обработки вставки выглядит как-то так:

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

Напомню, что моя задача — преобразовать DXF в GeoJSON, который из всех видов геометрии признает лишь ломаную и многоугольник, никаких дуг и кривых.

DXF поддерживает кучу разных вариантов линий:

  1. Аж 2 типа ломаных — Polyline и LWPolyline. В моем случае простых 2д чертежей разницы между ними никакой
  2. Дуги, причем аж двух видов — эллиптические и круговые. К счастью в классах Kabeja уже есть готовые методы для получения координат точек на них, так что преобразовать дугу в ломаную с нужной точностью несложно
  3. Сплайны — опять же Kabeja сама умеет их преобразовывать в Polyline
  4. Просто линейные отрезки
Читайте так же:
Как узнать какой процессор на телефоне Android

Казалось бы все просто, но нет. Даже простой на первый взгляд тип Polyline может использоваться для отображения кривых второго порядка (а не просто ломаных). Для этого у вершины может быть задан параметр bulge. Если он указан то две вершины соединяются не прямой линией, а дугой окружности, проходящей через эти вершины и центр которой можно выразить через них и этот параметр.

Вот такой вот код позволяет определить центр окружности:

Над этими дугами я бился долго, да в итоге плюнул и отключил их, соединяя вершины напрямую. Так как в генпланах такие дуги обычно используют для закруглений на углах перекрестков, я мог на них вполне забить — разница с точки зрения симуляции невелика.

Заливки/штриховки (hatch)

Это то с чем непосредственно работает мой симулятор. Здания, дороги и генераторы я пока требую задавать именно заливками (иначе непонятно где в мешанине отдельных линий внутренняя часть, а где — внешняя).

  1. Границей заливки может быть любая комбинация объектов-линий. Часть границы может быть ломаной, затем несколько дуг, потом просто куча отрезков разных линий
  2. Один объект заливки может иметь произвольное число непересекающихся областей (что нехарактерно для многих других форматов где у многоугольника есть только одна внешняя граница), каждая из которых может иметь произвольное число дырок
  3. Заливки могут быть многократно вложенными: то есть внутри заливки дырка, в которой еще одна заливка, в которой снова дырка, причем все это в DXF задается одним объектом HATCH с несколькими границами.
  4. Есть и еще более экзотические варианты отношений заливки и ее границ (см картинку) но мне они пока слава богу не попадались

В общем из DXF для заливки мы получаем кучу границ, имеющих флаг «внешняя или внутренняя», а дальше сами должны как-то разбираться как они вообще сделаны и как их раскидать по GeoJSON-овским полигонам, которые могут иметь только одну внешнюю границу и не имеют вложенности.

Я сходил по нескольким путям, но на каждый алгоритм я довольно быстро получал чертеж, на котором этот алгоритм не работал. Например вот этот вот: схема улиц и проездов для жилого района Читы, в котором они все заданы буквально парой объектов HATCH с очень сложной структурой, в которой почему-то все границы были помечены как внешние (чую тут какой-то баг в Kabeja, так как DXF определяет сразу два схожих флага External и Outer, но в самой библиотеке есть только один):

  1. Создать полигон для каждой внешней границы
  2. Вычесть из него все остальные границы, неважно отмечены ли они внешними или внутренними
  3. Исправить возможные проблемы (полигон получился пустой, дырки выходят за границы внешнего контура, полигон разбился на несвязанные области и т.п.)

Для третьего пункта (да и вообще для работы с геометрией уже внутри самого алгоритма симуляции) я использовал библиотеку JTS — Java Topology Suite. Она содержит довольно много всяких нужных примитивов и операций по работе с геометрией, начиная от операций типа построения буфера и заканчивая структурами данных типа квадродерева.

После множества мучений и подперев все что можно костылями, я все-таки смог создать поддержку нужного мне подмножества DXF и загружать чертежи напрямую в свой симулятор, чтобы использовать их для определения косяков проектировщиков. Поскольку большую часть из указанной выше информацией мне пришлось добывать с боем и сидением до двух ночи над NanoCAD-ом (не реклама, но это единственный легкодоступный бесплатный и качественный редактор DXF который я нашел, тот же LibreCAD не осилил открыть правильно первый же чертеж что я ему передал), я решил поделиться ей и с хабрасообществом — вдруг мой опыт сэкономит кому-то время.

Ну и да, вот как-то так выглядит предсказание моего алгоритма для района со скриншота выше:

Очевидные выводы — не надо делать дорожки под прямым углом, но не надо и пытаться делать какие-то непонятные закругления там где не надо. Посмотрим через несколько лет, оправдается ли мой прогноз когда район этот построят.

голоса
Рейтинг статьи
Ссылка на основную публикацию
Adblock
detector