Как в автокаде заменить точку на блок
Создание блока в Автокаде можно разделить по сложности на три типа: создание обычного блока, блока имеющего атрибуты и динамические блоки.
Как создать блок каждого из типов, будет разобрано в отдельной статье на примере создания блока рамки чертежа для Автокада по ГОСТу. Думаю так, на коротких уроках, посвященных конкретным задачам, будет наглядней и легче освоить работу с блоками.
Примечание. Предпочтительней использование именно такого способа вставить рамки для чертежей в Автокаде, а не использовать СПДС модуль, по причине не корректного открытия чертежей в AutoCAD без установленного СПДС модуля у других пользователей.
В этой статье разберемся с тем как : создать блок, вставить, разбить блок, редактировать и переименовать, а остальное когда будет настроение.
Как создать блок в Автокаде
И так приступим к созданию простого блока рамки чертежа:
1. Для начала скачайте файл с подготовленными рамками и штампами, кликнув здесь.
2. Откройте чертеж с рамкой и запустите команду создания блока нажатием соответствующей кнопки или выберите в верхнем меню Рисование → Блок → Создать…
Или введите в командную строку БЛОК (_BLOCK).
3. В появившемся окне «Определение блока» последовательно укажите имя блока (Рамка), точку вставки (левый нижний угол) и объекты (штампы и рамку для чертежа).
Завершите создание блока нажатием кнопки ОК. В общем и все, с опциями думаю разберетесь сами.
Комментарии
А можно сделать просто кнопку (инструмент) со следующими двумя последовательностями работы. Предисловие пред пользователем на экране два блока. Блок, на который нужно заменить - А, блок который заменяем - Б.
1. Пользователь выбирает блок А, нажимает на кнопку BlockReplace, выбирает блок Б, блок Б сразу заменяется на блок А.
2. Пользователь нажимает на кнопку BlockReplace, выбирает блок А, выбирает блок Б, блок Б сразу заменяется на блок А.
Вопрос о том удалять или нет блок Б, не спрашивается каждый раз. По умолчанию стоит не удалять. Если нажать на правую кнопку мыши после нажатия кнопки BlockReplace, то в контекстном меню будет строчка «Удалять заменяемый блок?» (Purge… см. blockreplace в Express Tools), с ответом Да или Нет.
Важный момент: Не должно быть диалоговых окон. Здесь полная аналогия с инструментом, например, Trim.
>Дмитрий Сергеевич
Сделать-то можно, но это будет уже другая программа. Здесь весь смысл в наглядности. Насчет удаления по умолчанию согласен, можно убрать. Исходник дома, так что вечером-ночью поправлю.
А насчет экспрессовской blockreplace - она меня взбесила в 2006-м (с динамическими блоками глючит, с атрибутами глючит), почему и родилась эта вещь. И там, кстати, не удаление блока из чертежа, а запуск команды Purge, все в одну кучу.
>Дмитрий Сергеевич
Частично выполнил Вашу просьбу (команда -BlockReplace). C предварительным выбором единичного объекта в VBA проблемы, SelectionSet (сиречь набор) можно, но это здесь ни к чему. И порядок выбора заменяемого и заменяющего блоков обратный, относительно предложенного (мне такой порядок кажется более логичным). Впрочем, это можно решить по месту. Для изменения порядка выбора нужно в процедуре BlockReplaceSimple заменить "BlkName1 =" на "BlkName2 card mb-5 rounded-0 border-0">
den001, спасибо, за старания, но после запроса -BlockReplace выпадает ошибка Compile error: User-defined type not defined, и уже Basic указывает на следующую строку: Public Function NameSelectBlock(Optional Prompt As String = "Выберите блок:").
По поводу того, какой блок выбирать сначала метафора такая: Я купил новую книгу (кликнул на блок А, и подтвердил выбор, нажав Enter или правую кнопку мыши), но на книжной полке нет места, мне нужно вытащить одну старую книгу (кликнул по блоку Б, и подтвердил выбор). В реальности новую книгу нужно ещё поставить в замен старой, в программе же это происходит мгновенно, после подтверждения выбора блока Б.
Вопрос: Почему не нужно диалоговое окно?
Ответ: Потому что блок А итак передомной (в моих руках - новая книга), и блок Б тоже передомной т.к. в реальности чтобы поставить новую книгу взамен старой нужно подойти к книжной полке (видеть перед собой Б). Следовательно, такой алгоритм действий является, IMHO, интуитивным и понятным, чем диалоговый интерфейс, отрывающий пользователя от объектов которые он видит перед собой, заставляет пользователя помнить названия блоков (в моём случае у блоков и не должно быть понятного названия, т.к. они создаются автоматически инструментом Flatshot).
>Дмитрий Сергеевич
Странно, -BlockReplace у меня прекрасно работает, ну да ладно, немного по другому переписал, должно получиться.
den001, что то, программа спотыкается об IAcadBlockReference2, при чем даже при работе с диалоговым окном (blockreplace).
Скажу, что у Вас, похоже, AutoCAD 2007, а программа для 2006-го. Замените во всем коде IAcadBlockReference2 на AcadBlockReference - все будет работать. Такой вот сюрприз от разработчиков Autodesk :-)
В статье «Особенности использования блоков в Автокаде» рассмотрено, как при редактировании описания блока все остальные его вхождения на чертеже автоматически изменяются. Бывают случаи, когда нужно не просто отредактировать исходный блок, а полностью его заменить. Чтобы при этом все вхождения на чертеже тоже изменились (или заменилась лишь конкретная часть вхождений определенного блока).
Задача нестандартная. Но иногда в AutoCAD замена блока является необходимым условием для корректного выполнения проекта. Есть несколько способов, как это можно сделать:
Замена блоков в Автокаде.
1) Скачайте исходный файл AutoLISP-приложения «ЗАМЕНА.lsp» (после скачивания разархивируйте его).
2) Переместите файл на своем компьютере в удобное место. Имейте в виду, что при загрузке этого файла в AutoCAD будет сохраняться путь, поэтому изменение его местоположения в последующем нежелательно.
3) В Автокаде перейдите на вкладку «Управление» → панель «Приложения» → команда «Загрузить приложения».
Рис. 1. Инструмент AutoCAD «Загрузить приложение».
Откроется диалоговое окно, как показано на рис. 2. Далее находите ранее сохраненный файл «ЗАМЕНА.lsp» и нажимаете «Загрузить».
Рис. 2. Загрузка/выгрузка приложений AutoCAD.
Все готово. Для вызова команды достаточно прописать в командной строке «ЗАМЕНА» (см. рис. 3).
Рис. 3. Вызов команды AutoCAD «Замена».
Далее нужно выбрать объекты, которые следует заменить. Нажать Enter, после чего указать объект-образец (т.е. тот объект, на который мы хотим заменить). Данная команда работает не только с блоками, но и с другими объектами AutoCAD.
Чтобы заменить блок в Автокаде, пользуйтесь следующим алгоритмом:
1. Выделите блок, который нужно заменить.
2. Если вхождений данного блока на чертеже несколько, то нажмите ПКМ и выберите «Выбрать подобные». Все вхождения этого блока автоматически выделятся.
3. В командной строке пропишите «ЗАМЕНА».
4. С помощью мышки укажите в рабочем пространстве блок, на который нужно все заменить, т.е. объект-образец. Нажмите Enter.
Как редактировать блок в Автокаде
Редактирование блока в Автокаде происходит в специальном окне, перейти в которое можно по двойному клику на блоке, выбрав в верхнем меню Сервис → Редактор блоков или из контекстного меню по клику правой кнопки мыши после выделения блока.
Можно так же запустить команду введя БЛОКРЕД (_BEDIT), после чего необходимо указать имя блока для редактирования.
Здесь вы сможете изменить геометрию, сменить цвет и типы линий, и много много еще чего интересного, о чем пойдет речь в следующих уроках по созданию блоков в Автокаде.
Как сделать блок в Автокаде. Видеоурок
Видео посвящено тому, как сделать блок в Автокаде. Как добавить надписи в штамп с помощью атрибутов, и сделать его размеры динамическими узнаете из других уроков.
Подскажите, пожалуйста) Хорошо бы лисп какой-нибудь! Нужно преобразовать точки в блоки, но при этом чтобы координата z осталась исходной! А то я нашла один лисп, точки поменялись на блоки, но координаты высоты у всех новых блоков стали нулевыми(((
Подскажите, пожалуйста) Хорошо бы лисп какой-нибудь! Нужно преобразовать точки в блоки, но при этом чтобы координата z осталась исходной! А то я нашла один лисп, точки поменялись на блоки, но координаты высоты у всех новых блоков стали нулевыми(((
Попросите кого нибудь из лиспописателей отредактировать код, по идее не должно быть это сложно..
__________________
. Не пытайся гнуть ты ложку,
Не вяжи её узлом.
Ложка - ложка понарошку,
А по правде, - это лом!
Лисп именно что этот.
Помогите кто-нибудь. Пожалуйста.
Ну я могу допустить, что автору на самом деле надо разные блоки на каждую точку (здесь как и в большинстве случаев приходиться только угадывать), но Ваш "исправленный" лисп не запуститься корректно более 1-го раза.
Дима_, если автору нужно то, что я думаю, то раза вполне достаточно. Ну или откатываться будет. Минусы своего подхода я знаю, спасибо
Но, в общем-то, согласен, формулировать задачи нужно получше
Автору надо один и тот же блок на все точки, но чтобы координата z у каждого из этих блоков была такой же, как и у каждой первоначальной точки. То есть куча одинаковых блоков с разной отметкой высоты.
Offtop:
Мне сразу вспомнилась обратная задача: получение 3D точек на основе имеющихся вхождений блоков, мало ли, может кому пригодится: тынц.
специалист по околачиванию грушевых деревьев
Немножко не то. Оно делает атрибуты с отметкой высоты. В обчем спасибо, но не то.
А vl-load-com почему-то у меня не работает. Это просто обычный лисп, его как лисп сохранять, и имя команды должно быть points-to-block?
спасибо большое, то, что надо!
Лисп именно что этот.
Помогите кто-нибудь. Пожалуйста.
На схеме имеется большое количество примитивов (отрезков), которые необходимо заменить (преобразовать) на (в) блоки (вхождение блока). Каждый раз удаляю отрезок, вставляю тот же отрезок, но уже как блок (Вставка - Блок) и соединяю с остальными. И нужно, чтобы эти блоки (отрезки) были отделены друг от друга, поэтому я не могу сделать всю схему одним блоком. Вся работа занимает огромное количество времени, чтобы заменить всё. Существует ли способ заменить это всё разом?
Попробовал LISP. Замена набора примитивов на выбранный примитив. Но это не подошло под мой случай, так как замена производится именно на тот объект, который был выбран в качестве образца. То есть сохраняются все его свойства (угол, длина и т.п.) Необходимо чтобы всё встало на те же места, под теми же углами и длинами.
Поскольку смысл этого действия (замена отрезков на блоки) не раскрыт, то как вариант:
1. Сделать динамический блок в виде симметрично растягивающегося относительно центра отрезка (со скрытыми ручками) и с динпараметром поворота.
2. Получаете из отрезка его длину и угол поворота, а также координаты середины отрезка. Затем вставляете блок и задаете его динпараметры значениями из отрезка. И после удаляете отрезок.
Дополню, можно выгрузить данные из линий в Excel, немного посчитать. и пакетно вставить дин блоки с соответствующими настройками (DynIn).
PS
Возможен еще вариант, более правильный:
создать в файле блок из отрезка длиной 1 и пакетно заменить им отрезки, а то здесь слишком много блоков получается, это нерационально.
Может, лучше разместить тему в разделе программирования, там наверняка помогут.
Возможен еще вариант, более правильный:
создать в файле блок из отрезка длиной 1 и пакетно заменить им отрезки, а то здесь слишком много блоков получается, это нерационально.
.
А управлять как всеми этими блоками?
Например, выбрать дин. блоки с определёнными атрибутами, заменить на другие?
Вертикалку из палочек собрать.
PS
Возможен еще вариант, более правильный:
создать в файле блок из отрезка длиной 1 и пакетно заменить им отрезки, а то здесь слишком много блоков получается, это нерационально.
Может, лучше разместить тему в разделе программирования, там наверняка помогут.
Разъясните пожалуйста. Не понимаю как с ним правильно работать. Здесь я прочитал. Активировал с помощью цифры '1'. В какой последовательности работать дальше?
Забыл добавить один из важных моментов. Есть СТО Газпром газораспределение 2.7-2013. И все блоки должны быть вставлены именно в таком виде, в котором они были предоставлены организации. То есть в данном случае его нельзя изменять. Он только растяжимый. Файл блока прикрепил. l0.dwg
И спасибо всем, кто ответил. Буду пробовать все предложенные вами способы. Будут вопросы - напишу.
чудоблок - на динпараметр поворота уже сил не хватило, видимо) И точка вставки не в центре блока-отрезка. Ну все равно алгоритмом остается почти прежним - только цепляетесь к одной из конечных точек "входного" отрезка как точки вставки.
----- добавлено через ~2 ч. -----
и откуда берутся данные для двух атрибутов в блоке? вручную вводить - это сразу хороший минус в скорости.
Какой хороший блок, человек делавший его явно мастер, так просто и так элегантно повысить сложность автоматизации, это надо уметь. То, что это получилось случайно, я ни в жисть не поверю. Я прямо таки в восторге.
Deutschland, спасибо Вам большое, за то, что поделились.
Ну какая то логика в этом есть: вроде в том же LT акаде можно работать с динблоком - в отличие от расширенных данных, присоединенных к отрезку.
Сергей812, я не оспариваю саму идею использовать дин. блоки, хозяин барин. мне просто очень понравилось как сделан именно этот блок.
коряво растяжимый
я внёс коррекцию только в растяжение, Offtop: ну и как водится короткий лисп.
перед использованием нужно переопределить блок в чертеже на нижеприлагаемый.
атрибуты у вставленных блоков пустые.
И все блоки должны быть вставлены именно в таком виде, в котором они были предоставлены организации. То есть в данном случае его нельзя изменять.
А по поводу лиспа, ИМХО доработать Ваш вариант до работы с исходным блоком не так уж и сложно, буквально несколько действий (внимательнее к блоку присмотритесь =) ).
VitalyAF, и зачем это?
Та же линия с атрибутами в виде дин. блока,
только более функциональная. Переименуй атрибы и пользуйся!
Мне решили ещё усложнить задачу до поры до времени. Вы наверное задаётесь вопросом зачем ему это всё надо? У нас в организации прошла проверка, в ходе которой сделали замечание. Мол, вместо отрезков должны быть блоки. Заставили переделывать. Только над одним куском схемы я корпел чуть больше рабочей недели. Всё, чем я занимался - это вручную удалял эти отрезки и вставлял блоки. А переделывать схему придётся для целого города.
Буквально сегодня проверяющий дал нам блок (обычный блок). Он даже не динамический (не растягивается - ничего!) Будем добиваться адекватных блоков. Но пока что придётся работать именно с таким (прикрепил файл). И теперь я смотрю длину отрезка, удаляю его, вставляю блок, указываю длину, поворачиваю его и свожу с другим и так по цепочке. Очень кропотливая работёнка.
Но можно ли как-то и из этой ситуации выкрутиться, чтобы заменить отрезки на блоки (с такими же длинами, поворотами и т.д.) пакетно или ещё как-нибудь упростить работу?
Программка на VBA взамен экспрессовской команды blockreplace для AutoCAD 2006/2007. Заменяет во всем чертеже один блок на другой. Блоки могут быть динамическими и содержать атрибуты. Такие свойства, как слой, цвет, вес и тип линий, масштаб, OCS, сохраняются. Выбрать нужный блок можно из списка клавишей Enter или двойным кликом, а также указать на экране. Есть возможность сохранения значений атрибутов заменяемого блока, а также удаление его из чертежа после замены.
13.02.07
Добавил команду -BlockReplace, без вызова диалогового окна (процедура BlockReplaceSimple). Предлагает сначала выбрать заменяемый блок, потом заменяющий. Атрибуты сохраняются, блок из чертежа не удаляется.
Также снял по умолчанию флажок "Удалить из чертежа".
P.S. Если все же есть необходимость использовать также и экспрессовские команды blockreplace и -blockreplace, нужно в прилагаемом lisp-файле заменить c:BlockReplace и c:-BlockReplace на любые понравившиеся имена (не трогая c: )
Как переименовать блок в Автокаде
Как переименовать блок в Автокаде, с ходу и не найдешь, главное знать где искать. А все просто, в верхнем меню Формат → Переименовать… или введя команду ПЕРЕИМЕНОВАТЬ (_RENAME) вызовите окно "Переименование".
И давайте сменим имя блока с "Рамка" на "Рамка А3".
Как видите в этом окне по мимо имени блока можно переименовать много еще чего.
Как вставить бок в Автокаде
Блок мы создали и сохранили, теперь давайте немного поговорим о его вставке. Для того чтоб вставить наш блок (Рамка) в чертеж проделайте следующее:
1. Запустите команду кликом кнопки, из верхнего меню Вставка → Блок… или введя в командную сроку ВСТАВИТЬ (__INSERT).
2. Выбери блок Рамка в поле «Имя:» и нажмите ОК оставив все настройки по умолчанию.
3. Укажите точку вставки рамки на экране чертежа.
Как в Автокаде разбить блок
Для того, чтоб разбить/взорвать блок необходимо воспользоваться командой РАСЧЛЕНИТЬ (_EXPLODE) запустив из строки состояния, кнопкой на панели инструментов или из верхнего меню Редактировать → Расчленить .
Далее укажите блоки которые требуется разбить, завершив выбор нажатием Enter.
Полезно. Что такое атрибуты блока и как их создать читайте здесь.
Что такое динамический блок и как его таким сделать написано тут.
Читайте также: