Программно удалить в dxf-файле все окружности

Автор Warlock-72, 29.01.26, 11:53:53

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

p3452

Kolos, не злоупотребляйте терпением модератора!

Kolos

Цитата: p3452 от 29.01.26, 19:47:12Михаил88, отличный вариант (хотя и является решением ДРУГОЙ задачи) - надеюсь ТС такой вариант устроит...
Что, тут отличного?
Цикл.
Цитата: p3452 от 29.01.26, 19:48:43Kolos, не злоупотребляйте терпением модератора!
Они у меня за банены, кроме Starika.

Михаил88

Цикл я убрал. См. #19.

Цитата: Михаил88 от 29.01.26, 19:48:18if arcs:
    kompas_document_1 = kompas_api7_module.IKompasDocument1(kompas_document)
    kompas_document_1.Delete(arcs)

Вот так удаление переписал. Можно без цикла обойтись.
с циклом затраченное время:  2.4866373538970947
после того , как убрал цикл затраченное время:  1.0121595859527588

Я написал по быстрому, чтобы проверить потом начал смотреть, что можно оптимизировать.
+ Благодарностей: 2

Warlock-72

Цитата: Михаил88 от 29.01.26, 16:59:16можете еще скинуть несколько dxf для примера
Да, конечно.
Завтра скину.
Спасибо за помощь!
 :fr:

Warlock-72


Soultaker

Цитата: Михаил88 от 29.01.26, 19:48:18if arcs:
    kompas_document_1 = kompas_api7_module.IKompasDocument1(kompas_document)
    kompas_document_1.Delete(arcs)

Вот так удаление переписал. Можно без цикла обойтись.
с циклом затраченное время:  2.4866373538970947
после того , как убрал цикл затраченное время:  1.0121595859527588
Ваш код отлично показывает какая же днищенская архитектура у КОМПАС API. Итерация по 100 примитивам и удаление 20 примитивов занимает 1-2 секунды О_О.
Представляю задачу. Имеется 1000 dxf чертежей, вот Warlock начинает каждый открывать и вызывать скрипт. Я думаю за неделю закончит.

Михаил88

Еще немного переделал, что дало прирост в скорости обработки в несколько раз по сравнению со вчерашним вариантом.
В архиве py файлик.

https://disk.yandex.ru/d/18Nra5-nCJ9mDA - ссылка на скачивание exe.
+ Благодарностей: 2

Student2025

Цитата: lavgirb от 29.01.26, 14:46:23А там нет окружностей.
В автокаде это сегмент, во фрагменте КОМПАС это контур, похожий на овал.

Не всегда! Все зависит от ряда вариантов получения этой окружности..

С вариантом окружности предложен вариант.  Второй вариант получение окружности или овала(если нужно) только через опорные координаты например используя numpy - быстрый инструмент для выявления объектов на основе координат. Ну за пару бутылок 2 литровых пива смогу собрать устойчивый код ко всем вариантам.  :w:

p3452

Для тех кто пойдет "по следам":
- dxf прекрасно читается и редактируется(!), даже при отсутствии какого-либо CAD...
- на гитхабе есть исходники готовых библиотек для разных языков,
н.р: ACadSharp (C#), netDxf (C#), ezdxf (Python).
 
+ Благодарностей: 2

Soultaker

Цитата: p3452 от 04.02.26, 14:25:03Для тех кто пойдет "по следам":
- dxf прекрасно читается и редактируется(!), даже при отсутствии какого-либо CAD...
- на гитхабе есть исходники готовых библиотек для разных языков,
н.р: ACadSharp (C#), netDxf (C#), ezdxf (Python).
 
Я во втором посте написал, но всем пох.

Warlock-72

Цитата: p3452 от 04.02.26, 14:25:03dxf прекрасно читается и редактируется(!), даже при отсутствии какого-либо CAD
Бла-бла-бла...
Вот здесь: https://forum.ascon.ru/index.php?topic=40691.msg349666#msg349666
пара типовых файлов, нуждающихся в обработке. Вы сможете прекрасно прочитать и отредактировать хотя бы один файл без привлечения к этому КОМПАСа? Научите человека, не владеющего навыками программирования, как это сделать на конкретном примере?
Или продолжите пустой треп?

Цитата: p3452 от 04.02.26, 14:25:03на гитхабе есть исходники готовых библиотек для разных языков
Цитата: Warlock-72 от 29.01.26, 11:53:53Допускаю любое программное решение (программа, макрос и др.), требования к наличию интерфейса отсутствуют - хоть из командной строки вызывать...
Ув. Михаил88 прекрасно меня понял и оказал помощь. Огромное ему за это спасибо!
Для меня данный конкретный вопрос решен.

p3452

#31
Сообщение (пост №28) оставлено для тех кто "пойдет "по следам" - "по следам" пойдут те, кому действительно нужна программная обработка dxf, т.е. явно не ТС...

Warlock-72

Цитата: p3452 от 04.02.26, 22:23:33те, кому действительно нужна программная обработка dxf, т.е. явно не ТС
Вы, конечно же, не поверите  :-))) , но Михаил оперативно создал средство именно программной обработки файлов, и этим программным средством я успешно пользуюсь, т.к. оно в полной мере обеспечивает решение моей конкретной задачи.
Парадокс, правда?  :angel:

СВ

(Похоже, что время потраченное на работу:
Цитата: Warlock-72 от 05.02.26, 09:08:01Михаил оперативно создал средство именно программной обработки файлов,
меньше, чем время, потраченное на критику этой работы. Причем "профессиональным критиком".)

Soultaker

Цитата: Warlock-72 от 29.01.26, 11:53:53т.к. исходных dxf-файлов будет много
Цитата: p3452 от 29.01.26, 14:00:55пакетная обработка текстовых файлов
Цитата: Warlock-72 от 05.02.26, 09:08:01этим программным средством я успешно пользуюсь

Походу у Warlock немного файлов если его устроило решение Михаила. Хотя, меня терзают смутные сомнения...  :laugh:

Михаил88

Цитата: p3452 от 04.02.26, 14:25:03ezdxf (Python).

Появилось время.
Почитал документацию по библиотеке ezdxf(когда то давно уже знакомился с ней) и написал новую версию программы, теперь редактирую dxf файл без компаса и пакетно.
Ссылка на exe - https://disk.yandex.ru/d/PXO4jIzcrF3a5g

Запускаете Редактор dxf.exe и появляется окно для выбора папки где расположены dxf, подтверждаете выбор. Начинается пакетная обработка файлов. Вложенные директории не берутся в расчет. Отредактированные файлы сохраняются в папку new_dxf, которая будет создана автоматически.
Логика такая. Подключаюсь к dxf, получаю все 'POLYLINE', проверяю в цикле есть ли в составе дуги если есть получаю все сегменты(сами дуги ('ARC') в составе 'POLYLINE') и проверяю, чтобы сегментов было 2 и все они имели dxftype 'ARC', если условие выполняется то удаляю эту 'POLYLINE'. Сохраняю файл в директорию new_dxf.
Обработка, как и ожидалось выполняется мгновенно.

+ Благодарностей: 2

Михаил88

+ Благодарностей: 1

p3452

Цитата: Михаил88 от 06.02.26, 22:36:31Обработка, как и ожидалось выполняется мгновенно.
Вот и чудненько!..

p/s: Кстати, обрати внимание на версию формата (Acad12 - еще DOS-овский формат), в современных форматах все немного по другому...

p/s, p/s: Мы, то же без дел не сидели (эта тупая перепалка, помогла определиться с кучей залежалых "неопределенностей") - "Нет 'худа', без 'добра', а 'добра', без 'худа'!"... :-)))

p/s, p/s, p/s: Для "идущих по следу" - сравнительный анализ обработки dxf для, версии формата, Acad2018 здесь (https://forum.ascon.ru/index.php?topic=40703.msg349817;topicseen#msg349817)

Михаил88

Ссылка на exe - https://disk.yandex.ru/d/BGMJYTV9SSC0WA

Обновление. Изменил кодировку, чтобы нормально кириллица отображалась.

+ Благодарностей: 1