Как переопределить блок в автокаде
Перейти к содержимому

Как переопределить блок в автокаде

  • автор:

Обновление определения блока после обновления вставленного чертежа

  1. Если Центр управления еще не открыт, щелкните вкладку «Вставка» панель «Компоненты» Центр управления . найти
  2. В древовидном меню щелкните папку, в которой содержится файл чертежа, вставленный как блок в текущий чертеж.
  3. В области содержимого (справа от Центра управления) щелкните правой кнопкой мыши значок файла чертежа и выберите «Вставить как блок».
  4. В диалоговом окне «Вставка блока» нажать «ОК».
  5. В диалоговом окне «Блок – Повторное определение блока» нажмите «Переопределение блока».
  6. Нажать ESC для выхода из команды.
Понятия, связанные с данным
  • Изменение определений блока
  • Изменение вхождений блоков
Задачи, связанные с данной
  • Редактирование описаний блоков
  • Открытие чертежа, сохраненного в виде блока (редактор блоков)
  • Сохранение блока как файла чертежа

Работа с блоками в Центре управления

Открытие блока из окна Центра управления в редакторе блоков

  1. Перейдите на вкладку «Вид» панель «Палитры» «Центр управления» . найти
  2. Правой кнопкой мыши щелкните блок в области содержимого Центра управления и выберите «Редактор блоков».

Обновление определения блока с помощью Центра управления

  1. Перейдите на вкладку «Вид» панель «Палитры» «Центр управления» . найти
  2. Правой кнопкой мыши щелкните блок в области содержимого Центра управления и выберите «Переопределить» или «Вставить с переопределением».

Прим.: Если источником блока, который необходимо обновить, является целый файл чертежа, а не описание отдельного блока в файле чертежа, нажмите правую кнопку мыши на значке чертежа в области содержимого Центра управления. Выберите «Вставить как блок».

Понятия, связанные с данным
  • Центр управления
  • Поиск компонентов в Центре управления
  • Добавление содержимого с помощью Центра управления
Задачи, связанные с данной
  • Работа с доступом к содержимому Центра управления
  • Работа с папкой «Избранное» в Центре управления
  • Работа с загрузкой содержимого в Центр управления
  • Открытие чертежа из Центра управления

Вставка блока с переопределением.

Добрый день!
Очень нужна помощь.
Есть блоки в чертеже А и в чертеже В с одними и теми же названиями. как вставить блок из чертежа А в четреж В с переопределением или просто переопределить его в четреже В.
Заранее спасибо!

#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

Урок 05. Управление блоками в AutoCAD

Большие библиотеки содержащие блоки, должны быть хорошо структурированы и легко управляемы для того что бы быстро находить в них нужные блоки. Кроме того стоит обратить внимание на слои которые используются, при определении блоков, для того что бы получить желаемый результат при их вставке в чертеж.

Работа со слоями

При вставке блока в чертёж он определяется в текущий слой, после чего его можно переопределить в соответствующий слой. Параметры слоя в котором находится блок стандартны и представляют собой цвет линий, тип линий и их толщину. Ниже приведена таблица методов применения слоев при вставке блока с описанием результатов, хотя некоторые различия таковых незначительны.

Свойства компонентов блока и вставка объектов результаты

Графические параметры компонентов

На любом слое (кроме слоя 0 ) , с цветом, весом линий и типом линий ПОСЛОЮ Блок сохраняет свойства этого слоя. Если вставить блок в другой чертеж без этого слоя, будет автоматически создан соответствующий слой. Если вставить блок в другой чертеж с этим слоем, но слой имеет свой цвет, вес и тип линий, блок использует свойства слоя чертежа отличные от свойств блока. При вставке блока на другом слое, блок сохраняет свои свойства слоя, на котором он был создан, но в палитре свойств отображается как слой , на котором он был вставлен, потому что отображение слоя определяется объектом, а не вставленным в него компонентами. На любом слое (включая слой 0 ) , в случае если цвет, вес и тип линий установлены в слое Блок сохраняет цвет, тип линий и веса линий со свойствами, которые были установлены. Если вставить блок в другой чертеж, автоматически создается слой, на котором исходные объекты были созданы. На любом слое (кроме слоя 0 ) , с цветом, весом линий и типом линий ПОБЛОКУ Блок использует цвет текущей настройки цвета ( Если текущий цвет ПОСЛОЮ , блок использует н текущий цвет слоя). Если вставить блок в другой чертеж, создается слой на котором исходные объекты были созданы. Примечание: Если цвет, тип линий и веса линий установлены ПОБЛОКУ при создании объектов для блока, объекты всегда отображаются с черными/белый цвет, устанавливая непрерывный тип и толщину линий по умолчанию. На слое 0 (с цветом, типом линий и весом линий установлено ПОБЛОКУ или слою) Блок использует свойства слоя на котором он установлен, при вставки блока в другой чертеж никакие слои не создаются.

Как видно из таблицы, тщательный подбор свойств слоя, который используется при создании блока имеет важное значение. Два метода установки параметров объектов ПОБЛОКУ и их создание на 0 слое, создает блок-хамелеон, который принимает свойства слоя в котором он вставляется. Использование двух других методов, сохраняет свойства блока не зависимо от того в какой он слой вставляется.

Расчленение блоков

В предыдущих лекциях мы уже рассказывали о переопределении блоков. Для того что бы расчленить блок используйте команду:

Способы ввода команды:

  • Выполнить команду: Редактировать > Расчленить.
  • Ввести в командной строке РАСЧ

Расчленение блока с вложенными блоками расчленяет только верхний, вложенные блоки расчленяются в последующем.

При расчленении блоков созданных в слое 0 или с графическими параметрами ПОБЛОКУ , графические свойства объектов: толщина, цвет и тип линий, приводятся к параметру по умолчанию – черный/белый цвет линий, сплошная линия и толщина линий по умолчанию.

При изменении масштаба блока по осям, объекты сохраняют свои формы и размеры при разрушении. Например в блоке была вставлена окружность при масштабе Х,Y-1,2 окружность отображается эллипсом, после применение команды РАСЧ исходный объект останется эллипсом.

Редактирование блоков

Существует несколько способов внесения изменений в блок, не разрушая его.

Редактор блоков

Способ ввода команды:

  1. Двойной щелчок по любому вставленному в чертеж блоку
  2. Нажать пиктограмму на панели
  3. Выполнить команду Сервис > Редактор блоков
  4. Ввести в командной строке БЛОКРЕД

После вызова команды будет открыто окно Редактирование определения блока , содержащие список блоков включенных в чертеж. Для редактирования выберите необходимый блок и нажмите ОК, после чего откроется Редактор блоков . Более подробно о редакторе блоков мы расскажем в следующем уроке.

Обновление блоков

Как уже было рассказано в предыдущих уроках при изменении блока, все его копии автоматически обновляются. Но если вы вставили файл в чертеж, что бы использовать в качестве блока, а затем изменили этот файл, в текущим чертеже он не обновится. Для того что бы файл автоматически изменялся необходимо использовать внешние ссылки , о которых мы расскажем в следующей главе.

Для обновления блоков вручную, которые были вставлены из файла, необходимо повторно вставить соответствующий файл.

В процессе вставки файла, необходимо повторно указать путь к нему (стоит обратить внимание, что заменять нужно сам файл, а не блок который в нем находится), после чего появится сообщение с вопросом о пересмотре файла, нажмите ДА . После чего необходимо нажать 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
  • Видео уроки

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *