Тема: два dwg

как узнать, что два чертежа одинаковы? канечно необходим рациональный способ.......

Re: два dwg

CRC Части файла. Для того чтоб определить какой нужно по экспериментировать. С чего бы я начал, сделал копию и изменил зум файла, и при помощи программ подобных WinMerge посмотрел в чем они начали различаться. Предпологаю что различия будут в начале файла. Следовательно пропуская определенный блок начала файла и далее расчет CRC хвоста, получаем идентичны файлы или нет. Все это мои предположения пробуйте и отпишитесь если это так.

(изменено: Александр Ривилис, 1 июня 2009г. 18:48:32)

Re: два dwg

Вопрос мне кажется нужно переформулировать. Точнее определится с тем что что такое "два чертежа одинаковы". Два dwg-файла будут одинаковы только в том случае если выполнена копия. В противном случае даже если открыть чертеж и делать _SaveAs с другим именем файлы будут отличаться.

(изменено: фарэнгейт, 1 июня 2009г. 22:36:58)

Re: два dwg

одинаковые по начерченым примитивам и блокам в чертеже относительно начала координат

(изменено: Александр Ривилис, 2 июня 2009г. 00:15:59)

Re: два dwg

Формулировка очень расплывчатая. Представь себе что у тебя есть квадрат (полилиния) и точно такой же, но из отрезков. Это одинаковые чертежи или нет? А если различаются имена слоев или типы линий? А если различаются форматы dwg-файлов (выполнены в разных версиях)? И еще море разных вариантов...

Re: два dwg

На самом деле тема очень интересная
Я тоже интересовался близким к этому вопросом
И вот что оказалось сравнить такие примитивы как блок (без анализа структуры), линия (всех видов), текст (всех видов) задача достаточно простая практически для любого.
А вот сравнить такие примитивы как штриховка или заливка мне так и не удалось...
Ещё есть десятки примитивов сплайны, арки, эллипсы, размеры, полигоны (различные), растры и т.д. и т.п.
Возможно самым простым способом здесь было бы определение DXF кодов объектов и их сравнение но как это сделать на VBA я не нашел...

(изменено: фарэнгейт, 2 июня 2009г. 22:47:00)

Re: два dwg

Artem A писал
И вот что оказалось сравнить такие примитивы как блок (без анализа структуры), линия (всех видов), текст (всех видов) задача достаточно простая практически для любого.

думаю, что этого мне хватит. От этого начну отталкиваться. Ты сравнение делал через перебор обьектов в чертежах?

Re: два dwg

Вообще я сравнивал примитивы в одном чертеже для выявления копий
Если подразумевается что два файла могут быть начерчены разными пользователями, в разном порядке, много раз изменяться но в конечном итоге нам нужно сравнить % схожести этих файлов (подразумевая что все находиться в одинаковых координатах) тогда думаю будет правильным именно такой подход, когда мы ищем копии объектов. Если все проще, если это копии файла то в двух одинаковых файлах примитивы записаны (точно не знаю но уверен на 90%) в одинаковом порядке. И тут можно пойти простым перебором примитивов. Ну а в первом случае нужно будет выбирать объекты по координатам.
Например если взять блок то у него есть точка вставки, берем эту точку, создаем область 1см на 1см например и выбираем этой областью блоки, с таким же именем в другом файле, если там оказались блоки то сравниваем их параметры, цвет, слой, толщина, угол поворота и какие ещё душе угодно....

Re: два dwg

Artem A пишет:

Возможно самым простым способом здесь было бы определение 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