Сообщество программистов Autodesk в СНГ
ADN Club => AutoCAD .NET API => Тема начата: Привалов Дмитрий от 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 и откуда появляются.
Можете просветить по данному вопросу?
-
Да кто ж его знает, что это за объекты и зачем они создаются. При открытии чертежа не только с объектами такая ситуация. Я как-то разбирался с базами данных документа, так их при открытии чертежа создается и уничтожается то ли 2, то ли 3 штуки, точно не помню. Вот тоже до сих пор не понимаю, зачем их понадобилось создавать? Если есть много свободного времени и крайняя необходимость - изучайте: тестируйте, анализируйте, разбирайтесь. Но Вы уверены, что оно Вам надо? :)
-
изучайте: тестируйте, анализируйте, разбирайтесь. Но Вы уверены, что оно Вам надо?
Проблема в том, что наши файлы автокада "замусорены", применены разные стили и содержат в себе ошибки. Как везде, где не действуют "правила".
Задачи цепляют друг друга.
Встает вопрос не только о разработке стандарта предприятия, но и о средствах обеспечения и контроля данного стандарта. А также о формировании требований к dwg файлам их чистке.
Приходится глубже лезть в dwg и понимать что есть Мусор, а что должно быть.
Ну например просканировав 2 десятка чертежей, нашел, что есть объекты со свойством visible = false. Вроде мусор, мешающий совершить автоматическую проверку на соответствие стандартам. Пришлось разбираться, выводы объекты с visible = false не всегда мусор, внутри динамических блоков используются.
Т.е. больше вопрос об уже существующем архиве. взяли старый файл, как с ним должны работать проектировщики? (Чистить, назначать стили, какой уровень контроля, средства контроля и т.д.) Как у Вас коллеги решены вопросы по старым файлам и материалам от заказчиков?
-
применены разные стили
Ну если они уже применены, значит есть объекты, которые используют эти стили. Следовательно, это уже не мусор.
и содержат в себе ошибки
Audit. Он вроде всегда справлялся с задачей поиска и исправления ошибок. В крайнем случае - восстановление чертежа.
Не знаю как у вас, у нас самая большая проблема - это замусоривание чертежа неграфическими объектами вертикальных приложений. В последнее время очень выручает стандартный экспорт из Civil 3D 2015-2016 в чертеж простого AutoCAD.
Видеопример:
Чертеж после такой чистки "худеет" с десятков мегабайт до сотен килобайт.
А остальное - кучи слоев, стилей и т.п. как-то не сильно мешают работе.
Ну и не забывать про Purge.
Итого: Purge+Audit+Export to AutoCAD
-
Не знаю как у вас, у нас самая большая проблема - это замусоривание чертежа неграфическими объектами вертикальных приложений
у нас больше графическими, которые ведут себя "плохо". И в основном это объекты ProjectStudio 2008.
Разбивать их в demandload=0 нельзя, т.к. они себя не отображают как надо.
demandload=3 можно, но пока "мешает" сложившаяся "технологическая цепочка"
Принимать решения по стилям, технологии сложно, т.к. над отделами нет какого-либо единого технического контроля/управления.
как-то так.
А вообще у меня назревает мысль, что DWG - очень подходит для хранения данных в процессе проектирования, но не очень подходит для хранения готовых чертежей. Он этакий недо PDF, но пере .TAB(Mapinfo).
Логически напрашивается формат *.dwg2d ,который лишен Z координаты, возможности хранить Proxy, дополнительной информации. В котором стили по максимуму вынесены в приложение.
Такой формат будет более управляемым и контролируемым. А главное когда проектировщик видит dwg и dwg2d он понимает это чертеж,а это проект. Сейчас что-то объяснить довольно сложно, что вот он DWG с прокси, в архив помещайте dwg без прокси. Также видишь DWG а что внутри, можно только гадать.
-
Итого: 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 не выловит подобные объекты.
-
Audit. Он вроде всегда справлялся с задачей поиска и исправления ошибок.
Ничего подобного. Аудит справляется далеко не всегда: не всё находит и не всё исправляет. Неоднократно сталкивался с тем, что в файлах, где аудит показывает 0 ошибок, recovery находил огромное их количество.
-
Ничего подобного. Аудит справляется далеко не всегда: не всё находит и не всё исправляет. Неоднократно сталкивался с тем, что в файлах, где аудит показывает 0 ошибок, recovery находил огромное их количество.
Да такое тоже наблюдалось. Ну огромного количества правда не наблюдал.
После recovery сразу запускается Audit. т.е. recovery надежнее.
Но и он не всегда помогал.
-
Вобщем автокад "спамит" в database.
Вот например создана линия. Для отображения ее создались промежуточные объекты.
https://yadi.sk/i/SxlJgKXghvTC9 (https://yadi.sk/i/SxlJgKXghvTC9)
Объекты выделенные цветом и (x) - объекты удаленные IsErased
После сохранения/открытия чертежа данные объекты удаляются.
Но появляются другие, в основном DBVisualStyle
https://yadi.sk/i/qwkWl1iVhvTxL (https://yadi.sk/i/qwkWl1iVhvTxL)
А вот мой "странный" аннотативный блок.
*U2 блок, это похоже "рабочий дубликат" аннототивного блока, который содержит в себе представления блока под каждый масштаб.
Благодаря этому видимо и происходит размещение элементов под каждый масштаб индивидуально.
https://yadi.sk/i/hF3oN9SVhvUcs (https://yadi.sk/i/hF3oN9SVhvUcs)
Становиться видно, что имеется некоторая не оптимальность и перерасход ресурсов для аннотативных блоков. С динамическими блоками наверное тоже самое.
Предполагаю, что масштабы аннотаций и большое количество блоков, например топопланы будут не очень хорошо работать. Кто пробовал отпишитесь.
-
Становиться видно, что имеется некоторая не оптимальность и перерасход ресурсов для аннотативных блоков. С динамическими блоками наверное тоже самое.
Всё это связано с добавлением нового функционала в AutoCAD на базе существующего функционала. Например, для отображения динамических блоков используются статические (анонимные). Иначе нужно было придумывать совершенно новый функционал (класс объекта/примитива), думать о том как его показывать, как обрабатывать, как хранить в dwg-файле, сохранять в формате предыдущих версий AutoCAD и т.д., и т.п. Видимо решили пойти по пути наименьшего сопротивления.
-
Вроде бы тема подходит...
Можно ли как то узнать, когда чистился чертеж в последний раз и не пора бы его почистить, так как накопилось удаленных и не используемых объектов?
-
Можно ли как то узнать, когда чистился чертеж в последний раз и не пора бы его почистить
Нет. Эта информация в чертеже не хранится. Разве что ты сам будешь чистить и где-то эту информацию писать.