Сообщество программистов Autodesk в СНГ

ADN Club => AutoCAD .NET API => Тема начата: xSAKABSx от 20-02-2014, 18:27:54

Название: Сравнение объектов(Блоков) из разных файлов ?
Отправлено: xSAKABSx от 20-02-2014, 18:27:54
Суть:
необходимо сравнить блок(BlockTableReckord) с блоком из другого файла(Эталонный файл с блоками)

Вопрос~Помощь зала ?
у меня в голове есть идея сравнивать:
количество объектов и их типы (то есть) , в блоках одинаковое количество объектов одного типа.
по размеру блока  .... , и тут всё застрял!
есть у кого какие идеи в этом плане ? 

 
 
 
Название: Re: Сравнение объектов(Блоков) из разных файлов ?
Отправлено: Александр Ривилис от 20-02-2014, 18:31:13
Если ты поймешь "Что такое одинаковые блоки?" - сможешь написать это сравнение. Под этим можно понимать и абсолютное равенство (попарно сравнивать свойства примитивов через Reflection) и относительное (выглядят одинаково) и еще возможны варианты...
Название: Re: Сравнение объектов(Блоков) из разных файлов ?
Отправлено: Андрей Бушман от 20-02-2014, 18:45:51
первым делом стоит сравнить хэши, чтобы лишнюю работу не делать. Это если полагаться на то, что в классах AutoCAD .NET API переопределён метод Object.GetHashCode(), т.к. в разных чертежах одинаковые (с точки зрения юзера) объекты могут иметь разные хэндлы. Полагаю, что в переопределённой версии метода, хэндлы следовало бы исключать из обработки при вычислении хэша:
Код - C# [Выбрать]
  1. public virtual int GetHashCode();
Название: Re: Сравнение объектов(Блоков) из разных файлов ?
Отправлено: xSAKABSx от 21-02-2014, 11:37:58
первым делом стоит сравнить хэши, чтобы лишнюю работу не делать. Это если полагаться на то, что в классах AutoCAD .NET API переопределён метод Object.GetHashCode(), т.к. в разных чертежах одинаковые (с точки зрения юзера) объекты могут иметь разные хэндлы. Полагаю, что в переопределённой версии метода, хэндлы следовало бы исключать из обработки при вычислении хэша:
Код - C# [Выбрать]
  1. public virtual int GetHashCode();

Хеши BlockTableReckord каждый раз разные при открытие одного того же файла =(

Если ты поймешь "Что такое одинаковые блоки?" - сможешь написать это сравнение. Под этим можно понимать и абсолютное равенство (попарно сравнивать свойства примитивов через Reflection) и относительное (выглядят одинаково) и еще возможны варианты...
Ну чувствую придется сравнивать по обьектно