Архитектору и проектировщику|Тепло- и звукоизоляция URSA.RU
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

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

Помогите уменьшить размер файла DWG

Ответ
Поиск в этой теме
Непрочитано 04.06.2008, 19:23 1 |
Помогите уменьшить размер файла DWG
AndroiD
 
Урал
Регистрация: 06.01.2008
Сообщений: 144

Перед тем, как просить уменьшить объем файла, внимательно прочитайте FAQ: Как уменьшить объем файла dwg

Имеется некоторый файл созданный в AutoCad 2006, размер которого раздулся до 89 Мб. Файл - 2D чертеж с 14 типами динамических блоков (11 блоков содержат в среднем 15 примитивов, 3 блока 50 примитивов), блоки только объединяют примитивы, имеется вставленный растр размером 30 Мб, кроме этого чертеж содержит около 2000 объектов.
С файлом такого дикого размера невозможно работать: дикие тормоза, из пространства модели в пространства листа иногда нельзя перейти - выскакивает ошибка, программа закрывается.

История файла следущая.
До определенного момента времени работа с файлом не представляла трудностей, но после того как количество дин блоков достигло 200 штук (1блок откопированный до 200 раз) комп начал туго соображать, размер файла к этому моменту составлял порядка 1.5 Мб (вроде бы). Я принял решение разбить эти блоки.... Разбил... и видимо в следствии этого файл распух до дикого размера.

Вопрос: как уменьшить размер растолстевшего фала ничего в нем не удаляя.

Мой комп: Атлон64 3800, 2 Гб оперативы, количество свободного места на диске где установлен АКад 6 Гб, на диске котором располагается файл 4Гб.

ПС: команда purge показывает, что неиспользуемых элементов нет.

Последний раз редактировалось Кулик Алексей aka kpblc, 22.10.2018 в 11:42.
Просмотров: 458938
 
Непрочитано 19.09.2019, 22:38
| 1 #1721
trir


 
Регистрация: 18.12.2010
Сообщений: 3,460


О, это отдельная, очень богатая тема...
trir вне форума  
 
Непрочитано 19.09.2019, 22:45
#1722
Кулик Алексей aka kpblc
Moderator

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


Тогда добро пожаловать в отдельную, собственноручно созданную тему
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 20.09.2019, 10:07
#1723
Dima12345


 
Регистрация: 19.09.2019
Сообщений: 7


Если по существу вопроса, то проблема решилась с помощью команды _imageattach
Изображение отлично прикрепляется (а не внедряется в проект), после закрытия и открытия файла не пропадает, размер файла остается почти тем же независимо от веса изображения.
Огромное спасибо за мысли и подсказки!

----- добавлено через ~1 мин. -----
Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Тогда добро пожаловать в отдельную, собственноручно созданную тему
Тема действительно интересная, поддерживаю!
Dima12345 вне форума  
 
Непрочитано 20.09.2019, 10:26
1 | #1724
trir


 
Регистрация: 18.12.2010
Сообщений: 3,460


Ну так сделай новую тему, если у администратора нет возможности выделить эти сообщения в отдельную тему

Цитата:
Панорама, сшитая из множества скриншотов с максимальным увеличением.
Есть такая программа - SAS.Planet, там это делается одной кнопкой и сразу с привязкой
trir вне форума  
 
Непрочитано 09.10.2019, 15:40
#1725
est d'or


 
Регистрация: 09.10.2019
Сообщений: 1


ПРивет, Форум!
Столкнулся с нерешаемым малой кровью вопросом.
Получил на обработку пачку толстых чертежей, ВО шкафов телекоммуникаций, стойки на 19".
Объекты чертежа завернуты в блок, аки смерть Кощеева. Многие объекты получили взаимные зависимости припятсвующие удалинию через _purge. _wblock каждого такого блока на выходе чертежи 1-5 мб, в которых нет ничего подозрительного (на мой взгляд, demandload=2). Повторный _wblock превращает 1-5 мБ в 50-200 кБ.
Я не могу понять, что внутри этих блоков. От того единственно решение которое я пока вижу - это писать код который сделает _wblock каждому блоку, причем по несколько раз, а после восстановит чертеж. Может вы сталкивались с этим?
В приложении пример, заглушка в шкаф, после _wblock первого прохода. _audit видит около 40000 объектов, но я их не вижу
Вложения
Тип файла: dwg
DWG 2010
RackEmpty_1.dwg (1.46 Мб, 13 просмотров)
est d'or вне форума  
 
Непрочитано 10.10.2019, 09:16
#1726
Leopard_

Нефтепереработка
 
Регистрация: 21.01.2010
Украина, Киев.
Сообщений: 304


Реально - объекты невидимки... Тут мысли у меня остановились. Думаем пока коллегиально.
Видимое перенес в слой 0. быстрый выбор
1) слой "Стойка" - Выбрано объектов: 41813
2) слой "Надпись" - Выбрано объектов: 10
После удаления 125 КБ (изначально 1,45 МБ, в формате 2010 пересохранило 1,514 МБ).
Обработано в 2013 акаде.

З.Ы. Коллегия ничего не придумала. Придумаете как найти невидимок (и что это вообще такое) пишите.
__________________
У фантазии нет границ. Это у ограниченных нету фантазии.

Последний раз редактировалось Leopard_, 10.10.2019 в 09:34.
Leopard_ вне форума  
 
Непрочитано 10.10.2019, 10:54
#1727
AMDen

Инженер-проектировщик
 
Регистрация: 07.07.2016
Санкт-Петербург
Сообщений: 380


Цитата:
Сообщение от est d'or Посмотреть сообщение
_audit видит около 40000 объектов, но я их не вижу
Скорее всего это глюк при взрыве блоков с большим количеством видимостей. Я с таким сталкивался, и на форуме где-то писали.
Как это вылечить, не помню, нашли ли решение. Но увидеть "невидимки" можно. Скопируйте всё и вставьте как блок. Внутри блока поставьте параметр видимости и включите отображение скрытых элементов.
AMDen вне форума  
 
Непрочитано 10.10.2019, 12:19
| 1 #1728
esp22


 
Регистрация: 12.07.2012
Сообщений: 23


Цитата:
Сообщение от est d'or Посмотреть сообщение
В приложении пример, заглушка в шкаф, после _wblock первого прохода. _audit видит около 40000 объектов, но я их не вижу
Вот сделал видимыми элементы.

Делал лиспом(в BricsCAD):
Код:
[Выделить все]
 (defun c:am2 (/ tag ss sel)
  (vl-load-com)
  (setq tag "TAG1") ;; <<-- Tag to be Searched
  (and (setq ss (ssget "_X" ))
       (vlax-for Obj (setq sel (vla-get-ActiveSelectionSet
                                 (vla-get-ActiveDocument (vlax-get-acad-object))))
           (vla-put-visible Obj :vlax-true)
  
          ))
       (vla-delete sel)
 (princ))
Вложения
Тип файла: dwg
DWG 2010
RackEmpty_Visible.dwg (1.44 Мб, 5 просмотров)
esp22 вне форума  
 
Непрочитано 10.10.2019, 12:38
1 | #1729
Кулик Алексей aka kpblc
Moderator

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


Я попробовал очистить от невидимых элементов таким кодом:
Код:
[Выделить все]
 (vl-load-com)

(defun t1 (/ adoc layers)
  (vla-startundomark (setq adoc (vla-get-activedocument (vlax-get-acad-object))))
  (vlax-for item (vla-get-layers adoc)
    (setq layers (cons (list item
                             (mapcar (function (lambda (pr / tmp)
                                                 (setq tmp (vlax-get-property item pr))
                                                 (vl-catch-all-apply (function (lambda () (vlax-put-property item pt :vlax-false))))
                                                 (cons pr tmp)
                                                 ) ;_ end of LAMBDA
                                               ) ;_ end of function
                                     '("freeze" "lock")
                                     ) ;_ end of mapcar
                             ) ;_ end of list
                       layers
                       ) ;_ end of cons
          ) ;_ end of setq
    ) ;_ end of vlax-for
  (vlax-for blk_def (vla-get-blocks adoc)
    (vlax-for ent blk_def
      (if (equal (vla-get-visible ent) :vlax-false)
        (vla-erase ent)
        ) ;_ end of if
      ) ;_ end of vlax-for
    ) ;_ end of vlax-for
  (foreach item layers
    (foreach pr (cdr item)
      (vl-catch-all-apply (function (lambda () (vlax-put-property item (car pr) (cdr pr)))))
      ) ;_ end of foreach
    ) ;_ end of foreach
  (vla-auditinfo adoc :vlax-true)
  (repeat 3 (vla-purgeall adoc))
  (vla-endundomark adoc)
  (princ)
  ) ;_ end of defun
На выходе примерно 75 кб файлик получается.
Другой вопрос, что с дин.блоками с несколькими состояниями видимости могут быть проблемы - но в данном случае это не особо критично, мне кажется.
P.S. Самое забавное, что _unisolateobjects ничего не видит )))
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 10.10.2019, 12:44
#1730
doctorraz

электрик
 
Регистрация: 19.02.2010
Волгоград
Сообщений: 1,544
Отправить сообщение для doctorraz с помощью Skype™


Цитата:
Сообщение от AMDen Посмотреть сообщение
Скорее всего это глюк при взрыве блоков с большим количеством видимостей. Я с таким сталкивался, и на форуме где-то писали.
похоже на то
new block.dwg
вставил "больной" файл блоком в пустой чертеж, в редакторе блоков добавил видимость и включил все объекты, потом блок взорвал
---------------------------------
но думаю в данном случае то, что "лишние" объекты невидимы и условно невыбираемы нам на руку.
чистить просто, но придется руками
  1. Ctrl+A (АК пишет ничего не выбрано... брешет)
  2. Рамкой с зажатым shift выбираем, что должно остаться в чертеже (выделение с нужного должно сняться, в АК по прежнему " ничего не выбрано")
  3. Жмем Del
  4. АК пишет "_.erase найдено: 41855"
  5. purge save
  6. Профит
__________________
Мастерская СПДС
doctorraz вне форума  
 
Непрочитано 10.10.2019, 12:58
#1731
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,274
Отправить сообщение для Александр Ривилис с помощью Skype™


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
P.S. Самое забавное, что _unisolateobjects ничего не видит )))
И не должно. ISOLATEOBJECTS/UNISOLATEOBJECTS работают по другому принципу. Они работают с объектом, который содержит информацию о скрываемых примитивах. Но сами примитивы не знают, что они невидимы. В данном же случае сами примитивы имеют признак невидимости. И это действительно похоже на связь с динамическими блоками с видимостью. Динамические блоки в состоянии определенной видимости содержат все примитивы динамического блока (даже те которые не должны быть видны), но те, которые не видны в этом состоянии видимости, имеют флаг невидимости (visible == false).
Александр Ривилис вне форума  
 
Непрочитано 10.10.2019, 13:06
#1732
Кулик Алексей aka kpblc
Moderator

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


Я полагал, что команды изоляции / снятия изоляции объектов как раз и работают со свойством видимости. Значит, я ошибался
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 10.10.2019, 13:08
#1733
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,274
Отправить сообщение для Александр Ривилис с помощью Skype™


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Я полагал, что команды изоляции / снятия изоляции объектов как раз и работают со свойством видимости. Значит, я ошибался
Ага. Здесь мы обсуждали подробности: https://adn-cis.org/forum/index.php?topic=7415.0
Александр Ривилис вне форума  
 
Непрочитано 10.10.2019, 21:27
#1734
frostmourn


 
Регистрация: 23.04.2015
Сообщений: 153


Цитата:
Сообщение от doctorraz Посмотреть сообщение
(АК пишет ничего не выбрано... )
Где пишет? В свойствах? Так и должно быть.
frostmourn на форуме  
 
Непрочитано 10.10.2019, 21:42
#1735
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 6,992


Цитата:
Сообщение от frostmourn Посмотреть сообщение
Где пишет? В свойствах? Так и должно быть.
если поставить значение переменной PROPOBJLIMIT = 0, то покажет)
Сергей812 вне форума  
 
Непрочитано 10.10.2019, 22:07
#1736
doctorraz

электрик
 
Регистрация: 19.02.2010
Волгоград
Сообщений: 1,544
Отправить сообщение для doctorraz с помощью Skype™


Цитата:
Сообщение от frostmourn Посмотреть сообщение
Так и должно быть.
Не принципиально, отметил этот момент лишь для того чтобы вопрошающий был готов и не остановился на полпути к цели

----- добавлено через ~1 мин. -----
Цитата:
Сообщение от Сергей812 Посмотреть сообщение
если поставить значение переменной PROPOBJLIMIT = 0, то покажет)
Шоб тормозил?
__________________
Мастерская СПДС
doctorraz вне форума  
 
Непрочитано 10.10.2019, 23:10
#1737
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 6,992


Цитата:
Сообщение от doctorraz Посмотреть сообщение
Шоб тормозил?
что мешает вернуть потом обратно значение после очистки? А так с тормозами, но покажет в свойствах количество и состав выделенных примитивов.
Сергей812 вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Помогите уменьшить размер файла DWG

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Большой размер файла, как от этого избавиться? Pac AutoCAD 51 10.12.2015 14:09
Не хватает файла adlmint.dll Помогите!!! t0rped0 AutoCAD 4 06.05.2010 10:54
Как по координатам из метода GetBoundingBox уменьшить размер disintegrator Программирование 8 26.10.2005 23:35
Размер файлов .dwg СВС AutoCAD 5 14.04.2005 11:15
Размер файла dwg alex-alex Прочее. Архитектура и строительство 5 10.09.2004 00:28