Программно удалить в 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.
+ Благодарностей: 1

Student2025

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

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

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