Автокад как удалить невидимые объекты
У меня такая проблема:
иногда приходят чертежи с очень большим объемом, хотя чисто визуально содержат несколько десятков отрезков. команда purge в таких случаях не помогает, чертеж уменьшается лишь незначительно. анализируя чертеж, вижу, что есть слои на которых якобы ничего и нет. но используя фильтр, вижу, что на определенном слое находится море невидимых объектов. если эти объекты являются пустыми строками, то как с этим бороться я уже прочла на этой конференции. а вот если эти объекты блоки, имиджы и т.д. как их программно отловить и удалить. от всего этого конечно можно избавиться, копируя все видимое в буфер и вставить в новый чертеж, но это требует дополнительных действий, а хотелось бы сделать так, чтобы по нажатию одной кнопки чертеж очистился от невидимых объектов.
и еще
в одном из таких рисунков есть
User External Dependent Unnamed
Blocks References Blocks Blocks
10 0 0 3390
среди User блоков есть видимые и невидимые
а Unnamed блоки не выбирает даже фильтр.
можно ли от них избавиться программно?
Мне не очень понятно, что такое невидимый блок.
Пусть специалисты прокомментируют такую идею по очистке чертежа от мусора. Повторю это только идея, а не готовое решение.
(setq ct 0)
(repeat (sslength all_visibl)
(entmake (nth ct lst))
(setq ct (1+ ct))
)
невидимый - он присутствует в рисунке, но я его не вижу. и только когда с помощью фильтра задаю найти блок по имени (которое отображается в списке блоков), все блоки с таким именем подсвечиваются точкой. а если просто применить скажем команду сотри и выбрать рамкой в том же месте, то ничего не выбирается.
и еще можно ли удалить анонимные блоки? есть чертежи, которые проектировщики создавали на основе каких- то и это продолжается на протяжении нескольких лет. отсюда и многомегабайтные чертежи, которые содержат всего несколько линий, а в памяти чертежа по 5000 анонимных блоков.
запустила вашу программу на одном из проблемных чертеже. результат - неиспользуемые слои, блоки, стили, анонимные блоки удалились, а вместе с ними и часть текста
Неиспользуемые анонимные блоки должны удаляться автоматически при следующем открытии чертежа, по крайней мере так говорится в хелпе и работает на 2002. Если они остаются, то вероятнее всего где-то используются.
А вобще-то заниматься разборкой 5000 объектов когда используется реально несколько десятков или сотен - дело неблагодарное. Проще скопировать что надо (имхо, конечно).
To nelka. Попробуй вот это. Гарантий никаких не даю.
При этом ещё учитывай что все блоки в чертеже будут разбиты
и размер файла если в чертеже много больших блоков (используемых) может даже увеличиться.
(Прошу спецов сильно не ругаться глядя на эту гадость, слепил на скорую руку не сильно задумываясь, да и думать особо нечем)
(defun unlock_layer (/ NAMLAY splay)
(setq namlay (tblnext "layer" t))
(while namlay
(setq
splay (entget (tblobjname "layer" (cdr (assoc 2 namlay))))
) ;_ конец setq
(if (= (logand (cdr (assoc 70 splay)) 4) 4)
(entmod (subst (cons 70 (- (cdr (assoc 70 splay)) 4))
(assoc 70 splay)
splay
) ;_ конец subst
) ;_ конец entmod
) ;_ конец if
(setq namlay (tblnext "layer"))
) ;_ конец while
) ;_ конец defun
(defun on_unfreeze_layer (/ NAMLAY splay)
(setq namlay (tblnext "layer" t))
(while namlay
(setq
splay (entget (tblobjname "layer" (cdr (assoc 2 namlay))))
) ;_ конец setq
(if (< (cdr (assoc 62 splay)) 0)
(setq splay (entmod (subst (cons 62 (- (cdr (assoc 62 splay))))
(assoc 62 splay)
splay
) ;_ конец subst
) ;_ конец entmod
) ;_ конец setq
) ;_ конец if
(if (= (logand (cdr (assoc 70 splay)) 1) 1)
(entmod (subst (cons 70 (- (cdr (assoc 70 splay)) 1))
(assoc 70 splay)
splay
) ;_ конец subst
) ;_ конец entmod
) ;_ конец if
(setq namlay (tblnext "layer"))
) ;_ конец while
(vl-cmdf "_.regen")
) ;_ конец defun
Часто возникают ситуации, когда необходимо в AutoCAD удалить ненужный слой. Как удалить неиспользуемые слои в Автокаде - рассмотрим далее.
Конечно, можно просто сделать слой невидимым. Он не будет отображаться и печататься, однако будет храниться в файле чертежа. При этом размер файла будет увеличен. Поэтому оптимально слой в AutoCAD не отключать, а удалять.
Чтобы удалить слой в AutoCAD, выделите его в диалоговом окне "Диспетчер свойств слоёв" и нажмите на кнопку "Удалить".
По окончании закройте Диспетчер и убедитесь, что слой удален.
Также удалить слои можно через команду "Очистить" (она же _PURGE).
Причины, по которым не удаляется слой в Автокаде
Существуют причины, по которым не удается удалить слой AutoCAD:
1) Слой содержит графические элементы чертежа, т.е. объекты.
2) Вы пытаетесь удалить нулевой слой "0" или слой Defpoints (узнать, что это за слои).
3) Слой является текущим.
4) Ранее на этом слое были созданы блоки, т.е. он содержит описание блока. Хотя самого блока уже может и не быть на чертеже (ознакомьтесь со статьей про взаимосвязь блоков и слоев в Автокаде, чтобы не допускать ошибок!).
5) Слой содержит внешние ссылки.
Как удалить ненужные слои на чертеже Автокад? Для этого воспользуйтесь последовательной инструкцией, описанной ниже.
Алгоритм удаления ненужного слоя
1) Убедитесь, что слой не текущий, размороженный и разблокированный.
2) Проверьте, чтобы на слое не было объектов. Это сделать очень просто: отключите все слои, затем нажмите Ctrl+A для выделения всех объектов текущего слоя и клавишу Delete. Рационально выполнить команду _LAYDEL (она же СЛОЙУДАЛ), которая позволяет не только удалить все объекты на слое, но и очистить его. Чтобы эта команда выполнилась корректно, слой, подлежащий очистке от объектов, не должен быть текущим.
3) Удалите все определения блоков, которые не используются на чертеже. Для этого выполните команду "Очистить" (читать, как удалить блоки в Автокаде).
4) Проверьте, не подключены ли к чертежу какие-нибудь файлы, внешние ссылки-референсы (xref, картинки и т.д.).
5) Повторите вышеописанную процедуру удаления слоя через Диспетчер свойств слоев или команду ОЧИСТИТЬ.
Можно также попробовать сохранить файл в формате *.dxf, а потом обратно dwg. Иногда это помогает автоматически избавиться от "мусора".
Если ничего не помогло, можно просто создать новый файл с нужными слоями и затем скопировать туда графические элементы чертежа из "загрязненных" файлов.
Советую ознакомиться с видеоуроком, который позволит вам в несколько раз увеличить эффективность работы в программе AutoCAD. Вы узнаете, как можно удалять все элементы, которые не присутствуют в графическом пространстве, но при этом загружают файл (смотреть урок "Создание команд и макросов в Автокад на примере команды ОЧИСТИТЬ").
Как удалить слой в Автокаде, содержащий объекты?
Можно ли в Автокад удалить слой вместе с объектами? Ведь на удаление каких-либо ненужных элементов может уйти много времени. К сожалению, удалить слой Автокад с объектами нельзя! Поэтому внимательно посмотрите, как почистить слои в Автокаде в вышеописанном алгоритме. Особое внимание обратите на п.2 и команду _LAYDEL (она же СЛОЙУДАЛ).
Работа с блоками в AutoCAD дает определенные преимущества (читайте статью «Особенности использования блоков в Автокаде»). После создания чертежа часто остаются «лишние» блоки, которые не используются в проекте. Это существенно влияет на размер файла. Рассмотрим, как удалять ненужные блоки, чтобы не возникало путаницы, а сам файл весил меньше.
Рис. 1. Блоки в Автокаде не все используются в проекте.
Как в Автокаде удалить блок?
Вхождение блока на чертеже удаляется стандартным способом: можно выделить блок и нажать Delete или же применить команду СТЕРЕТЬ. При таком действии само определение блока остается в файле, и соответственно, в списке блоков.
К сожалению, Редактор блоков Автокад в этом не поможет.
Для того чтобы избавиться от ненужных блоков в AutoCAD, следует использовать команду «ОЧИСТИТЬ». Для корректного выполнения этой команды убедитесь, чтобы в графическом пространстве не было вхождений блоков.
Удаление блоков в AutoCAD происходит в несколько этапов:
- сначала нужно предварительно удалить блоки с чертежа;
- затем - зайти в меню-приложения (буква «А» в левом верхнем углу), выбрать «Утилиты» → «Очистить». Альтернативный вариант – воспользоваться командной строкой.
Рис. 2. Удаление блоков AutoCAD - команда «Очистить».
В диалоговом окне «Очистка чертежа» отображается дерево всех именованных объектов, которые можно удалить.
Рис. 3. Диалоговое окно AutoCAD «Очистка чертежа».
Чтобы очистить весь чертеж от неиспользуемых блоков, выберите раздел «БЛОКИ».
Подключая опцию «Удаление вложенных элементов», можно включить вложенные блоки в список для удаления.
Если требуется удалить только лишь некоторые объекты, дважды щелкните ЛКМ по элементу «БЛОКИ». Раскроется список блоков, в котором следует выбрать элементы для удаления. (см. рис. 4).
Рис. 4. Список блоков AutoCAD, которые можно удалить.
Возможна ситуация, когда некоторые блоки могут отсутствовать в списке. В таком случае поставьте галочку напротив «Посмотреть элементы, которые нельзя удалить».
Рис. 5. Просмотр всех существующих блоков в файле AutoCAD.
При удалении блоков из списка действие следует подтверждать. Эту опцию можно подавить, выключив запрос «Удаление элементов с подтверждением» (см. рис. 6).
Рис. 6. Удаление блока в Автокаде.
Нажмите «Удалить». Появится обновленный список имеющихся определений блоков в чертеже при выполнении команды «Вставка» (см. рис. 7).
Рис. 7. Удаление блоков AutoCAD приводит к обновлению списка при вставке объектов в чертеж.
К основным настройкам слоёв относятся следующие: вкл./выкл., заморозить/разморозить, блокировать, изолировать слой, управление видимостью объектов на слое (прозрачность).
Включение/отключение слоёв в Автокаде
Отключение слоёв в Автокаде приводит к тому, что на экране исчезают объекты того или иного слоя. Т.е. происходит временное их скрытие с рабочего пространства.
Вопрос: Как отключить слой в Автокаде?
Достаточно в Диспетчере слоёв нажать на "лампочку", как показано на рис. ниже. Изображение лампочки изменится (она будет выключена).
Вопрос: Как включить слой в Автокаде?
На панели слоёв нажать на символ "лампочки". Изображение включённой лампочки показывает, что слой включён и отображается на экране.
Вопрос: Как отключить все слои в Автокаде?
Для отключения слоёв служит команда "Откл" (она же СЛОЙОТКЛ), которая позволяет отключить слой выбранного объекта. Для быстрого выбора всех элементов чертежа можно воспользоваться сочетанием клавиш Ctrl+A.
Более удобный способ - использовать групповую операцию через фильтр (читать подробнее про фильтры слоев в Автокаде ). Для этого достаточно перейти в Диспетчер свойств слоёв, слева выделить фильтр "Все используемые слои", который есть в каждом чертеже по умолчанию. Далее нажать ПКМ → Видимость → Откл.
Вопрос: Как включить все слои в Автокаде?
Чтобы включить все слои на чертеже, можно воспользоваться командой "Включить все слои" (она же СЛОЙВКЛ). Можно применить вышеописанный способ через групповую работу над слоями, используя фильтр по умолчанию.
Удобно включать/отключать слои в Автокаде, когда на чертеже много объектов, которые загромождают общую картину. Важно помнить, что эта команда всего лишь делает невидимыми объекты на чертеже, но при этом они по-прежнему присутствуют в графическом пространстве.
Если отключить слой и нажать Ctrl+A для выделения всех объектов, автоматически выделятся элементы на отключённых слоях. Это может привести к их случайному удалению или ненужному перемещению. Поэтому на практике лучше пользоваться именно заморозкой слоёв.
Заморозка/разморозка слоев AutoCAD
Заморозка слоя - действие аналогичное выкл./вкл. слоя. Объекты исчезают с экрана, однако при этом они полностью убираются из рабочего пространства. При разморозке слоя выполняется регенерация чертежа (его перерисовка), а значит, все элементы будут более адекватно и правильно отображаться на чертеже.
Вопрос: Как заморозить слой в Автокаде?
Чтобы выполнить заморозку слоя, на панели "Слои" нажмите на знак "солнца".
Вопрос: Как разморозить слой в Автокаде?
Чтобы выполнить разморозку, достаточно нажать на знак "снежинки" на панели слоёв.
Заморозить все слои одновременно можно через групповую операцию над стандартным фильтром слоёв (см. выше).
Блокировка слоя в Автокаде
В программе можно заблокировать слои. Команда создана для того, чтобы избежать случайных ненужных изменений. К блокированным слоям можно привязываться. При этом видно все элементы на чертеже и можно выполнять построения относительно них.
Вопрос: Как разблокировать слои в Автокаде?
За блокировку отвечает инструмент в виде "замка". Если замок открыт, то слой не заблокирован, в противном случае, действия над слоями будут запрещены.
Прозрачность слоёв в Автокаде
В Автокаде можно управлять видимостью объектов на слое, т.е. настраивать их прозрачность. Задавать этот параметр можно сразу в Диспетчере слоев. Значение прозрачности лежит в пределах от 0 до 90 ("0" - слой полностью непрозрачный).
Изолирование слоёв AutoCAD
Изолировать слой в Автокаде можно через команду СЛОЙОТД (она же "Изолировать" на панели слоёв). Она позволяет скрыть или заблокировать все слои, кроме тех, на которых выбраны объекты.
Почему Автокад не отображает слои, содержащие объекты?
Если не отображаются слои в Автокаде, то проверьте следующие настройки:
1) Этот слой может быть выключен или заморожен.
2) Слой не виден в Автокаде, потому что его цвет совпадает или максимально приближен к цвету рабочего пространства.
3) Слою присвоено слишком большое значение прозрачности.
4) На листе для слоя присвоено свойство "Заморозить на текущем видовом экране" (читать подробнее про заморозку слоев на Листах).
Не пугайтесь, если пропали слои в Автокаде. Возможно, это одна из вышеперечисленных ситуаций, по причине которой Автокад не видит слои.
Читайте также: