| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Уменьшить размер файла DWG

Уменьшить размер файла DWG

Закрытая тема
Поиск в этой теме
Непрочитано 25.01.2007, 19:25 #1
Уменьшить размер файла DWG
sheinik
 
проектант
 
Запад МО
Регистрация: 02.01.2007
Сообщений: 152

Как уменьшить размер файлов dwg акад2007 (какие нибудь ненужные фрагменты, слои, блоки удалиить)? Может мастера акада дадут мудрый совет?
Просмотров: 28358
 
Непрочитано 25.01.2007, 19:55
#2
Чигинский Дмитрий

ГИП
 
Регистрация: 09.09.2006
Тула
Сообщений: 112
<phrase 1= Отправить сообщение для Чигинский Дмитрий с помощью Yahoo Отправить сообщение для Чигинский Дмитрий с помощью Skype™


Purge обычно помогает.
__________________
С уважением, Чигинский Дмитрий.
Чигинский Дмитрий вне форума  
 
Непрочитано 25.01.2007, 19:57
#3
Огурец

Profan
 
Регистрация: 27.04.2005
Москва
Сообщений: 6,754
Отправить сообщение для Огурец с помощью Skype™


Между прочем, вопрос не так и прост. Я вот на днях сидел с одним файлом весь вечер, вычищая его вручную от блоков однократно использованых, совершенно ненужных по содержанию, но вполне адекватных с точки зрения автокада, как программы. Простой Purge уменьшил файл наполовину, с 7 до 4 метров. Дальнейшая очистка довела его размер до 0,3 метра! Масса дублирующих линий, находящихся в 0,0001 мм друг от друга и т.п. В некоторых случаях экспрессовские команды работали по пол-часа.
Огурец вне форума  
 
Непрочитано 25.01.2007, 20:06
#4
Чигинский Дмитрий

ГИП
 
Регистрация: 09.09.2006
Тула
Сообщений: 112
<phrase 1= Отправить сообщение для Чигинский Дмитрий с помощью Yahoo Отправить сообщение для Чигинский Дмитрий с помощью Skype™


Цитата:
Сообщение от Огурец
Масса дублирующих линий, находящихся в 0,0001 мм друг от друга и т.п.
Тогда есть ещё OptiTool, только галочку преобразовывать Line в Polyline я снимаю. И работает он в версиях 2000-2006.
__________________
С уважением, Чигинский Дмитрий.
Чигинский Дмитрий вне форума  
 
Автор темы   Непрочитано 25.01.2007, 20:12
#5
sheinik

проектант
 
Регистрация: 02.01.2007
Запад МО
Сообщений: 152


Я делал, все удалить... идет процесс, что=то там пишется, какойто файл *.SHX удален, а потом файл сохраняю но размер не меняется. Мне не очень-то верится что у меня такой "чистый" файл!
sheinik вне форума  
 
Непрочитано 25.01.2007, 20:35
#6
Никита В.

CAD Operator
 
Регистрация: 01.11.2005
Samara-Gorodok
Сообщений: 389


В options>incremental save percentage надо ставить 0 (по умолчанию 50), а то удаленный обьекты всеравно сохраняются в БД чертежа (за подробными пояснениями в help).......
__________________
АвтоКАД это не только электронный кульман,
Но и великий ГЕМОР
Никита В. вне форума  
 
Непрочитано 25.01.2007, 21:46
#7
Zark

Проектирование и технология РЭС
 
Регистрация: 24.12.2006
С.-Петербург
Сообщений: 111
<phrase 1=


Цитата:
Сообщение от Огурец
Масса дублирующих линий, находящихся в 0,0001 мм друг от друга и т.п. В некоторых случаях экспрессовские команды работали по пол-часа.
А OVERKILL не пробовали использовать? Правда, он не во всех акадах есть, как мне кажется в 2007 есть, а в 2002 на работе такое комманды не нашлось.
Zark вне форума  
 
Непрочитано 25.01.2007, 21:52
#8
Никита В.

CAD Operator
 
Регистрация: 01.11.2005
Samara-Gorodok
Сообщений: 389


Цитата:
Сообщение от Zark
А OVERKILL не пробовали использовать? Правда, он не во всех акадах есть, как мне кажется в 2007 есть, а в 2002 на работе такое комманды не нашлось.
Дык это вообщето экспресовская команда... Просто в 2007 самые крутые команды из экспресов внедрили в сам акад
__________________
АвтоКАД это не только электронный кульман,
Но и великий ГЕМОР
Никита В. вне форума  
 
Непрочитано 25.01.2007, 22:18 Re: Уменьшить размер файла DWG
#9
T-Yoke

Артиллерист - вертолётчик. Дипломированный инженер-механик. Technologist
 
