Тема: два dwg
как узнать, что два чертежа одинаковы? канечно необходим рациональный способ.......
Информационный портал для профессионалов в области САПР
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Форумы CADUser → Программирование → VBA → два dwg
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
как узнать, что два чертежа одинаковы? канечно необходим рациональный способ.......
CRC Части файла. Для того чтоб определить какой нужно по экспериментировать. С чего бы я начал, сделал копию и изменил зум файла, и при помощи программ подобных WinMerge посмотрел в чем они начали различаться. Предпологаю что различия будут в начале файла. Следовательно пропуская определенный блок начала файла и далее расчет CRC хвоста, получаем идентичны файлы или нет. Все это мои предположения пробуйте и отпишитесь если это так.
Вопрос мне кажется нужно переформулировать. Точнее определится с тем что что такое "два чертежа одинаковы". Два dwg-файла будут одинаковы только в том случае если выполнена копия. В противном случае даже если открыть чертеж и делать _SaveAs с другим именем файлы будут отличаться.
одинаковые по начерченым примитивам и блокам в чертеже относительно начала координат
Формулировка очень расплывчатая. Представь себе что у тебя есть квадрат (полилиния) и точно такой же, но из отрезков. Это одинаковые чертежи или нет? А если различаются имена слоев или типы линий? А если различаются форматы dwg-файлов (выполнены в разных версиях)? И еще море разных вариантов...
На самом деле тема очень интересная
Я тоже интересовался близким к этому вопросом
И вот что оказалось сравнить такие примитивы как блок (без анализа структуры), линия (всех видов), текст (всех видов) задача достаточно простая практически для любого.
А вот сравнить такие примитивы как штриховка или заливка мне так и не удалось...
Ещё есть десятки примитивов сплайны, арки, эллипсы, размеры, полигоны (различные), растры и т.д. и т.п.
Возможно самым простым способом здесь было бы определение DXF кодов объектов и их сравнение но как это сделать на VBA я не нашел...
Artem A писал
И вот что оказалось сравнить такие примитивы как блок (без анализа структуры), линия (всех видов), текст (всех видов) задача достаточно простая практически для любого.
думаю, что этого мне хватит. От этого начну отталкиваться. Ты сравнение делал через перебор обьектов в чертежах?
Вообще я сравнивал примитивы в одном чертеже для выявления копий
Если подразумевается что два файла могут быть начерчены разными пользователями, в разном порядке, много раз изменяться но в конечном итоге нам нужно сравнить % схожести этих файлов (подразумевая что все находиться в одинаковых координатах) тогда думаю будет правильным именно такой подход, когда мы ищем копии объектов. Если все проще, если это копии файла то в двух одинаковых файлах примитивы записаны (точно не знаю но уверен на 90%) в одинаковом порядке. И тут можно пойти простым перебором примитивов. Ну а в первом случае нужно будет выбирать объекты по координатам.
Например если взять блок то у него есть точка вставки, берем эту точку, создаем область 1см на 1см например и выбираем этой областью блоки, с таким же именем в другом файле, если там оказались блоки то сравниваем их параметры, цвет, слой, толщина, угол поворота и какие ещё душе угодно....
Возможно самым простым способом здесь было бы определение DXF кодов объектов и их сравнение но как это сделать на VBA я не нашел...
Ну а если в самом деле экспортировать (конвертировать) файлы в DXF-формат и затем по-строчно сравнить полученные текстовые файлы?
Dim exportFile As String exportFile = "C:\AutoCAD\DXFExprt" ' Adjust path to match your system ' Create an empty selection set Dim sset As AcadSelectionSet Set sset = ThisDrawing.SelectionSets.Add("TEST") ' Export the current drawing to the file specified above. ThisDrawing.Export exportFile, "DXF", sset
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Форумы CADUser → Программирование → VBA → два dwg
Форум работает на PunBB, при поддержке Informer Technologies, Inc