Как вставить блок с переопределением
Как мы все знаем, что при вставке блока А в документ, где этот самый блок А существует, блок вставится как существующий. Есть ли вариант при вставке переопределить блок А и заменить его в целевом документе?
Просмотров: 2225
Регистрация: 19.07.2005
Сообщений: 3,226
Сообщение от koui
Есть ли вариант при вставке переопределить блок А и заменить его в целевом документе?
Есть вариант.
Ели блок действительно! одноимённый, то акад запрашивает, переопределить существующий.
Это азы.
Регистрация: 24.01.2017
Сообщений: 126
Сообщение от VitalyAF
Есть вариант.
Ели блок действительно! одноимённый, то акад запрашивает, переопределить существующий.
Это азы.
но у меня этого не происходит. Автокад 2016. пробовал на 2021 — то же самое, молча вставляется старый блок. переопределения просит при создании блока, но не при вставке.
Регистрация: 14.08.2014
Сообщений: 7,108
тема 1
тема 2
. тем с похожими обсуждениями много
Регистрация: 19.07.2005
Сообщений: 3,226
Сообщение от koui
но у меня этого не происходит.
1.создать новый файл
2. создать в нём новый блок
3. сохранить его копию на диск c пом. wblock > выбрать этот блок
4. его же вставить с пом. insert
Регистрация: 19.02.2010
Сообщений: 2,293
Добавить новый блок на палитру
В чертеже где надо переопределить блок, пкм на блоке палитры. переопределить
__________________
Мастерская СПДС
Регистрация: 24.01.2017
Сообщений: 126
Сообщение от VitalyAF
1.создать новый файл
2. создать в нём новый блок
3. сохранить его копию на диск c пом. wblock > выбрать этот блок
4. его же вставить с пом. insert
до чего же это неудобно. была бы хотя бы возможность привязаться к нескольким блокам из одного файла.
LISP, C# (ACAD 200[9,12,13,14])
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,810
DesignCenter, по-моему, еще жив
__________________
Моя библиотека lisp-функций
—
Обращение ко мне — на «ты».
Все, что сказано — личное мнение.
Кулик Алексей aka kpblc |
Посмотреть профиль |
Посетить домашнюю страницу Кулик Алексей aka kpblc |
Найти ещё сообщения от Кулик Алексей aka kpblc |
Регистрация: 19.07.2005
Сообщений: 3,226
Сообщение от Кулик Алексей aka kpblc
DesignCenter, по-моему, еще жив
+1. читать не хотят, лень матушка! Думают, что так освоят, не читая.
Регистрация: 19.02.2010
Сообщений: 2,293
Сообщение от koui
была бы хотя бы возможность привязаться к нескольким блокам из одного файла.
Палитра, дизайн центр, все есть
Учи матчасть
__________________
Мастерская СПДС
Проектирование систем электроснабжения
Регистрация: 21.11.2019
Ставрополь
Сообщений: 114
Если мне нужно быстро не заморачиваясь объединить 2 чертежа, где существует вероятность присутствия одноименных блоков и слоев, я использую _XREF. Далее в диспетчере внешних ссылок в контекстном меню «Внедрить. «. Добавятся все слои и блоки вставленного чертежа с добавлением в начале наименований имени вставленного чертежа. Не эстетично, но зато быстро и надежно.
Регистрация: 24.01.2017
Сообщений: 126
короче, я все эти темы просмотрел и понял, что костыльное решение — это заманчиво, но может сыграть злую шутку в перспективе. всем спасибо, изменю поход к вопросу.
Урок 05. Управление блоками в AutoCAD
Большие библиотеки содержащие блоки, должны быть хорошо структурированы и легко управляемы для того что бы быстро находить в них нужные блоки. Кроме того стоит обратить внимание на слои которые используются, при определении блоков, для того что бы получить желаемый результат при их вставке в чертеж.
Работа со слоями
При вставке блока в чертёж он определяется в текущий слой, после чего его можно переопределить в соответствующий слой. Параметры слоя в котором находится блок стандартны и представляют собой цвет линий, тип линий и их толщину. Ниже приведена таблица методов применения слоев при вставке блока с описанием результатов, хотя некоторые различия таковых незначительны.
Свойства компонентов блока и вставка объектов результаты
Графические параметры компонентов
Как видно из таблицы, тщательный подбор свойств слоя, который используется при создании блока имеет важное значение. Два метода установки параметров объектов ПОБЛОКУ и их создание на 0 слое, создает блок-хамелеон, который принимает свойства слоя в котором он вставляется. Использование двух других методов, сохраняет свойства блока не зависимо от того в какой он слой вставляется.
Расчленение блоков
В предыдущих лекциях мы уже рассказывали о переопределении блоков. Для того что бы расчленить блок используйте команду:
Способы ввода команды:
- Выполнить команду: Редактировать > Расчленить.
- Ввести в командной строке РАСЧ
Расчленение блока с вложенными блоками расчленяет только верхний, вложенные блоки расчленяются в последующем.
При расчленении блоков созданных в слое 0 или с графическими параметрами ПОБЛОКУ , графические свойства объектов: толщина, цвет и тип линий, приводятся к параметру по умолчанию – черный/белый цвет линий, сплошная линия и толщина линий по умолчанию.
При изменении масштаба блока по осям, объекты сохраняют свои формы и размеры при разрушении. Например в блоке была вставлена окружность при масштабе Х,Y-1,2 окружность отображается эллипсом, после применение команды РАСЧ исходный объект останется эллипсом.
Редактирование блоков
Существует несколько способов внесения изменений в блок, не разрушая его.
Редактор блоков
Способ ввода команды:
- Двойной щелчок по любому вставленному в чертеж блоку
- Нажать пиктограмму на панели
- Выполнить команду Сервис > Редактор блоков
- Ввести в командной строке БЛОКРЕД
После вызова команды будет открыто окно Редактирование определения блока , содержащие список блоков включенных в чертеж. Для редактирования выберите необходимый блок и нажмите ОК, после чего откроется Редактор блоков . Более подробно о редакторе блоков мы расскажем в следующем уроке.
Обновление блоков
Как уже было рассказано в предыдущих уроках при изменении блока, все его копии автоматически обновляются. Но если вы вставили файл в чертеж, что бы использовать в качестве блока, а затем изменили этот файл, в текущим чертеже он не обновится. Для того что бы файл автоматически изменялся необходимо использовать внешние ссылки , о которых мы расскажем в следующей главе.
Для обновления блоков вручную, которые были вставлены из файла, необходимо повторно вставить соответствующий файл.
В процессе вставки файла, необходимо повторно указать путь к нему (стоит обратить внимание, что заменять нужно сам файл, а не блок который в нем находится), после чего появится сообщение с вопросом о пересмотре файла, нажмите ДА . После чего необходимо нажать ESC , что бы избежать вставки новой копии блока.
Оглавления
- ОБЩИЕ СВЕДЕНИЯ AUTOCAD
- Глава №1
- Урок 01. Знакомство со средой AutoCAD. Знакомство с интерфейсом, создание рабочего документа
- Урок 02. Ввод команд. Методы ввода координат
- Урок 03. Режимы. Использование объектной привязки, объектного отслеживания и сетки
- Урок 04. Просмотр чертежей. Виды и видовые экраны в AutoCAD
- Урок 05. Основные геометрические объекты AutoCAD.
- Урок 06. Редактирование объектов в AutoCAD
- Урок 07. Нанесение размеров в AutoCAD
- Урок 08. Работа с текстом в AutoCAD
- Урок 09. Слои в AutoCAD
- Глава №2
- Урок 01. Блоки и атрибуты в AutoCAD
- Урок 02. Комбинирование объектов в блоки
- Урок 03. Сохранение блоков в отдельные файлы
- Урок 04. Вставка блоков и файлов в чертеж
- Урок 05. Управление блоками в AutoCAD
- Урок 06. Создание и использование динамических блоков в AutoCAD
- Урок 07. Параметры динамических блоков
- Урок 08. Добавление параметров видимости и выбора для динамических блоков
- Урок 09. Работа с атрибутами в AutoCAD
- Урок 10. Извлечение данных из атрибутов в AutoCAD
- Глава №3
- Урок 1: Внешние ссылки в AutoCAD
- Урок 2: Присоединение внешних ссылок в AutoCAD
- Урок 3: Редактирование внешних ссылок из чертежа
- Урок 4: Управление отображением внешних ссылок в AutoCAD
- Урок 5: Быстрый просмотр громоздких чертежей внешних ссылок
- Урок 6: Управление внешними ссылками в AutoCAD
- тест по главе №2
- тест по главе №3
- Видео уроки
Вставка блока с переопределением.
Добрый день!
Очень нужна помощь.
Есть блоки в чертеже А и в чертеже В с одними и теми же названиями. как вставить блок из чертежа А в четреж В с переопределением или просто переопределить его в четреже В.
Заранее спасибо!
#2 Ответ от Modis 5 апреля 2011г. 14:12:39
Re: Вставка блока с переопределением.
вы имеете ввиду, чтобы в чертеже В блок был такой-же как в чертеже А? Тогда только так — в чертеже удалить все блоки и удалить описание блока, а затем вставить новый блок из чертежа А. Короче — никак 🙂
#3 Ответ от Garik 5 апреля 2011г. 14:31:48
Re: Вставка блока с переопределением.
Спасибо за внимание!
Я имею ввиду сделать то что ручками делается через «Центр проектирования» в AutoCAD, путем выбора блока из другого открытого чертежа или по ссылке на чертеж, выделив блок в списке блоков затем вызвав контекстное меню выбрав один из пунктов «Вставить с переопределением» или «Переопределить». Вот все тоже самое только на языке VBA
#4 Ответ от Vildar 5 апреля 2011г. 14:52:07
Re: Вставка блока с переопределением.
Если нет апи метода для этого (я тоже не нашел), тогда можно врукопашную это сделать. Например, переименовать старый блок, вставить новый во все вхождения старого (учесть масштаб, угол, атрибуты), потом удалить все вхождения старого блока и удалить его.
#5 Ответ от Garik 5 апреля 2011г. 15:22:49
Re: Вставка блока с переопределением.
Дело в том, что имя блока должно остатся прежним т.к. оно подвязано к БД.
#6 Ответ от Vildar 5 апреля 2011г. 16:17:54
Re: Вставка блока с переопределением.
Имя блока и останется прежним. Поменяется ID и Handle.
Как он к базе привязан? Если только по имени, то без проблем.
#7 Ответ от Vildar 5 апреля 2011г. 16:33:22
Re: Вставка блока с переопределением.
А может быть проще все объекты в блоке копировать. Тогда точно не поменяется ни имя, ни ID, ни Handle.
#8 Ответ от Garik 5 апреля 2011г. 16:49:48
Re: Вставка блока с переопределением.
Вильдар пишет:
Если нет апи метода для этого (я тоже не нашел), тогда можно врукопашную это сделать. Например, переименовать старый блок, вставить новый во все вхождения старого (учесть масштаб, угол, атрибуты), потом удалить все вхождения старого блока и удалить его.
спасибо! это интересная идея .
#9 Ответ от Vildar 5 апреля 2011г. 18:21:08 (изменено: Вильдар, 5 апреля 2011г. 18:26:22)
Re: Вставка блока с переопределением.
Мне кажется, что скопировать объекты из блока в блок, проще будет.
Т.е.
1. Удалить все объекты из блока в чертеже В.
2. Записать все объекты из блока в чертеже А в массив.
3. Скопировать объекты в блок в чертеже В. Код примерно такой:
docA.CopyObjects objs, blockB
где, blockB это AcadBlock в чертеже B.
Добавлено.
Вот, только, с атрибутами может косяк получится, и с дин. параметрами.
Если они есть, то нужно думать дальше.
И наверно искать функцию переопределения блока в ObjectARX.
#10 Ответ от Garik 7 апреля 2011г. 14:26:07
Re: Вставка блока с переопределением.
Вильдар пишет:
Спасибо за совет.
#11 Ответ от Vildar 12 апреля 2011г. 11:35:12
Re: Вставка блока с переопределением.
Вот я дурень то, все же проще.
Нужно вставить чертеж А, как блок, потом его удалить. При этом все блоки, которые определены в чертеже А появятся в чертеже В, причем с переопределением.
Сто мельёнов раз об этом уже говорили, и я сам так делаю, как же я мог забыть. Посыпаю голову пеплом. 😳
#12 Ответ от timak 17 апреля 2011г. 09:05:22
Re: Вставка блока с переопределением.
У меня сделано кое-что по этой теме. Посмотрите, что Вам подойдет
Загрузка блока из одного файла в другой
Пользователь определяет файл-донор и блок
см. макрос «C:\ACADadd\ACADmacros\LoadBlock D21\LoadBlock.dvb»
Программист определяет файл-донор и блок
Sub loadBlock4(fileName$, blockName$)
‘Разработал В.Г. Тимаков 26.08.2008
‘Цель: Загрузка блока в активный файл из другого файла
‘Дано:
‘fileName$ — имя файла, содержащего требуемый блок
‘blockName$ — имя требуемого блока
‘Результат: Требуемый блок загружен в активный файл
‘Пример:
‘Sub t()
‘ Dim fileName$, blockName$
‘ fileName = «C:\ACADadd\LibraryRail\Стандарты ЛЖДП.dwg»
‘ blockName = «боковой штамп»
‘ Call loadBlock4(fileName$, blockName$)
‘End Sub
Вставка блока программно (InsertBlock3)
Function InsertBlock3(blName$, pBase() As Double, _
Optional Sc# = 1, Optional xs# = 1, Optional ys# = 1, Optional zs# = 1, _
Optional Layer$ = «активный», Optional blExplode As Boolean = False)
‘Разработал В.Г. Тимаков 24.06.2007
‘Цель: Вставка блока
‘пример обращения к процедуре:
‘Call InsertBlock3(blName, pBase()) ‘ без свойств
‘given:
‘blName — имя вставляемого блока
‘pBase() — координаты вставки и угол поворота блокав радианах или формулой: градусы / 180 * Pi.
‘Если угол > 0, блок поворачивается против часовой стрелки
‘Sc# = 1 — масштаб для координат точки вставки блока
‘xs# = 1 — масштаб блока по оси X. При xs < 0 блок отображается зеркально относительно оси X
‘ys# = 1 — масштаб блока по оси Y. При ys < 0 блок отображается зеркально относительно оси Y
‘zs# = 1 — масштаб блока по оси Z. При zs < 0 блок отображается зеркально относительно оси Z
‘Layer$ = «активный». AcadBlockReference вставляется в текущий слой
‘blEx — признак необходимости разрушить блок
‘установка слоя текущим
If Layer$ <> «активный» Then Call ChangeLayerCur3(Layer$)
‘определение координат точки вставки с учетом масштаба
Dim BlockRotation#, insertionPnt(0 To 2) As Double
insertionPnt(0) = pBase(0) * Sc: insertionPnt(1) = pBase(1) * Sc: insertionPnt(2) = pBase(2) * Sc
‘чтение угла поворота блока
BlockRotation = pBase(3)
‘вставка блока
Dim CurBlockRefObj As AcadBlockReference
Set CurBlockRefObj = ThisDrawing.ModelSpace.InsertBlock(insertionPnt, blName, xs, ys, zs, BlockRotation)
‘разрушение блока
If blExplode Then CurBlockRefObj.Explode
End Function
Примечание:
К блокам NUS (non-uniform scaled — не одинаковый
по масштабу) нельзя применить метод Explode
Где-то видел в справке
Вставка блока из другого файла (без загрузки?)
[Re:] Vildar (2008-10-28 10:19:54)
Привет.
В файле заготовок хранится набор нужных блоков, путь к нему в строке strDwgFileFullPath допустим. Вставляю его в текущий чертеж:
‘вставка блока из файла
ThisDrawing.ModelSpace.InsertBlock(InsertPoint, strDwgFileFullPath, 1, 1, 1, 0)
Потом удаляю. Остаются только определения блоков которые были в файле заготовок.
Вроде все нормуль. Но если это новый созданный чертеж, то выскакивает ошибка файлера. А немного погодя может и сработать.
Не пойму в чем причины этой ошибки, почему и когда она появляется и вдруг потом пропадает куда-то.
Спасибо.
[Re:] AlexV (2008-10-28 11:10:28)
Я обычно использую для аналогичных целей процедуру типа такой:
Private Sub Perenos_opisaniy_Bl(strDwgFileFullPath)
Dim I_Point(0 To 2) As Double
Dim Block_R As AcadExternalReference
I_Point(0) = 0: I_Point(1) = 0: I_Point(2) = 0
If Dir(strDwgFileFullPath) = «» Then Exit Sub
If ThisDrawing.FullName <> strDwgFileFullPath Then
Set Block_R = ThisDrawing.ModelSpace.AttachExternalReference(strDwgFileFullPath, «Name_», I_Point, 1, 1, 1, 0, False)
ThisDrawing.Blocks.Item(Block_R.Name).Bind True
Block_P.Delete
ThisDrawing.Blocks.Item(«Name_»).Delete
End If
End Sub
Вроде работает и в только созданных чертежах. Только имя «Name_» должно быть таким, что бы блоков с ним не попадалось в базе данных чертежей (или предварительно надо организовать проверку)
[Re:] AlexV (2008-10-28 11:12:29)
[Re:] Vildar (2008-10-28 13:18:28)
Благодарствую, то что нужно.
Тока Bind непойму что такое. Превращает Xref в блок?
[Re:] AlexV (2008-10-28 13:47:26)
> Vildar
« Тока Bind непойму что такое. Превращает Xref в блок? »
Типа того. Внедряет в.с. в чертеж. В противном случае в чертеже будут присутствовать слои, размерные и т.д. стили внешних ссылок (с именами типа «Name_|0»). Если же ссылку внедрить (причем именно «. Bind True», что соответствует внедрению в.с. способом вставки стандартными средствами), то префиксы все «отпадут». Конечно, слои,стили вставляемого чертежа перенесутся в чертеж текущий, но если в нем только блоки (с примитивами на «0» слое), а все лишнее вычищено, то ничего страшного.
[Re:] Vildar (2008-10-28 14:08:51)
Слов нет.
Thank you very much!
Вставка блока с атрибутами, пропустить ввод атрибутов
[Re:] Mbus (2008-10-28 13:00:50)
Здравствуйте!
я вот так вставляю блок
str_act = «(command «»_insert»» «»» & Name & «=» & Path & «»» «»» & strPt & «»» «»1″» «»1″» «»0″» ) «
ThisDrawing.SendCommand (str_act)
где Name — имя блока
Path — путь к файлу
strPT — т. вставки
все вставляется, но сразу в командной строке далее появляется запрос для ввода значения каждого атрибута данного блока, а мне надо чтобы либо вылезло окно сразу как по команде АТРЕД или просто пропустился ввод атрибутов всех махом.
Как это сделать?
[Re:] fixo (2008-10-28 13:09:31)
> Mbus
Вставь вначале
Thisdrawing.setvariable «ATTREQ», 0
Точно не помню, но вроде эта переменная
~’J’~
[Re:] Mbus (2008-10-28 13:18:03)
СПАСИБО БОЛЬШОЕ.
ATTREQ и ATTDIA то что нужно
Имя блока = имени файла
Узнал из Интернета.
Dim insPnt(0 To 2) As Double
insPnt(0) = 0
insPnt(1) = 0
insPnt(2) = 0
Вот так не работает: Call ThisDrawing.ModelSpace.InsertBlock(insPnt, «D:\test.dwg», 1, 1, 1, 0) после purge
А вот так работает: Dim mStr As String
mStr = «D:\test.dwg»
Call ThisDrawing.ModelSpace.InsertBlock(insPnt, mStr, 1, 1, 1, 0)
При вставки блока в чертеж:
Код
Dim insPnt(0 To 2) As Double
insPnt(0) = 0
insPnt(1) = 0
insPnt(2) = 0
Call ThisDrawing.ModelSpace.InsertBlock(insPnt, «D:\test.dwg», 1, 1, 1, 0)
Call ThisDrawing.ModelSpace.InsertBlock(insPnt, mStr, 1, 1, 1, 0)
получаю следующее сообщение:
Run-time error ‘-2145386445 (80200033)’
Ошибка файлера
(В англ. автокаде — Filer error)
Причем в новом файле этот код успешно выполняется (хоть несколько раз). Но если выполнить _purge — после этого этот Filer error и появляется
Содержимое test.dwg — несколько простых примитивов (пробовал различные файлы вместо test.dwg)
(Используется AutoCAD 2010)
Изменено: vlalexey — 09-11-2010 10:10:10
Переопределение блоков в AutoCAD
Блоки — отличный способ автоматизации проектных работ в AutoCAD. Часто при использовании блоков возникает необходимость переопределить уже используемые их вхождения — изменить геометрию, атрибуты, точку вставки и пр. Предлагаю сегодня рассмотреть возможные способы переопределения блоков в чертежах AutoCAD.
Расчленить и создать блок заново
Первый, самый очевидный способ — расчленить существующий блок, исправить его геометрию и атрибуты, а потом заново создать блок с тем же именем и параметрами. Процесс предельно прост: Вставляем лишний блок, расчленяем его на отдельные примитивы Изменяем по необходимости и создаем блок заново. При этом когда вы попытаетесь сохранить новый блок под тем же самым именем, система выдаст запрос на переопределение существующих вхождений блока
Согласившись, получим переопределенные блоки во всем чертеже
В этом способе важно то, что базовая точка блока и его изначальная ориентация должны остаться прежними, иначе привязка существующих блоков «слетит» и весь чертеж придет в негодность.
Вставить новый блок в файл
Обычно, одни и те же блоки используются в разных файлах. Очень легко переопределить блоки в одном из файлов, если в него вставить измененный блок из другого файла. При этом, конечно же, имя и точка вставки блоков должны совпадать. При вставке система выдаст запрос на обновление существующих вхождений блока.
Редактор блоков
Пожалуй, самый простой способ. Чтобы переопределить блок, достаточно открыть его в редакторе блоков Изменить его в соответствии с задачей и закрыть редактор.
Все вхождения блоков обновятся автоматически во всем файле.
Преимущество этого способа в том, что не нужно думать о точках вставки, ориентации и прочих параметрах блоков, которые выставляются редактором блоков в соответствии с существующими. Но будьте внимательны — в редакторе блоков за точку вставки принимается точка с координатами 0,0! Не переносите геометрию, иначе точка вставки «слетит».
Редактирование по-месту
Команда ССЫЛРЕД (_REFEDIT) позволяет редактировать блоки и внешние ссылки по-месту. Преимущество этого способа в том, что при запуске этого способа редактирования остальная часть чертежа, не относящаяся к блоку, затемняется и остается доступной для привязок, т.е. мы имеем возможность редактировать блок в контексте окружающей его геометрии. Для редактирования по месту можно ввести команду ССЫЛРЕД и выбрать блок или выбрать блок и в контекстном меню выбрать Контекстное редактирование блока Как видим, окружение блока затемнилось, но доступно для привязки
После создания нужной геометрии необходимо нажать кнопку Сохранить изменения на ленте
Все вхождения блоков переопределятся, о чем AutoCAD сообщит в командной строке
Наличие нескольких способов решить одну и ту же задачу позволяет каждому пользователю AutoCAD выбрать наиболее подходящий для себя вариант.