Регистрация: 29.11.2004
Где-то около Москвы
Сообщений: 16,531
Отправить сообщение для T-Yoke с помощью Skype™


Цитата:
Сообщение от sheinik
Как уменьшить размер файлов dwg акад2007 (какие нибудь ненужные фрагменты, слои, блоки удалиить)? Может мастера акада дадут мудрый совет?
1. Использовать Purge (Файл_Утилиты_Очистить)
2. Не использовать в создаваемых блоках, других слоев кроме 0, и новых типов линий.
3. Чем больше блоков, тем лучше (блок - это объект, и точка - это объект), значит если загнать повторяющий набор элементов в блок объектов будет меньше.
4. Следите за наличием Z-координаты, если она не нужна, то и не надо её вводить.
5. Чертите простыми примитивами (вместо полилиниий набор дуг).
6. Левую нижнюю точку чертежа держите в нуле.
7. При работе со сложным большим чертежом, используйте частичное открытие файла.
8. Используйте ссылки на другие чертежи.
9. И еще одно наблюдение, из моего личного опыта, сравнив 2002, 2004, 2005, 2006 и 2007 автокады, самый маленький размер одного и того же файла дал 2005.
__________________
«Артиллерия не токмо грохот, но и наука!» Пётр I
T-Yoke вне форума  
 
Непрочитано 26.01.2007, 08:52
#10
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,848


Цитата:
Сообщение от Чигинский Дмитрий
Purge обычно помогает.
Есть вариант немного более продвинутого кода:
Код:
[Выделить все]
^C^C(defun c:mypurge() (repeat 3 (vla-purgeall (vla-get-activedocument (vlax-get-acad-object)))) (command "_.-purge" "_r" "" "_n") (vla-AuditInfo (vla-get-ActiveDocument (vlax-get-acad-object))));mypurge;
Вместе с очисткой файла от мусора выполнит очистку от зарегистрированных приложений и проверит файл на предмет ошибок.
P.S. очистка от зарегистрированных приложений будет работать на версиях не ниже 2005. Возможно, будет работать в 2004, но проверить не могу.
===
Добавлено:
Если надо, можно попробовать написать лиспик по "разбивке" блоков, имеющих только одно вхождение. Надо?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 26.01.2007, 09:04
#11
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,992


Еще бывает _-wblok <файл> * уменьшает размер файла
VVA вне форума  
 
Непрочитано 26.01.2007, 09:57
#12
Огурец

Profan
 
Регистрация: 27.04.2005
Москва
Сообщений: 6,754
Отправить сообщение для Огурец с помощью Skype™


Цитата:
Сообщение от Zark
Цитата:
Сообщение от Огурец
Масса дублирующих линий, находящихся в 0,0001 мм друг от друга и т.п. В некоторых случаях экспрессовские команды работали по пол-часа.
А OVERKILL не пробовали использовать? Правда, он не во всех акадах есть, как мне кажется в 2007 есть, а в 2002 на работе такое комманды не нашлось.
Естественно, я же написал, что работал экспрессовскими командами. Дольше и хуже всех работает FLATTEN. Чертёж был после проклятого архикада, да будут несчастливы его создатели.
Огурец вне форума  
 
Непрочитано 26.01.2007, 10:49
#13
Добрый вечер


 
Регистрация: 09.11.2006
Москва
Сообщений: 15


Я обычно, после всех purge и т.д., выделяю все примитивы, копировать. Создаю новый файл и вставить. И всё.
__________________
Много не ПЕЙ!
Добрый вечер вне форума  
 
Непрочитано 26.01.2007, 10:55
#14
Огурец

Profan
 
Регистрация: 27.04.2005
Москва
Сообщений: 6,754
Отправить сообщение для Огурец с помощью Skype™


Цитата:
Сообщение от Добрый вечер
Я обычно, после всех purge и т.д., выделяю все примитивы, копировать. Создаю новый файл и вставить. И всё.
Мудро и правильно! И я так буду делать, в конечном счёте это будет быстрее.
Огурец вне форума  
 
Непрочитано 26.01.2007, 18:04
#15
Чигинский Дмитрий

ГИП
 
Регистрация: 09.09.2006
Тула
Сообщений: 112
<phrase 1= Отправить сообщение для Чигинский Дмитрий с помощью Yahoo Отправить сообщение для Чигинский Дмитрий с помощью Skype™


Цитата:
Сообщение от Кулик Алексей aka kpblc
Если надо, можно попробовать написать лиспик по "разбивке" блоков, имеющих только одно вхождение. Надо?
Да, надо.
__________________
С уважением, Чигинский Дмитрий.
Чигинский Дмитрий вне форума  
 
Автор темы   Непрочитано 26.01.2007, 18:54
#16
sheinik

проектант
 
Регистрация: 02.01.2007
Запад МО
Сообщений: 152


Цитата:
Сообщение от Добрый вечер
Я обычно, после всех purge и т.д., выделяю все примитивы, копировать. Создаю новый файл и вставить. И всё.
После того как выделяю и копирую в буфер все виснет..., а что такое экспрессовские команды?
sheinik вне форума  
 
Непрочитано 29.01.2007, 09:37
#17
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,848


Лиспик по очистке "одиночного вхождения", наваял на ходу практически. Поэтому логику качественно продумать не смог
В общем так: разбиваются блоки независимо от состояния слоев и пространства (модели или листа), в которых блок существует. Не трогает внешних ссылок. Значения атрибутов не сохраняются. Если блок "1" входит в блок "2", который имеет всего одно вхождение, то 1 проход лиспа удалит только блок "2", не трогая "1". Выполняется автоматическая очистка файла от мусора.
Особо не тестировал, так, на паре-тройке условий прогнал - вроде пашет.
Код:
[Выделить все]
(defun c:exp1blk (/                          *kpblc-activedoc*
                  _kpblc-layer-status-restore
                  _kpblc-error-catch         _kpblc-error-sysvar-restore
                  _kpblc-error-sysvar-save   _kpblc-sysvar-set
                  repeat_exploding           selset
                  *error*
                  )

;;; Локальные функции

  (defun *error* (msg)
    (_kpblc-error-sysvar-restore nil)
    (vla-endundomark (vla-get-activedocument (vlax-get-acad-object)))
    (princ msg)
    (princ)
    ) ;_ end of defun

  (defun _kpblc-sysvar-set (sysvar value)
    (if (getvar sysvar)
      (if (and (= value "")
               (wcmatch (strcase sysvar t) "dim*")
               ) ;_ end of and
        (setvar sysvar ".")
        (vl-catch-all-apply 'setvar (list sysvar value))
        ) ;_ end of if
      ) ;_ end of if
    (getvar sysvar)
    ) ;_ end of defun

  (defun _kpblc-error-sysvar-save (lst)
    (foreach sysvar lst
      (setq *kpblc-list-sysvar*
             (append (list (list (car sysvar) (getvar (car sysvar))))
                     *kpblc-list-sysvar*
                     ) ;_ end of append
            ) ;_ end of setq
      (if (cdr sysvar)
        (_kpblc-sysvar-set (car sysvar) (cadr sysvar))
        ) ;_ end of if
      ) ;_ end of foreach
    (princ)
    ) ;_ end of defun

   (defun _kpblc-error-sysvar-restore (lst)
    (if lst
      (foreach sysvar lst
        (_kpblc-sysvar-set sysvar (car (assoc sysvar *kpblc-list-sysvar*)))
        ) ;_ end of foreach
      (progn
        (foreach sysvar *kpblc-list-sysvar*
          (_kpblc-sysvar-set (car sysvar) (cadr sysvar))
          ) ;_ end of foreach
        (setq *kpblc-list-sysvar* nil)
        ) ;_ end of progn
      ) ;_ end of if
    ) ;_ end of defun

  (defun _kpblc-error-catch (protected-function
                             on-error-function
                             /
                             catch_error_result
                             )
    (setq catch_error_result (vl-catch-all-apply protected-function))
    (if (and (vl-catch-all-error-p catch_error_result)
             on-error-function
             ) ;_ end of and
      (apply on-error-function
             (list (vl-catch-all-error-message catch_error_result))
             ) ;_ end of apply
      catch_error_result
      ) ;_ end of if
    ) ;_ end of defun

 (defun _kpblc-layer-status-restore (/ item)
    (if *kpblc-list-layer-status*
      (progn
        (foreach item *kpblc-list-layer-status*
          (_kpblc-error-catch
            '(lambda ()
               (vla-put-freeze (car item) (cdr (assoc "freeze" (cdr item))))
               ) ;_ end of LAMBDA
            nil
            ) ;_ end of _kpblc-error-catch
          (_kpblc-error-catch
            '(lambda ()
               (vla-put-lock (car item) (cdr (assoc "lock" (cdr item))))
               ) ;_ end of LAMBDA
            nil
            ) ;_ end of _kpblc-error-catch
          ) ;_ end of foreach
        ) ;_ end of progn
      ) ;_ end of if
    (setq *kpblc-list-layer-status* nil)
    ) ;_ end of defun

  (defun _kpblc-layer-status-save (layers-on / item)
    (vlax-for item (vla-get-layers *kpblc-activedoc*)
      (setq *kpblc-list-layer-status*
             (append *kpblc-list-layer-status*
                     (list
                       (list item
                             (cons "freeze" (vla-get-freeze item))
                             (cons "lock" (vla-get-lock item))
                             ) ;_ end of list
                       ) ;_ end of list
                     ) ;_ end of append
            ) ;_ end of setq
      (if layers-on
        (progn
          (_kpblc-error-catch
            '(lambda ()
               (vla-put-freeze item :vlax-false)
               ) ;_ end of lambda
            nil
            ) ;_ end of _kpblc-error-catch
          (vla-put-lock item :vlax-false)
          ) ;_ end of progn
        ) ;_ end of if
      ) ;_ end of vlax-for
    ) ;_ end of defun

  (vl-load-com)
  (if (setq repeat_exploding
             (_kpblc-error-catch
               '(lambda ()
                  (cond
                    ((getint "\nСколько делать проходов? <1> : "))
                    (t 1)
                    ) ;_ end of cond
                  ) ;_ end of lambda
               nil
               ) ;_ end of _kpblc-error-catch
            ) ;_ end of setq
    (progn
      (vla-startundomark
        (setq *kpblc-activedoc* (vla-get-activedocument (vlax-get-acad-object)))
        ) ;_ end of vla-startundomark
      (_kpblc-error-sysvar-save '(("explmode" 1) ("cmdecho" 0)))
      (repeat repeat_exploding
        (vla-purgeall *kpblc-activedoc*)
        (vlax-for blkdef (vla-get-blocks *kpblc-activedoc*)
          (if (and (not (wcmatch (strcase (vla-get-name blkdef) t) "*_space*"))
                   (equal (vla-get-isxref blkdef) :vlax-false)
                   (setq selset
                          (ssget
                            "_X"
                            (list (cons 0 "INSERT") (cons 2 (vla-get-name blkdef)))
                            ) ;_ end of ssget
                         ) ;_ end of setq
                   (<= (sslength selset) 1)
                   ) ;_ end of and
            (_kpblc-error-catch
              '(lambda ()
                 (foreach blk (mapcar 'vlax-ename->vla-object
                                      (vl-remove-if
                                        'listp
                                        (mapcar 'cadr (ssnamex selset))
                                        ) ;_ end of vl-remove-if
                                      ) ;_ end of mapcar
                   (vla-explode blk)
                   (vla-erase blk)
                   ) ;_ end of foreach
                 ) ;_ end of lambda
              nil
              ) ;_ end of _kpblc-error-catch
            ) ;_ end of if
          ) ;_ end of vlax-for
        ) ;_ end of repeat
      (repeat 2 (vla-purgeall *kpblc-activedoc*))
      (_kpblc-error-sysvar-restore nil)
      (vla-endundomark *kpblc-activedoc*)
      ) ;_ end of progn
    ) ;_ end of if
  (princ)
  ) ;_ end of defun
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 18.06.2007, 07:27
#18
bleaker


 
Регистрация: 15.03.2007
Кемерово
Сообщений: 5
<phrase 1=


Всем привет.
Столкнулся с такой проблемой. Коллеги иностранцы прислали автокадовский рисунок. Размер ни много ни мало 35 мегабайт. Компьютер особой производительностью не блещет, а по современным меркам так вообще слабоват, соответственно сильно тормозит все. Провел эксперимент: удалил все линии с чертежа, т.е оставил чистый лист, далее сохранить как... в итоге общий размер практически не изменился... осталось также порядка 34 мегабайт.
Так вот у меня возникает вопрос, как у человека не очень разбирающегося в Автокаде.... что там такого есть, что бы занимало столько места... и как это можно почистить (наверно файлы настройки... или что то в этом духе?).
bleaker вне форума  
 
Непрочитано 18.06.2007, 08:14
#19
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,848


Там, скорее всего, мусора немеряно. Без удаления примитивов даешь команду _purge и жмешь "Purge all".
Зайти в менеджер слоев и посносить все фильтры слоев
Дать команду _-purge (именно так, с "-" впереди), Enter, _r, Enter, Enter, _n - очистишь зарегистрированные приложения. Если не получится, выложи файлик на webfile.ru, например, а здесь - ссылку
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 18.06.2007, 12:41
#20
bleaker


 
Регистрация: 15.03.2007
Кемерово
Сообщений: 5
<phrase 1=


Цитата:
Сообщение от Кулик Алексей aka kpblc
Там, скорее всего, мусора немеряно. Без удаления примитивов даешь команду _purge и жмешь "Purge all".
Зайти в менеджер слоев и посносить все фильтры слоев
Дать команду _-purge (именно так, с "-" впереди), Enter, _r, Enter, Enter, _n - очистишь зарегистрированные приложения. Если не получится, выложи файлик на webfile.ru, например, а здесь - ссылку
Сделал все по этому алгоритму, размер не изменился
Выложил файл сюда: http://www.rapidshare.ru/318161
bleaker вне форума  
Закрытая тема
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Уменьшить размер файла DWG

Размещение рекламы