Замена в AutoCAD любых объектов на образец. Видеоурок
Если возникает необходимость заменить в Автокаде множество объектов на определенный, то этот лисп просто сказка! Для чего и где это можно применить?
Замена блока и других элементов в Автокаде
Ну скажем, работаете вы с топографическими планами в какой либо программе, экспортнули данные в Автокад, а точки или условные обозначения отображаются не корректно (точки пришли блоками, а условные обозначения точками), запускаем данный лисп, выделяем объекты для замены и указываем на что заменить.
Замена объектов в AutoCAD. Установка lisp
1. Качаем архив с lisp для замены объектов в AutoCAD здесь.
2. Распаковываем архив и сохраняем lisp файл в папочку где хранятся все наши приложения, а если такой еще нет например в D:\MyLisp.
3. Запускаем AutoCAD и устанавливаем лисп стандартным способом. Если не знаем как, читаем здесь.
4. Ну все лиспом можно пользоваться, набираем в командной строке frto и выбираем объекты для замены (работает предварительный выбор) и нажимаем Enter, после указываем объект на что заменить, и все дела.
5. Ну и на последок для вывода команды с кнопки, создаем ее стандартным способом и в поле макрос пишем следующее:
^C^C(if (null C:frto)(load «frto»));frto;
Если не знаем как создать свою кнопку читаем здесь.
Интересно . Если вам приходится строить рельеф по точкам, то в Автокаде существует возможность назначить точке координату Z взятую из подписи отметки, как это сделать читайте тут.
Как заменить объекты на образец в Автокаде. Видеоурок
Видео посвящено тому, как заменить точки, блоки, тексты и т.п. на объект указанный как образец.
Замена блоков в Автокаде
В статье «Особенности использования блоков в Автокаде» рассмотрено, как при редактировании описания блока все остальные его вхождения на чертеже автоматически изменяются. Бывают случаи, когда нужно не просто отредактировать исходный блок, а полностью его заменить. Чтобы при этом все вхождения на чертеже тоже изменились (или заменилась лишь конкретная часть вхождений определенного блока).
Полное обучение: «AutoCAD на 100%»
Задача нестандартная. Но иногда в AutoCAD замена блока является необходимым условием для корректного выполнения проекта. Есть несколько способов, как это можно сделать:
Замена блоков в Автокаде.
- Скачайте исходный файл AutoLISP-приложения «ЗАМЕНА.lsp» (после скачивания разархивируйте его).
- Переместите файл на своем компьютере в удобное место. Имейте в виду, что при загрузке этого файла в AutoCAD будет сохраняться путь, поэтому изменение его местоположения в последующем нежелательно.
- В Автокаде перейдите на вкладку «Управление» → панель «Приложения» → команда «Загрузить приложения».
Рис. 1. Инструмент AutoCAD «Загрузить приложение».
Откроется диалоговое окно, как показано на рис. 2. Далее находите ранее сохраненный файл «ЗАМЕНА.lsp» и нажимаете «Загрузить».

Рис. 2. Загрузка/выгрузка приложений AutoCAD.
ПРИМЕЧАНИЕ: Может появиться окно с предупреждением о том, что «обнаружен исполняемый файл вне указанных доверенных местоположений. Дальнейшие действия?». Нажмите «Загрузить».
Все готово. Для вызова команды достаточно прописать в командной строке «ЗАМЕНА» (см. рис. 3).

Рис. 3. Вызов команды AutoCAD «Замена».
Далее нужно выбрать объекты, которые следует заменить. Нажать Enter, после чего указать объект-образец (т.е. тот объект, на который мы хотим заменить). Данная команда работает не только с блоками, но и с другими объектами AutoCAD.
Чтобы заменить блок в Автокаде, пользуйтесь следующим алгоритмом:
- Выделите блок, который нужно заменить.
- Если вхождений данного блока на чертеже несколько, то нажмите ПКМ и выберите «Выбрать подобные». Все вхождения этого блока автоматически выделятся.
- В командной строке пропишите «ЗАМЕНА».
- С помощью мышки укажите в рабочем пространстве блок, на который нужно все заменить, т.е. объект-образец. Нажмите Enter.
ПРИМЕЧАНИЕ: Ознакомьтесь с видеоуроком, в котором я показываю, как можно быстро вызвать команду «Выбрать подобные». (см. урок «Псевдонимы команд AutoCAD»).
Как заменить блок в автокаде на другой блок
Файл с расширением .mpif – это специальный установочный файл ModPlus (ModPlus Install File).
Эти файлы позволяют устанавливать и обновлять все компоненты ModPlus используя модуль автообновлений в случае, когда отсутствует доступ к сети internet или сайту modplus.org
Варианты вызова
- Меню ModPlus
- Палитра ModPlus
- Лента AutoCAD
- Командная строка: _mpBlkReplace
Значок
Описание
Плагин работает в двух режимах: Заменить выбранные – позволяет заменить все выбранные блоки на один блок-образчик; Заменить подобные – позволяет заменить все вхождения одного блока на один блок-образец. Позволяет удалить описание замененного блока из базы чертежа. По аналогии с командой «Очистить» (_PURGE). Присутствуют различные настройки
Связанные новости и статьи
Использование
Вариант работы функции [заменитьВыбранные/заменитьПодобные]:
Выбор режима работы функции
Режим «Заменить выбранные» позволяет заменить все выбранные блоки на один блок-образчик
Выберите несколько блоков для их замены:
Выбор одного или нескольких блоков. В выбор может попадать и блок-образчик
Выберите заменяющий блок:
Выбор блока-образчика, на который будут заменены блоки в предыдущем выборе
Режим «Заменить подобные» позволяет заменить все вхождения одного блока на один блок-образчик
Выберите заменяемый блок:
Выбор одного блока, все вхождения которого требуется заменить
Выберите заменяющий блок:
Выбор блока-образчика
Удаление блока из базы чертежа
Позволяет удалить описание замененного блока из базы чертежа. По аналогии с командой «Очистить» (_PURGE). Срабатывает при обоих режимах работы функции
Удалить замененные блоки из базы чертежа? [Да/Нет]:
Да — удаление описаний блока из базы чертежа; Нет — завершение работы функции
Файлы с расширением .mpif используются для установки или обновления компонентов и плагинов в случае отсутствия доступа к сети internet! Установка ModPlus производится с помощью web-установщика
Замена одного блока на другой
Господа тут такая проблема в чертеже необходимо поменять часть условных обозначений на другое. Как это сделать. Удалять и вставлять по новой скучно (больше 100 шт). Т е. необходимо часть блоков (например «свая1») поменять на другой блок (например «свая2).
#2 Ответ от Leonid_01 26 апреля 2003г. 08:08:51
Re: Замена одного блока на другой
Если это у тебя блок, то необхродимо его отредактировать: Редактировать-Блоки и внешние ссылки-Редактирование вхождений. Выбираешь нужный блок, затем элементы, входящие в него и производишь необходимые изменения. После завершения нажимаешь на панели «Редактирование вхождений» кнопку «Сохранить изменения» — и у тебя автоматически заменятся все блоки.
#3 Ответ от MS 26 апреля 2003г. 13:24:11
Re: Замена одного блока на другой
Поменять блоки (и вообще любые свойства объектов по запросу) можно в Autocad Map’е
#4 Ответ от ABoltrushko 26 апреля 2003г. 13:25:07
Re: Замена одного блока на другой
Такие возможности есть в Express Tools
#5 Ответ от Vlad 26 апреля 2003г. 20:05:37
Re: Замена одного блока на другой
> Leonid
мне необходимо поменять не все блоки данного типа на другой, а только часть.
По поводу Express Tools меня почемуто скачаный с этого сайта не устанавливается(после установки нет файла меню в папке с Express-ом)
#6 Ответ от Oleg 26 апреля 2003г. 22:35:59
Re: Замена одного блока на другой
Скопировать блок — запомнить точку привязки блока — разбить блок — отредактировать — создать блок с тем же именем и привязкой — переопределить!
#7 Ответ от Vlad 27 апреля 2003г. 15:34:08
Re: Замена одного блока на другой
> Oleg.
Перечисленные тобой операции можно провести с одним блоком, а не с сотней( ведь мне надо переопределить не все блоки данного типа, а только часть)
#8 Ответ от VH 27 апреля 2003г. 17:11:02
Re: Замена одного блока на другой
(defun C:CHINSERT ()
(setq new_name (getstring «\nNew block name: «))
(if (tblsearch «BLOCK» new_name)
(while (setq e (car (entsel «\nSelect Block Reference: «)))
(if (= (cdr (assoc 0 (setq d (entget e)))) «INSERT»)
(entmod (subst (cons 2 new_name)(assoc 2 d) d))
(prompt «\nThis is NOT Block Reference.»)))
(prompt (strcat «\nBlock » new_name » NOT found.»)))
(prin1)
)
Пока указываете на экземпляры блоков, они меняют имя и, соответственно, внешний вид.
#9 Ответ от Vova 27 апреля 2003г. 17:48:05
Re: Замена одного блока на другой
VH> как решается вопрос с точкой вставки блока? Твоя программа вставляет новый блок вместо старого в ту же точку а помечается старый блок в любом месте? А как же с именами обоих блоков, ведь старый надо сохранить?
#10 Ответ от VH 28 апреля 2003г. 09:59:26
Re: Замена одного блока на другой
Механизм блоков в AutoCADе устроен следующим образом: есть ОПИСАНИЕ блока (которое хранится в Таблице Блоков) и ЭКЗЕМПЛЯРЫ блока (которые являются графическими примитивами в чертеже). Экземпляр блока среди своих данных содержит имя блока, которое собственно и меняется (при этом внешний вид меняется соответственно). Так что программа не «вставляет новый блок вместо старого», а подменяет один другим (кстати, при этом Атрибуты остаются «старые»). Описание «старого» блока хранится в Таблице, ничуть не изменяется и может быть использовано для вставки Экземпляра в любой момент. Разрешите напомнить, что Описание сохраняется и при отсутствии Экземпляров (что приводит к «темной массе» в чертеже и множеству вопросов о том, как эту «массу» убить).
Так как сведения о точке вставки программой не меняются, разумеется, «новый» Экземпляр располагается в чертеже там же, где и «старый».
«. помечается старый блок в любом месте. » — функция (entsel) не выбирает объекты, входящие в состав блока, и воспринимает Экземпляр блока как единое целое.
#11 Ответ от VladSh 28 апреля 2003г. 16:42:40
Re: Замена одного блока на другой
Express на http://www-eng.lbl.gov/~anita/pdm/etv1-9.exe
Команда «Replace block with another block».
Есть ещё прикольная «Convert block to &xref».
#12 Ответ от Vova 29 апреля 2003г. 05:34:01
Re: Замена одного блока на другой
VH> Это новая требующая отладки программа или уже отработанная?
1. программа заменяет блок у его атрибутов (?) другим блоком, старые атрибуты принадлежат теперь новому блоку и располагаются поэтому в случайном месте, не привязанном к новой форме. Если новый блок имел свои атрибуты то они исчезают. По-видимому эта программа разработана для какого-то частного случая.
2. Почему команда UNDO убирает две последние операции а не одну? Или у меня глючит? Но именно с этой программой.
3. Для блоков без атрибутов работает четко, всего один щелчок и блок заменен, причем точки вставки сохраняются.
4. Можно сделать макрос с комбинацией insert+ erase, но это потребует двух щелчков на одну замену.
5. Все автокадовские команды по замене блока другим, как из Express, так и старая команда -Insert с опцией «=» заменяют блоки глобально, все сразу, поэтому Vlad’у надо работать либо вручную, либо программой VH.
#13 Ответ от VH 29 апреля 2003г. 09:33:20
Re: Замена одного блока на другой
Уважаемый Vova, программа эта написана по вопросу Vlad и выполняет то, что ему и требуется — подменяет имя блока в указанном экземпляре (в вопросе про атрибуты ни слова нет).
Что такое «требующая отладки программа» я не понимаю, ибо структурное программирование утверждает, что программа пишется по шаблону языка программирования на основе спроектированоого алгоритма и либо содержит правильную запись алгоритма (и тогда она правильна), либо не содержит (и тогда ее надо не «отлаживать», а переписывать), правильность изложения алгоритма доказывается математически, а никак не тестированием.
1. Block Reference(INSERT) и Атрибуты(ATTRIB) представляют собой цепочку примитивов, которая завершается примитивом SEQEND. Следовательно, вся цепочка Атрибутов сохраняется. В принципе можно создавать Экземпляры того же самого блока с _различными_ наборами Атрибутов (независимыми от Определения блока). Атрибуты «нового блока» не исчезают, а просто не создаются (ибо задания на это в вопросе нет).
2. Вероятно, следует управление UNDO включить в программу (что-нибудь типа UNDO Group / UNDO End).
3. Что и требовалось.
4. Можно сделать другую программу (с одним щелчком) — сообщите, что требуется.
5. Полагаю, что Vlad пришлет сообщение.
