Тема: Очистка базы данных рисунка

Доброго времени суток.
Помогите пожалуйста из VBA удалить все неиспользуемые блоки, слои и т.п. Т.е выполнить подобие "Файл/Утилиты/Очистить...".
Интересует именно поолная очистка. PurgeAll как-то удаляет, но раземр файла остается прежним, чего не должно быть, т.к. после утилиты очистки результат совсем другой.

(изменено: fixo, 7 июля 2009г. 02:20:47)

Re: Очистка базы данных рисунка

Alexandr пишет:

Доброго времени суток.
Помогите пожалуйста из VBA удалить все неиспользуемые блоки, слои и т.п. Т.е выполнить подобие "Файл/Утилиты/Очистить...".
Интересует именно поолная очистка. PurgeAll как-то удаляет, но раземр файла остается прежним, чего не должно быть, т.к. после утилиты очистки результат совсем другой.

Очень похоже что в рисунке еще куча фильтров слоев-
они увеличивают чертеж в разы
Покопай в этом направлении
(готового кода у меня нет)

Посмотри здесь:
http://www.cadforum.cz/cadforum_en/qaID.asp?tip=3589

~'J'~

Re: Очистка базы данных рисунка

fixo пишет:

Очень похоже что в рисунке еще куча  фильтров слоев -
они увеличивают чертеж в разы
Покопай в этом направлении
(готового кода у меня нет)

Посмотри здесь:
http://www.cadforum.cz/cadforum_en/qaID.asp?tip=3589

~'J'~

я бы даже сказал, не "ещё куча", а "всё та же куча". после "всяких" удалений размер не уменьшается. Единственное уменьшение файла дает выполнение утилиты (Файл/Утилиты/Очистить...". )
Ссылку смотрел. То что понял, не подходит
Нужно именно из VBA почистить файл.

Вопрос остается открыт. Кто знает решение, не стесняйтесь ;)

Re: Очистка базы данных рисунка

O_o

Для блоков можно так

On Error Resume Next
For n = 2 To ThisDrawing.Blocks.Count
   ThisDrawing.Blocks(n).Erase
Next n
On Error GoTo 0

Erase уменьшает размер файла (на размер блока) ... т.е. на самом деле очищает.
"On Error Resume Next" -  если на объект есть ссылка, то вылетает ошибка.
"n = 2" - т.к. 0 и 1 = *Model_Space, *Paper_Space.