| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Как отредактировать множество файлов dwg по шаблону не открывая их

Как отредактировать множество файлов dwg по шаблону не открывая их

Ответ
Поиск в этой теме
Непрочитано 07.10.2020, 04:53 #1
Как отредактировать множество файлов dwg по шаблону не открывая их
ArtemKolchyk
 
Регистрация: 02.10.2020
Сообщений: 6

Добрый день!
Имеется задача, есть больше тысячи файлов dwg, в которых имеется рамка (блок) с чертежом. Цель - все, что находится вне рамки удалить, рамку и то, что внутри нее оставить.
Хочу, используя какой либо из ЯП, желательно python, сделать скрипт, который мне это будет делать. В будущем планирую расширить скрипт - переназначение слоев по определенным правилам (к примеру, все, что в слое 0 покрасить в зеленый). Прошу помощи, что для этого начать читать, в какую сторону копать так скажем. Спасибо!
Просмотров: 4004
 
Непрочитано 07.10.2020, 08:19
#2
nickname2019


 
Регистрация: 18.11.2019
Сообщений: 1,466


Если использовать питон для подключения к Autocad, то это приведет к глобальным тормозам в случае, если Вы собираетесь перетряхнуть всю базу данных объектов и определить принадлежность этих объектов некоторой полилинии.
Вероятнее всего, чуть меньшие тормоза Вы получите при использовании VBA из Autocad'а при написании процедуры
1. открытия файла.
2. анализа всех объектов на принадлежность полилинии
3. удаления нужных объектов
4. Сохранения файлы
5. закрытия файла
Возможно, еще чуть меньшие тормоза Вы получите, если напишите процедуру на Лиспе из Autocad,а.

Самое быстрое решение - использовать для написания процедуры objectArx на C++ или .Net.
nickname2019 вне форума  
 
Автор темы   Непрочитано 07.10.2020, 08:24
#3
ArtemKolchyk


 
Регистрация: 02.10.2020
Сообщений: 6


Цитата:
Сообщение от nickname2019 Посмотреть сообщение
Если использовать питон для подключения к Autocad, то это приведет к глобальным тормозам в случае, если Вы собираетесь перетряхнуть всю базу данных объектов и определить принадлежность этих объектов некоторой полилинии.
Вероятнее всего, чуть меньшие тормоза Вы получите при использовании VBA из Autocad'а при написании процедуры
1. открытия файла.
2. анализа всех объектов на принадлежность полилинии
3. удаления нужных объектов
4. Сохранения файлы
5. закрытия файла
Возможно, еще чуть меньшие тормоза Вы получите, если напишите процедуру на Лиспе из Autocad,а.

Самое быстрое решение - использовать для написания процедуры objectArx на C++ или .Net.
То есть, как я понял, отредактировать файл dwg скриптом без его открытия акадом невозможно?
ArtemKolchyk вне форума  
 
Непрочитано 07.10.2020, 08:37
#4
GogMagog


 
Регистрация: 24.08.2011
Сообщений: 39


Первое, что Вам нужно - это научиться подключаться к автокад из python. Смотрите модуль pywin32, например.
Второе, нужно изучить мануал Autodesk AutoCAD: ActiveX Reference Guide (ищите файл acadauto.chm). Я думаю вам понадобится метод GetBoundingBox
GogMagog вне форума  
 
Непрочитано 07.10.2020, 08:57
| 1 #5
Boxa

КЖ; C#
 
Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,587


Цитата:
Сообщение от ArtemKolchyk Посмотреть сообщение
есть больше тысячи файлов dwg
python и COM явно не для этой задачи (очень медленно), тем более что придется использовать достаточно жадные алгоритмы для поиска и перебора всего, что вне рамок...
ИМХО, тут нужно смотреть в сторону .NET или ARX и пытаться писать так, что бы она нормально работала с консольным автокадом, соответственно запускать обработку в несколько потоков...
Boxa вне форума  
 
Непрочитано 07.10.2020, 10:17
#6
trir


 
Регистрация: 18.12.2010
Сообщений: 5,047


https://habr.com/ru/post/278765/

Цитата:
запускать обработку в несколько потоков...
размечтался
trir вне форума  
 
Непрочитано 07.10.2020, 10:51
#7
CalcProg


 
Регистрация: 02.10.2016
Сообщений: 205


автокад-великий тормоз прогресса. )))
Лазарус рулит.
работай непосредственно с файлами без использования автокада.
алгоритм будет простым до безобразия.
1) открыть файл
2) в секции блок найти блок рамки.
3) от туда взять метку блока.
4) по метке блока в секции блокрекорд найти число вхождений блока в секции ентитис.
5)из секции ентитис взять координаты вхождений блока, из секции блок размер рамки.
6) дальше сравнить крайние координаты всех примитивов из секции ентитис на попадание внутрь рамок.
7)завести массив в котором хранить метки объектов не попавших в рамки.
8) затем их просто удалить из файла.


----- добавлено через ~1 мин. -----
для начинающих лучше работать с файлами дхф а не двж.

Последний раз редактировалось CalcProg, 07.10.2020 в 11:00.
CalcProg вне форума  
 
Непрочитано 07.10.2020, 11:47
#8
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,772


Алгоритм - да. Но реализация застопорится уже на первом шаге, если работать все же с DWG.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 07.10.2020, 11:58
#9
CalcProg


 
Регистрация: 02.10.2016
Сообщений: 205


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Алгоритм - да. Но реализация застопорится уже на первом шаге, если работать все же с DWG.
я посоветовал начинающим, начинать с DXF. А если он профи, то ему не составит труда расшифровать DWG. https://kotuch.ru/4445/chem-otlichay...maty-dxf-i-dwg

https://forum.dwg.ru/showthread.php?t=63491

----- добавлено через ~5 мин. -----
из литературы: Всё про DXF-коды и структуру DXF файлов. Авторы: Николай Полещук, Петр Лоскутов, Сергей Зуев. Ну и собственно сайт автодеска.

Последний раз редактировалось CalcProg, 07.10.2020 в 12:19.
CalcProg вне форума  
 
Непрочитано 07.10.2020, 12:46
#10
Boxa

КЖ; C#
 
Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,587


Цитата:
Сообщение от trir Посмотреть сообщение
размечтался
и кто мне запретит запустить пяток консольных автокадов разом и обрабатывать файлы внутри них, соответственно разделив эту тысячу файлов на 5 частей?
А вот по поводу использования RTree, я согласен.

ЗЫ.
Решал подобную задачу, так что в курсе как оно и какими средствами нужно действовать =)
Boxa вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Как отредактировать множество файлов dwg по шаблону не открывая их

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Конвертация файлов Admin Прочее. Программное обеспечение 7506 сегодня 08:59
Как разбить один файл dwg с множеством блоков на множество файлов dwg с одним блоком? petia AutoCAD 8 26.06.2018 12:19
DwgRuLispLib: Команда. Загрузка lisp файлов из указанной папки VVA Библиотека функций 7 15.02.2018 10:10
Деление листов в файле на множество файлов civil designer AutoCAD 3 30.09.2015 16:16
Можно ли запустить команду для списка файлов, не открывая файлов? Alexander_Liseev Программирование 4 28.02.2013 11:41