Сомневаюсь в работоспособности этой идеи.
Это точно.
-Прошу Вашего мнения по поводу моего алгоритма- будет ли работать или может есть какой нибудь путь попроще?
Не только работоспособность идеи, но и правильность постановки задачи вызывает большие сомнения.
1. Уже что-то подобное делалось? Или организация впервые пытается это проделать?
Есть большой насыщенный чертеж, который разбивается на строительные районы и отдается в разработку нескольким людям по району каждому. Нужно чтобы с определенной периодичностью, например раз в три дня вся геометрия из файлов разработчиков собиралась обратно в главный файл без участия человека.
настораживает насколько большой файл. Файл может перестать ворочаться и уронить автокад. Для этого как-раз используются внешние ссылки с их возможностью подгрузки-выгрузки в чертеж. Я нечто подобное делал но с растрами, там объем растров был большой и изначально было понимание что все открывать одновременно нельзя. И цель "общего файла" увязать всю информацию в координатах и иметь возможность обрабатывать частями.
это первое что ты должен проработать.
2. Для чего требование?
PS External reference не подойдет, требуют чтобы в файле были сами объекты.
Работа с печатью, управление слоями, это все возможно с External reference, и в конце концов External reference можно в определенные момент внедрять в чертеж, получая " сами объекты".
3.
команда проверяла различия в версиях объектов исходных файлов и если объекты различаются то переносила бы их в главный чертеж вместо устаревших
4. Если есть различия то команда копирует объект из разрабатываемого файла в главный, удаляя устаревший.
А затереть все и скопировать в главный все исходники не проще? И опять очень смахивает на внедрение External reference. Может тут ключевое - найти отличия в 2х файлах и определить время и место изменений....А само внедрение судя по описанию всегда по последней версии.
4.
1. Просканировать главный чертеж и записать в файл типа json состояние объектов и их Handle.
3. Периодически запускать команду которая бы по handle находила объекты в главном и разрабатываемых чертежах, считывала из json их предыдущее состояние и сравнивала с текущим.
делал нечто подобное но на маленьких файлах 2-10Мб, записывал состояние в xml работало крайне медленно, т.к. это парсинг строк. Т.е. в твоем случае больших файлов это скорее всего не нужно, нужно сравнивать объекты в памяти, нигде не запоминая состояние.
Если уж необходимо запоминать состояние, то смотреть в сторону BinaryWriter
https://metanit.com/sharp/tutorial/5.6.php. Предполагаю, что работает в несколько раз быстрее, чем json(но это не точно).