Определить менялся ли объект на чертеже между сессиями

Автор Тема: Определить менялся ли объект на чертеже между сессиями  (Прочитано 13243 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн AtomohodАвтор темы

  • ADN OPEN
  • ****
  • Сообщений: 453
  • Карма: 1
Здравствуйте!
Интересует один вопрос- возможно ли как-нибудь определить менялся ли объект на чертеже между сессиями? Есть чертеж, в нем 500 объектов, происходит работа с чертежом- что-то добавляется, что-то модифицируется(например длина линии), что-то удаляется. Чертеж закрывается. Сессия окончена. На следующий день все то же самое. Наступает час x и надо понять что подвергалось изменению в чертеже. Важно-чертеж один и тот же. С добавлением/удалением я примерно решил так - собрать все HAndle из раннего чертежа, найти разницу и сравнить ее со списком Handle из раннего чертежа, затем из текущего. Но как определить что объекты с тем же HAndle, то есть не добавленные или удаленные, а существующие и там и там, подвергались модификации?

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13898
  • Карма: 1790
  • Рыцарь ObjectARX
  • Skype: rivilis
Но как определить что объекты с тем же HAndle, то есть не добавленные или удаленные, а существующие и там и там, подвергались модификации?
Хранить между сессиями их свойства.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн AtomohodАвтор темы

  • ADN OPEN
  • ****
  • Сообщений: 453
  • Карма: 1
Хранить между сессиями их свойства.
А где? В сторонней базе на SQL server или можно по-другому?

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 738
А где? В сторонней базе на SQL server или можно по-другому?
Где угодно. Можно в сторонней базе на SQL, можно прямо в чертеже ну и тд и тп - на что фантазии хватит.
Если есть две версии чертежей - до модификации и после, то можно просто сравнивать на предмет изменений. Даже есть специальный инструмент в AutoCAD - DWG Compare. Сейчас у меня некоторое де-жа-вю: вроде совсем недавно эту тему здесь обсуждали уже?

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13898
  • Карма: 1790
  • Рыцарь ObjectARX
  • Skype: rivilis
Сейчас у меня некоторое де-жа-вю: вроде совсем недавно эту тему здесь обсуждали уже?
И неоднократно и в разных контекстах.
Atomohod,
Кстати, есть операции, которые позволяют изменить метки (Handle) примитива. Например, команда _WBLOCK, не говоря уже о программных штучках типа DBObject.SwapIdWith и DBObject.HandOverTo
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн AtomohodАвтор темы

  • ADN OPEN
  • ****
  • Сообщений: 453
  • Карма: 1
де угодно. Можно в сторонней базе на SQL, можно прямо в чертеже ну и тд и тп - на что фантазии хватит.
Меня беспокоит объем файла, если я для всех объектов буду хранить все их свойства в течение всего жизненного цикла чертежа то файл будет весом под 10 Гб (сам файл сейчас весит 45 Мб). Или эти данные можно хранить в сжатом виде?

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13898
  • Карма: 1790
  • Рыцарь ObjectARX
  • Skype: rivilis
сам файл сейчас весит 45 Мб
Это 500 объектов? Сколько же там мусора??? А хранить лучше вне чертежа.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13898
  • Карма: 1790
  • Рыцарь ObjectARX
  • Skype: rivilis
Или эти данные можно хранить в сжатом виде?
Вот тут всё и упирается в вопрос - что в данном случае данные? Если не разобраться с набором свойств, которые нужно сравнивать - то незачем и браться за эту задачу. Кстати, а что делать в таком случае:
1. Есть отрезок длиной 100.
2. Его укоротили до 80.
3. Его удлинили до 100.
Считать ли что с ним ничего не делали или считать, что что-то делали, но ничего не изменилось?
Постановка задачи столь расплывчата, что до начала программирования ее нужно очень хорошо формализовать.
« Последнее редактирование: 27-02-2020, 01:31:46 от Александр Ривилис »
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Привалов Дмитрий

  • ADN Club
  • *****
  • Сообщений: 554
  • Карма: 119
Наступает час x и надо понять что подвергалось изменению в чертеже
Подобные задачи часто возникают в головах у руководства, обсуждаются и благополучно умирают. И не только применительно к чертежам.

Дело в том, что начинаются они с фразы "неплохо бы увидеть что изменилось", а реализация им представляется так: "нажал кнопку и тебе показалось что изменилось".

На деле в ходе обсуждения часто выясняется, что:
1. Кнопка должна быть сложным фильтром с настройками, учитывать изменение слоев/не учитывать и т.д.
2. Предоставленный результат необходимо кому-то анализировать.
3. Обычно оказывается что всем некогда и "заказчики новшества" не готовы тратить свое время. Т.е. готовы только на то чтобы спросить кого-то а что изменилось и им ответили.
4. Часто выясняется, что это нужно очень редко, когда идет обмен с внешним заказчиком. Когда возвращается некий высланный им чертеж-задание с надписью мы "что-то поменяли", примите в работу. Возникает неуверенность, что именно.

Алгоритм решения, подойдет всем в 95% случаев:
1. За разработку программы не браться!
2. Предложить сохранять копии файлов и использовать готовые средства сравнения файлов.
3. Максимум сделать инструкцию.
4. Выждать месяца три и спросить пользуются нет. Получить ответ один раз использовали, потом некогда.
5. Успокоиться.
Задача решена. :-)

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 738
Алгоритм решения, подойдет всем в 95% случаев:
1. За разработку программы не браться!
2. Предложить сохранять копии файлов и использовать готовые средства сравнения файлов.
3. Максимум сделать инструкцию.
4. Выждать месяца три и спросить пользуются нет. Получить ответ один раз использовали, потом некогда.
5. Успокоиться.
Задача решена. :-)



 :D

Оффлайн AtomohodАвтор темы

  • ADN OPEN
  • ****
  • Сообщений: 453
  • Карма: 1
1. Есть отрезок длиной 100.
2. Его укоротили до 80.
3. Его удлинили до 100.
Считать ли что с ним ничего не делали или считать, что что-то делали, но ничего не изменилось?
Интересует только видимые глазом изменения геометрии - типа переехало в другой край чертежа, изменило геометрию. DWG compare есть в поздних версиях акада, а их у нас нет. Кроме того нужно реализовать перелет к измененному объекту(зумирование на него) по его handle. Такие дела.

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13898
  • Карма: 1790
  • Рыцарь ObjectARX
  • Skype: rivilis
Кроме того нужно реализовать перелет к измененному объекту(зумирование на него) по его handle.
Ну это самое простое. Правда если таких изменённых объектов несколько сотен, тысяч - что с этим делать?
Интересует только видимые глазом изменения геометрии - типа переехало в другой край чертежа, изменило геометрию.
Достаточно того, что объект засунули в блок - уже в этом случае не так просто понять одно ли и то же получилось. Про вложенные блоки я молчу. А что с расчленёнными полилиниями? А с аппроксимированными сплайнами или сглаженными полилиниями?
Короче говоря. Привалов Дмитрий абсолютно прав и добавить мне к этому нечего.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн AtomohodАвтор темы

  • ADN OPEN
  • ****
  • Сообщений: 453
  • Карма: 1
Достаточно того, что объект засунули в блок - уже в этом случае не так просто понять одно ли и то же получилось. Про вложенные блоки я молчу. А что с расчленёнными полилиниями? А с аппроксимированными сплайнами или сглаженными полилиниями?
Тогда обращаюсь к Вашему опыту - как эти моменты обрабатывает DWG compare? Как он устроен, хотя бы принципиально, внутри себя?

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13898
  • Карма: 1790
  • Рыцарь ObjectARX
  • Skype: rivilis
Тогда обращаюсь к Вашему опыту - как эти моменты обрабатывает DWG compare? Как он устроен, хотя бы принципиально, внутри себя?
Это Know-How Autodesk. Такой информацией они не делятся. А вот как это внешне проявлется они описывают: https://knowledge.autodesk.com/ru/support/autocad/learn-explore/caas/CloudHelp/cloudhelp/2019/RUS/AutoCAD-Core/files/GUID-2D69E78D-5C82-464F-B864-CD29D5720EB9-htm.html
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Владимир Шу

  • ADN Club
  • *****
  • Сообщений: 626
  • Карма: 161
    • ПГСу Бложик
DWG compare есть в поздних версиях акада, а их у нас нет.
https://apps.autodesk.com/ACD/en/Detail/Index?id=1050435430275763742 ... с 2016 версии можно использовать, какие уж тут поздние/последние версии.