"Мусорные" объекты в database

Автор Тема: "Мусорные" объекты в database  (Прочитано 11677 раз)

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

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

  • ADN Club
  • *****
  • Сообщений: 546
  • Карма: 119
"Мусорные" объекты в database
« : 15-07-2015, 08:17:34 »
Немного предыстории:
Собственно пытался определить, был ли чертеж сохранен с isavepercent>0.
Сделал предположение, что в чертеже должны быть объекты со свойствами:
isErased, isEffectivelyErased когда isavepercent>0
и не должно их быть, если isavepercent=0 в момент записи файла.

Наткнулся на непонятное мне поведение.

Autocad 2014 isavepercent=0
Создаю новый чертеж. Без объектов.
database.ApproxNumObjects = 124
Сохраняю. Закрываю/открываю и
database.ApproxNumObjects = 189

хм. В пустом чертеже при открытии появляются объекты
isErased: 54 isEffectivelyErased: 54
И еще 11 каких-то объектов.

Попытался проанализировать, что за объекты isEffectivelyErased были созданы
Отследил по цепочке собственников объектов. OwnerId
Подрисовал свойства, чтоб лучше понимать что создается/удаляется
(X) - isErased
(#) - isEffectivelyErased
Вышли такие объекты:
DBDictionary-DBDictionary-DBVisualStyle-DBDictionary(X)(#)-Xrecord(X)(#)
DBDictionary-DBDictionary-MLeaderStyle-DBDictionary(X)(#)-Xrecord(X)(#)
DBDictionary-DBDictionary-SectionViewStyle-DBDictionary(X)(#)-Xrecord(X)(#)
DBDictionary-DBDictionary-DetailViewStyle-DBDictionary(X)(#)-Xrecord(X)(#)

т.е. предварительно DBDictionary(X)(#)-Xrecord(X)(#)

Предполагаю, что это какие-то временные(промежуточные) объекты.
Причем появляются только после открытия.(при создании их не было.)
не понимаю что они делают в database и откуда появляются.

Можете просветить по данному вопросу?


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

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 737
Re: "Мусорные" объекты в database
« Ответ #1 : 15-07-2015, 10:19:27 »
Да кто ж его знает, что это за объекты и зачем они создаются. При открытии чертежа не только с объектами такая ситуация. Я как-то разбирался с базами данных документа, так их при открытии чертежа создается и уничтожается то ли 2, то ли 3 штуки, точно не помню. Вот тоже до сих пор не понимаю, зачем их понадобилось создавать? Если есть много свободного времени и крайняя необходимость - изучайте: тестируйте, анализируйте, разбирайтесь. Но Вы уверены, что оно Вам надо? :)

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

  • ADN Club
  • *****
  • Сообщений: 546
  • Карма: 119
Re: "Мусорные" объекты в database
« Ответ #2 : 15-07-2015, 10:46:10 »
изучайте: тестируйте, анализируйте, разбирайтесь. Но Вы уверены, что оно Вам надо?
Проблема в том, что наши файлы автокада "замусорены", применены разные стили и содержат в себе ошибки. Как везде, где не действуют "правила".
Задачи цепляют друг друга.
Встает вопрос не только о разработке стандарта предприятия, но и о средствах обеспечения и контроля данного стандарта. А также о формировании требований к dwg файлам их чистке.

Приходится глубже лезть в dwg и понимать что есть Мусор, а что должно быть.
Ну например просканировав 2 десятка чертежей, нашел, что есть объекты со свойством visible = false. Вроде мусор, мешающий совершить автоматическую проверку на соответствие стандартам. Пришлось разбираться, выводы объекты с  visible = false не всегда мусор, внутри динамических блоков используются.

Т.е. больше вопрос об уже существующем архиве. взяли старый файл, как с ним должны работать проектировщики? (Чистить, назначать стили, какой уровень контроля, средства контроля и т.д.) Как у Вас коллеги решены вопросы по старым файлам и материалам от заказчиков?

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

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 737
Re: "Мусорные" объекты в database
« Ответ #3 : 15-07-2015, 11:11:14 »
применены разные стили
Ну если они уже применены, значит есть объекты, которые используют эти стили. Следовательно, это уже не мусор.
и содержат в себе ошибки
Audit. Он вроде всегда справлялся с задачей поиска и исправления ошибок. В крайнем случае - восстановление чертежа.

Не знаю как у вас, у нас самая большая проблема - это замусоривание чертежа неграфическими объектами вертикальных приложений. В последнее время очень выручает стандартный экспорт из Civil 3D 2015-2016 в чертеж простого AutoCAD.
Видеопример:

Чертеж после такой чистки "худеет" с десятков мегабайт до сотен килобайт.
А остальное - кучи слоев, стилей и т.п. как-то не сильно мешают работе.

Ну и не забывать про Purge.

Итого: Purge+Audit+Export to AutoCAD
« Последнее редактирование: 21-07-2015, 11:42:48 от Александр Ривилис »

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

  • ADN Club
  • *****
  • Сообщений: 546
  • Карма: 119
Re: "Мусорные" объекты в database
« Ответ #4 : 15-07-2015, 12:29:00 »
Не знаю как у вас, у нас самая большая проблема - это замусоривание чертежа неграфическими объектами вертикальных приложений

у нас больше графическими, которые ведут себя "плохо". И в основном это объекты ProjectStudio 2008.
Разбивать их в demandload=0 нельзя, т.к. они себя не отображают как надо.
demandload=3 можно, но пока "мешает" сложившаяся "технологическая цепочка"
Принимать решения по стилям, технологии сложно, т.к. над отделами нет какого-либо единого технического контроля/управления.
как-то так.

А вообще у меня назревает мысль, что DWG - очень подходит для хранения данных в процессе проектирования, но не очень подходит для хранения готовых чертежей. Он этакий недо PDF, но пере  .TAB(Mapinfo).

Логически напрашивается формат *.dwg2d ,который лишен Z координаты, возможности хранить Proxy, дополнительной информации. В котором стили по максимуму вынесены в приложение.
Такой формат будет более управляемым и контролируемым. А главное когда проектировщик видит dwg и dwg2d он понимает это чертеж,а это проект. Сейчас что-то объяснить довольно сложно, что вот он DWG с прокси, в архив помещайте dwg без прокси. Также видишь DWG а что внутри, можно только гадать.

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

  • ADN Club
  • *****
  • Сообщений: 546
  • Карма: 119
Re: "Мусорные" объекты в database
« Ответ #5 : 15-07-2015, 13:02:16 »
Итого: Purge+Audit+Export to AutoCAD

Уже реализовали, немного шире:
(AUDIT)
(EXPLODEALLPROXY)
(REMOVEALLPROXY)
(AUDIT)
(PURGE_REGISTERED_APPLICATION)
(PURGE_ALL)
(PurgeScales)
(ZOOM_ALL)
(REGEN_ALL)

Но после первых тестов выявили необходимо внести корректировки в методику очистки. Пишу примерно, что нужно
(RemoveNotAllowed) ;Например источники света
(RemoveUnvisible) ;Описал выше
(RemoveNullGeometry)   ;Для 2008. в 2014 добавлен в Purge
(ExplodeNotZombieProxy) ;Вот тут четкой картины пока нет. Требует согласованности с проектировщиками.
(RemoveIncorrectReference) ;Напрашивается удалять недоступные ссылки
(RemoveIncorrectObjects) ;Представляю себе примерно эту функцию. Например попались штриховки с некорректным контуром. В 2008 их не видно, в 2014 видно. Вполне возможно что RemoveNullGeometry не выловит подобные объекты.

Оффлайн Андрей Бушман

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Re: "Мусорные" объекты в database
« Ответ #6 : 15-07-2015, 19:47:16 »
Audit. Он вроде всегда справлялся с задачей поиска и исправления ошибок.
Ничего подобного. Аудит справляется далеко не всегда: не всё находит и не всё исправляет. Неоднократно сталкивался с тем, что в файлах, где аудит показывает 0 ошибок, recovery находил огромное их количество.

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

  • ADN Club
  • *****
  • Сообщений: 546
  • Карма: 119
Re: "Мусорные" объекты в database
« Ответ #7 : 15-07-2015, 20:18:17 »
Ничего подобного. Аудит справляется далеко не всегда: не всё находит и не всё исправляет. Неоднократно сталкивался с тем, что в файлах, где аудит показывает 0 ошибок, recovery находил огромное их количество.
Да такое тоже наблюдалось. Ну огромного количества правда не наблюдал.
После recovery сразу запускается Audit. т.е. recovery надежнее.
Но и он не всегда помогал.

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

  • ADN Club
  • *****
  • Сообщений: 546
  • Карма: 119
Re: "Мусорные" объекты в database
« Ответ #8 : 17-07-2015, 14:21:45 »
Вобщем автокад "спамит" в database.

Вот например создана линия. Для отображения ее создались промежуточные объекты.
https://yadi.sk/i/SxlJgKXghvTC9
Объекты выделенные цветом и (x) - объекты удаленные IsErased
После сохранения/открытия чертежа данные объекты удаляются.

Но появляются другие, в основном DBVisualStyle
https://yadi.sk/i/qwkWl1iVhvTxL

А вот мой "странный" аннотативный блок.
*U2 блок, это похоже "рабочий дубликат" аннототивного блока, который содержит в себе представления блока под каждый масштаб.
Благодаря этому видимо и происходит размещение элементов под каждый масштаб индивидуально.
https://yadi.sk/i/hF3oN9SVhvUcs

Становиться видно, что имеется некоторая не оптимальность и перерасход  ресурсов для аннотативных блоков. С динамическими блоками наверное тоже самое.
Предполагаю, что масштабы аннотаций и большое количество блоков, например топопланы будут не очень хорошо работать. Кто пробовал отпишитесь.

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: "Мусорные" объекты в database
« Ответ #9 : 21-07-2015, 11:35:47 »
Становиться видно, что имеется некоторая не оптимальность и перерасход  ресурсов для аннотативных блоков. С динамическими блоками наверное тоже самое.
Всё это связано с добавлением нового функционала в  AutoCAD на базе существующего функционала. Например, для отображения динамических блоков используются статические (анонимные). Иначе нужно было придумывать совершенно новый функционал (класс объекта/примитива), думать о том как его показывать, как обрабатывать, как хранить в dwg-файле, сохранять в формате предыдущих версий AutoCAD и т.д., и т.п. Видимо решили пойти по пути наименьшего сопротивления.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN Club
  • *****
  • Сообщений: 624
  • Карма: 158
    • ПГСу Бложик
Re: "Мусорные" объекты в database
« Ответ #10 : 05-08-2019, 10:42:56 »
Вроде бы тема подходит...
Можно ли как то узнать, когда чистился чертеж в последний раз и не пора бы его почистить, так как накопилось удаленных и не используемых объектов?

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: "Мусорные" объекты в database
« Ответ #11 : 05-08-2019, 10:52:06 »
Можно ли как то узнать, когда чистился чертеж в последний раз и не пора бы его почистить
Нет. Эта информация в чертеже не хранится. Разве что ты сам будешь чистить и где-то эту информацию писать.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение