Редактирование блоков в Автокаде
Знать, как в AutoCAD создать блок, мало. Очень часто возникает необходимость внести изменения в блок, при этом не разрушая его целостность. Способов сделать это существует несколько.
Несколько способов, как редактировать блок в Автокаде:
1-й способ ( самый быстрый): если блок присутствует на чертеже, то нужно щелкнуть по нему дважды ЛКМ.
Рис. 1. Один из способов вызова редактора блоков в AutoCAD.
2-й способ — воспользоваться командой «Редактор блоков», которая находится на вкладке «Вставка» → панель «Определение блока» (см. рис. 2).
Рис. 2. Команда AutoCAD «Редактор блоков».
3-й способ , который так же считается рациональным – это воспользоваться командной строкой или динамическим вводом. Команда, отвечающая за редактирование, носит название БЛОКРЕД (см. рис. 3).
Рис. 3. Вызов Редактора блоков через динамический ввод.
Какой бы способ вы ни выбрали, результат будет один и тот же: откроется диалоговое окно, в котором необходимо выбрать блок для изменения. При этом предварительный просмотр помогает осуществить выбор быстрее (см. рис. 4).
Рис. 4. Диалоговое окно «Редактирование определения блока».
После этого откроется редактор блоков Автокад.
Редактор блоков в Автокаде
В AutoCAD редактор блоков – это дополнительная вкладка, которая появляется на ленте. Она предназначена непосредственно для изменения геометрии ранее созданного блока, присвоения ему параметров и операций, определяющих свойства и функции динамического изменения.
Рис. 5. Редактор блоков AutoCAD.
В редакторе блоков можно применять как команды рисования, так и редактирования. К примеру, команда «Масштаб» позволит изменить размер нашего объекта. Но для большей наглядности давайте добавим некоторые элементы к этому блоку, тем самым преобразуем конденсатор постоянной емкости в конденсатор электролитический поляризованный (ГОСТ 2.728-74). Для этого перейдем на вкладку «Главная» и воспользуемся стандартными примитивами.
Когда все изменения внесены, следует закрыть редактор блоков, как показано на рис. 6.
Рис. 6. Команда «Закрыть редактор блоков» AutoCAD.
Появится диалоговое окно, в котором следует подтвердить внесенные изменения.
Рис. 7. Сохранение внесенных изменений в блок AutoCAD.
Как видите, в названии блока допущена ошибка. Самое время рассмотреть, как переименовать блок AutoCAD.
Как переименовать в Автокаде блок?
Имя блока не только должно быть уникальным, но и отображать суть создаваемого элемента чертежа. Если вы хотите работать быстро и извлекать максимальную пользу из AutoCAD, то возьмите это на заметку.
Если вы изначально будете создавать блоки с нечитабельными именами (к примеру, «123»), то в дальнейшем будут возникать определенные сложности. Ведь количество блоков постоянно увеличивается, и в результате просто возникнет путаница.
Чтобы изменить имя блока в Автокаде, нужно в командной строке прописать «_rename».
Рис. 8. Диалоговое окно «Переименование».
Откроется диалоговое окно для переименования объектов AutoCAD (см. рис. 9). Так как нас интересует такой тип объектов, как блок, то в левой стороне выбираем соответствующий раздел.
При этом справа отобразятся все блоки, которые присутствуют на чертеже. Выделим нужный элемент и укажем новое имя для него (см. рис. 9). Для сохранения настроек нужно нажать Ок.
Рис. 9. Изменение имени объектов AutoCAD.
Таким образом мы рассмотрели основные принципы редактирования блоков в Автокаде. Ознакомились с Редактором блоков, а также узнали, как переименовывать объекты.
ПРИМЕЧАНИЕ: Существует способ быстрого переименования целого набора блоков. Как это можно сделать, читайте в статье про создание собственной коллекции блоков в AutoCAD.
Освойте профессию проектировщика
Научитесь быстрому черчению, освоите прикладное 3D, автоматизируете создание ведомостей и спецификаций.
7.3.3. Редактирование вхождений блоков и внешних ссылок
Изучаемая версия системы AutoCAD предлагает еще один инструмент работы с блоками и внешними ссылками — редактирование внешних ссылок и описаний блоков через их вхождения в текущий рисунок. Такая операция затрагивает сложные связи внутри рисунка (для блоков) и связи с другими рисунками (для внешних ссылок), поэтому объем подобного редактирования не должен быть велик. В случае большого объема изменений лучше действовать обычными средствами: переопределить блок, который требует изменений, с помощью команды BLOCK (БЛОК), а вместо редактирования вхождения внешней ссылки открыть файл-источник ссылки, изменить его, а затем обновить ссылки на этот файл в основном рисунке. Операция редактирования применима и к массивам блоков, созданным командой MINSERT (МВСТАВИТЬ), но выполняется над первым объектом из массива, а затем автоматически распространяется на остальные.
Для редактирования вхождения блока или ссылки используется команда REFEDIT (ССЫЛРЕД), которой соответствуют кнопка , расположенная первой в панели инструментов Refedit (Редактирование вхождений) (рис. 7.32), а также пункт падающего меню Modify | Xref and Block Editing | Edit Reference In-Plасе (Редакт | Блоки и внешние ссылки | Редактирование вхождений).
Рис. 7.32. Панель инструментов Refedit
Опробуем редактирование вхождения на примере файла, изображенного на рис. 7.31, где блок Computer был вставлен четыре раза, причем у двух вхождений выполнена подрезка.
Щелкните по кнопке , расположенной в панели инструментов Refedit (Редактирование вхождений), вызывая тем самым на выполнение команду REFEDIT (ССЫЛРЕД). Появится запрос:
Select reference: (Выберите вхождение:)
Выберите верхнее вхождение блока Computer (выбранные вами для редактирования вхождения заносятся в специальный рабочий набор). После этого откроется диалоговое окно Reference Edit (Редактирование вхождений), в котором в левой части вкладки Identify Reference (Выбрать вхождение) высвечивается дерево вхождений для выбранного объекта (в нашем случае это блок Computer ) (рис. 7.33).
Рис. 7.33. Диалоговое окно Reference Edit , вкладка Identify Reference
- Automatically select all nested objects (Автоматически показывать все вложенные объекты) — показывает и внутренние вхождения в отмеченный блок или внешнюю ссылку, с возможностью их выбора для редактирования;
- Prompt to select nested objects (Запрашивать выбор вложенных объектов) — внутренние вхождения показывает по запросу.
- Create unique layer, style, and block names (Создавать уникальные имена слоев, стилей и блоков);
- Display attribute definitions for editing (Вывести описания атрибутов для редактирования);
- Lock objects not in working set (Закрыть объекты, не входящие в рабочий набор).
Рис. 7.34. Диалоговое окно Reference Edit , вкладка Settings
Первый флажок позволяет включать префиксы в имена слоев и символов (см. ранее операцию внедрения внешних ссылок, где появляются префиксы). Второй флажок позволит отредактировать определения атрибутов выбранного блока. Третий флажок при включении блокирует отображение объектов, не попавших в редактируемый набор, чтобы их нельзя было случайно изменить.
После нажатия в диалоговом окне Reference Edit (Редактирование вхождений) кнопки ОК система сообщает:
Use REfCLOSE or the Refedit toolbar to end reference editing session.
(Для завершения сеанса редактирования вхождения воспользуйтесь командой ССЫЛЗАКР или соответствующей панелью инструментов.)
Теперь в панели Refedit (Редактирование вхождений) в списке вхождений должно появиться имя Computer (как на рис. 7.32). Этот список показывает вам имена тех вхождений блоков и внешних ссылок, которые вы внесли в рабочий набор для дальнейшего редактирования. Установленное в этом списке текущее значение (его вы могли бы поменять, если бы выбрали несколько вхождений) показывает имя вхождения, которое вы сейчас начнете редактировать.
Следующий шаг — с помощью кнопки необходимо выбрать объекты вхождения блока, которые должны быть отредактированы. Система выдаст следующий запрос:
Transfer objects between the RefEdit working set and host drawing. Enter an option [Add/Remove] : _add
(Перемещение объектов из основного рисунка в рабочий набор для ССЫЛРЕД и обратно. Задайте опцию [Добавить/Исключить] : _add)
Отметьте оба входящих в блок Computer прямоугольника (по очереди или секущей рамкой). Далее система AutoCAD сообщит:
2 Added to working set: (Добавлено к рабочему набору элементов: 2)
С помощью кнопки вы можете добавить к рабочему набору другие дополнительные объекты, а с помощью кнопки — убрать из набора лишние.
Теперь воспользуйтесь командой PROPERTIES (OKHOCB) и сделайте во внешнем прямоугольнике изменение цвета и ширины (например, на 2 мм), а во внутреннем прямоугольнике измените тип линии (например, на тип Dashed (Штриховая)). После этого левое вхождение блока Computer примет новую форму, а остальные вхождения не будут видны (рис. 7.35). Для того чтобы занести сделанные изменения в описание блока Computer , щелкните по кнопке панели Refedit (Редактирование вхождений). Данная кнопка вызывает команду REFCLOSE (ССЫЛЗАКР) в режиме сохранения изменений.
Прежде чем внести результаты редактирования, система AutoCAD выдает предупреждение (рис. 7.36).
При согласии с внесением изменений нажмите кнопку ОК . После этого результат редактирования отразится на всех вхождениях блока Computer (рис. 7.37), а панель Refedit (Редактирование вхождений) исчезнет.
Возможно редактирование и вложенных вхождений (например, когда внешняя ссылка внутри себя содержит другую внешнюю ссылку).
Рис. 7.35. Редактирование вхождения блока Computer
Рис. 7.36. Предупреждающее сообщение команды REFCLOSE
Кнопка панели Refedit (Редактирование вхождений) предназначена для отказа от внесения изменений во все вхождения блока или внешней ссылки.
Рис. 7.37. Результаты редактирования описания блока через вхождение
Не разбивается блок в Autocad
Для работы взял план нужной местности и решил удалить всё не нужное и/или не актуальное.
Чертёж состоял из нескольких блоков, выделив которые я нажал: Расчленить.
Большая часть блоков разбилась на составляющие, а один блок не разбился.
Повторил несколько раз команду. Блок держит позиции и не разбивается.
Я проверил все слои и убрал все замочки
Блок оставался блоком.
Зато можно было зайти в редактор блоков
И работать с блоком в редакторе. Но это не очень удобно. Наверняка решение этого вопроса есть.
Опрос коллег помог решить вопрос.
Как же разбить блок в Автокаде?
Надо в редакторе блоков вызывать свойства (Ctrl+1)
И в нижней части в разделе Блоки:
В строке: Разрешить расчленение выбрать пункт ДА
И выйти из редактора сохранив изменения. И блок можно будет «расчленить».
Ускорить вход/выход из режима редактирования блока
Что хотелось бы ускорить:
1.При использование команды Edit Block In-place автоматически входить в блок без всплывающей таблички Reference Edit, если блок не содержит внутри себя другие блоки.
2.При выходе из режима редактирования и сохраняя изменения в блоке также миновать всплывающую табличку, автоматически жать кнопку ОК в ней.
Просмотров: 14620
Регистрация: 20.03.2008
Сообщений: 2,653
Сообщение от EgorS
1.При использование команды Edit Block In-place автоматически входить в блок без всплывающей таблички Reference Edit.
Чтоб входить в редактор блока просто дважды кликнув на нем, надо прописать в Операциях при двукратном нажатии на блок (команда _cui) макрос
^C^C(command "_BEDIT")
Сообщение от EgorS
если блок не содержит внутри себя другие блоки.
— этого ограничения я не знаю, как добиться. А что должно случиться, если он всё-таки содержит внутри себя другие блоки?
Сообщение от EgorS
2.При выходе из режима редактирования и сохраняя изменения в блоке также миновать всплывающую табличку, автоматически жать кнопку ОК в ней.
Например, создать кнопку, повесить на нее макрос
^C^C(command "_BCLOSE" "_S")
и закрывать редактор этой кнопкой. Или горячие клавиши определить. В 2011-м так работает на ура.
Последний раз редактировалось skkkk, 19.08.2013 в 13:22 .
Регистрация: 16.01.2010
Сообщений: 65
Сообщение от skkkk
этого ограничения я не знаю, как добиться. А что должно случиться, если он всё-таки содержит внутри себя другие блоки?
Работать как это работает стандартно, выкидывать окно Reference Edit, где можно выбрать под-блок.
Сообщение от skkkk
(command "_BCLOSE" "_S")
и закрывать редактор этой кнопкой. Или горячие клавиши определить. В 2011-м так работает на ура.
сделал как ^C^C_refclose;_save ,но табличка все равно всплывает как и прежде, _BCLOSE команда это для выхода из Block Editor-а, я же захожу в редактирование через Edit Block In Place, тут задачу можно свести к тому — как макросом нажать кнопку OK ?
Последний раз редактировалось EgorS, 19.08.2013 в 03:12 .
Регистрация: 20.03.2008
Сообщений: 2,653
Сообщение от EgorS
Проглядел про этот инплэйс.
Тогда так: для включения режима редактирования по месту на Операцию при двукратном нажатии на блок бьем макрос:
^C^C(command "_-REFEDIT" "_OK" "_ALL" "_Y")
или опции можно настроить как надо, а для закрытия с сохранением макрос:
^C^C(command "_REFCLOSE" "_S")
Обращаю внимание, что в данном случае нужно использовать не ^C^C_refclose, а именно лисповскую функцию command — она подавляет диалоговые окна при наличии в ее аргументах опций.
Чтобы обработать ситуацию с вложенными в блок другими блоками, надо подумать и покопаться, на что сейчас я времени пока не имею. Но это реально, например повесить на Операцию. лисп, который проверит, есть ли в блоке блоки, — и если есть, выдаст окно. Если все правильно понял, позже смогу посмотреть.
Последний раз редактировалось skkkk, 19.08.2013 в 13:23 .
Регистрация: 16.01.2010
Сообщений: 65
Cпасибо! С обоими макросами разобрался, пока что сделал 2 разных вхождения в блок, стандартное и макросовое, повесил на разные хоткеи.
Сообщение от skkkk
Чтобы обработать ситуацию с вложенными в блок другими блоками, надо подумать и покопаться, на что сейчас я времени пока не имею. Но это реально, например повесить на Операцию. лисп, который проверит, есть ли в блоке блоки, — и если есть, выдаст окно. Если все правильно понял, позже смогу посмотреть.
все правильно! тут как я понимаю самое сложное проверить лиспом наличие подблоков у блока, а дальше все просто. Сам скачал книгу по лиспу, буду потиху ковырять.
Регистрация: 20.03.2008
Сообщений: 2,653
Сообщение от EgorS
тут как я понимаю самое сложное проверить лиспом наличие подблоков у блока, а дальше все просто
С использованием этого кода от Алексея Кулика сложного вообще ничего нет — всё просто
(defun block-double-click ( / ss) (vl-load-com) (defun get-block-vla-obj-list (vla-block_ref / block_def block_cont res) (setq block_def (vla-item (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object))) (vla-get-effectivename vla-block_ref) ) ;_ end of vla-item ) ;_ end of setq (setq block_cont ((lambda (/ res) (vlax-for sub block_def (setq res (cons sub res)) ) ;_ end of vlax-for (reverse res) ) ;_ end of lambda ) ) ;_ end of setq block_cont ) (if (setq ss (ssget "_I")) (if (vl-some (function (lambda (x) (= (vla-get-ObjectName x) "AcDbBlockReference"))) (get-block-vla-obj-list (vlax-ename->vla-object (ssname ss 0))) ) (command "_REFEDIT") (command "_-REFEDIT" "_OK" "_ALL" "_Y") ) (princ "\nБлок не выбран") ) (princ) )Сохраняем лисп-файл как обычно в папку, прописанную в путях доступа, а на Операцию. ставим макрос
^C^C(if(null (block-double-click))(Load "block-double-click.lsp"));(block-double-click)Но это выражение каждый раз при двойном клике на блоке будет появляться в командной строке. Если раздражает, то добавляем лисп-файл в автозагрузку, а на кнопку пишем макрос
^C^C(block-double-click)Регистрация: 16.01.2010
Сообщений: 65Cупер- все работает великолепно!
но появились пожелания: нельзя ли добавить условие, чтоб находясь в режиме редактирования блока можно было бы залазить в его под-блоки этим же кодом (хоткеем соотвествено)?По теме: http://forums.autodesk.com/t5/Visual. k/td-p/3454228 - быстрое создание блока, для тех кто не заботится по именам блоков )
Регистрация: 20.03.2008
Сообщений: 2,653
Сообщение от EgorSнельзя ли добавить условие, чтоб находясь в режиме редактирования блока можно было бы залазить в его под-блоки этим же кодом (хоткеем соотвествено)?
Методом сканирования системных переменных по ключевому запросу "REF" я обнаружил переменую REFEDITNAME (только чтение). Если она не равна "" (т.е. пустой строке), то это означает, что мы сейчас находимся в режиме редактирования блока или внешней ссылки с именем, совпадающим со значением этой переменной. Попробуем этим воспользоваться, добавив еще одно условие. Если REFEDITNAME = "", то все по-старому: вложенных блоков нет - открывается контекстное редактирование блока, есть - видим окно со списком вложенных блоков. Иначе - происходит закрытие редактирования с сохранением, а затем контекстное редактирование блока второго уровня
Пока получилось вот что: находясь в режиме Edit Block In-place основного блока, делаем тройной клик на блоке второго уровня и вот мы уже редактируем его. Не выходит пока ликвидировать третий клик. Он запрашивает вхождение блока. Не прокатывает вариант, как с блоком первого уровня, когда _-REFEDIT сам понимает, какой блок ему открыть. А как его (это вхождение) программно определить по даблклику на блоке - ума не приложу. Попытка вычленить его из набора (ssget "_I") успехом не венчается.(defun block-double-click () (vl-load-com) (defun get-block-vla-obj-list (vla-block_ref / block_def block_cont res) (setq block_def (vla-item (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object))) (vla-get-effectivename vla-block_ref) ) ;_ end of vla-item ) ;_ end of setq (setq block_cont ((lambda (/ res) (vlax-for sub block_def (setq res (cons sub res)) ) ;_ end of vlax-for (reverse res) ) ;_ end of lambda ) ) ;_ end of setq block_cont ) (if (ssget "_I") (if (= (getvar "REFEDITNAME") "") (if (vl-some (function (lambda (x) (= (vla-get-ObjectName x) "AcDbBlockReference"))) (get-block-vla-obj-list (vlax-ename->vla-object (ssname (ssget "_I") 0))) ) (command "_REFEDIT") (command "_-REFEDIT" "_OK" "_ALL" "_Y") ) (command "_REFCLOSE" "_S" "_-REFEDIT" pause "_NEXT" "_OK" "_ALL" "_Y") ) ) (princ) )Но я нашел во всем этом одно удобство: находясь в режиме контекстного редактирования, делаем даблклик по любому блоку и нажимаем Escape. Что произойдет, как думаете? Мы выйдем из режима контекстного редактирования в обычный режим модели, сохранив изменения в блоке.