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

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

  • автор:

Удаление атрибута из блока

в данном случае, самое быстрое, выделить одинаковые блоки и в окне свойств (Ctrl+1) напротив атрибута удалить значения.

LISP, C# (ACAD 200[9,12,13,14])

Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,810

В данном случае лучше будет (ИМХО) войти в редактирование блока командой _.refedit, удалить атрибут, а потом либо _.attsync, либо _.battman

__________________
Моя библиотека lisp-функций

Обращение ко мне — на «ты».
Все, что сказано — личное мнение.

Кулик Алексей aka kpblc
Посмотреть профиль
Посетить домашнюю страницу Кулик Алексей aka kpblc
Найти ещё сообщения от Кулик Алексей aka kpblc

Для удаления атрибута из определения блока и из всех вхождений блоков

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

Для обновления измененных атрибутов в существующих вхождениях блоков

  1. Выберите Главная вкладка Блок панель Управление атрибутами. В командной строке введите «диспатблк».
  2. В Диспетчере атрибутов блоков выбрать блок из списка или нажать «Выбрать блок» для указания блока в графической области.
  3. Нажать «Обновить» для обновления измененных атрибутов во всех вхождениях, связанных с выбранным блоком.

Для обновления атрибутов во вхождениях, связанных с выбранным описанием блока

  1. Выберите вкладку «Главная» панель «Блок» «Обновить атрибуты». В командной строке введите атробновить.
  2. Выполнить одно из действий:
    • Ввести имя, затем ввести имя блока, вхождения которого следует обновить.
    • Введите ? для получения списка блоков, затем введите имя и имя блока.
    • Нажмите Enter и затем укажите блок в области чертежа с помощью устройства указания.

При вводе имени несуществующего блока или при выборе блока, не имеющего атрибутов, появляется сообщение об ошибке.

Другой способ

  1. Выберите Главная вкладка Блок панель Редактировать атрибуты раскрывающийся список Один. В командной строке введите «атредакт».
  2. В графической области выбрать блок для редактирования.
  3. В Редакторе атрибутов блоков выбрать атрибут для редактирования. Пользователь может изменить значение атрибута или перейти на другую вкладку для редактирования других свойств атрибута.
  4. Внести необходимые изменения и затем выполнить одно из следующих действий:
    • Нажать «Применить» для сохранения изменений. Редактор атрибутов блоков остается открытым.

При нажатии кнопки «Отмена» для выхода из Редактора атрибутов блоков все изменения, сохраненные нажатием кнопки «Применить», остаются в силе.

  • Нажать «OK» для сохранения изменений и выхода из Редактора атрибутов блоков.
  • Нажать «Выбрать блок» для редактирования атрибутов другого блока. Если выполненные изменения для текущего блока не были сохранены, то перед началом выбора нового блока выдается запрос на сохранение.

Разделение блока на составляющие (расчленение)

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

  • Создать определение нового блока
  • Переопределить определение имеющегося блока
  • Сохранить объекты в разрозненном виде для различных целей

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

Имеется возможность автоматического расчленения блоков на месте создаваемых вхождений блоков путем установки флажка «Расчленить» в диалоговом окне «Вставка».

Управление свойствами при расчленении объекта

  1. Введите расчленить
  2. Выберите объекты для расчленения.
  3. Если выбрано более одного объекта, введите и с целью управления свойствами для индивидуальных объектов либо введите г с целью управления свойствами для всех выбранных объектов.
  4. Введите опцию для свойства, которое необходимо изменить.

Свойство применяется к составному объекту, и заново выводится подсказка.

  1. Введите другую опцию или введите р для расчленения выбранных объектов.

Выбранные объекты расчленяются, и указанные свойства применяются к компонентным объектам.

Диалоговое окно «Определение блока»

Краткий справочник

Служит для создания определения блока и присвоения ему имени.

Способы доступа

Лента: Главная вкладка Блок панель СоздатьНедоступна на ленте в текущем рабочем пространстве.

Меню: Рисование Блок СоздатьНедоступно в меню в текущем рабочем пространстве.

Панель: Рисование

Ввод команды: блок

Список параметров

Отображаются следующие параметры.

Имя, присваиваемое блоку. Имя может содержать до 255 символов и состоять из букв, цифр, пробелов и любых специальных символов, не используемых операционной системой или этой программой в других целях.

Определение блока сохраняется в текущем чертеже.

Если существующий блок выбран в разделе «Имя», выполняется предварительный просмотр блока.

Базовая точка

Задание базовой точки вставки блока. Значение по умолчанию 0,0,0.

Указать на экране

Отображение запроса на указание базовой точки при закрытии диалогового окна.

Указать базовую точку вставки

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

Значение координаты по оси X.

Значение координаты по оси Y.

Значение координаты по оси Z.

Задает объекты, включаемые в блок, а также поведение программы по отношению к ним после создания блока.

Указать на экране

Отображается запрос на указание объекта при закрытии диалогового окна.

Выбрать объекты

Временное закрытие диалогового окна, для того чтобы пользователь мог выбрать нужные объекты для блока на чертеже. По завершении выбора объектов и нажатии Enter диалоговое окно «Описания блоков» вновь появляется на экране.

Быстрый выбор

Отображает диалоговое окно «Быстрый выбор», в котором можно выбирать объекты по их свойствам.

Выбранные объекты остаются в чертеже без изменений.

Преобразовать в блок

Выбранные объекты преобразуются во вхождение только что созданного блока.

Выбранные объекты удаляются из чертежа.

Выбрано объектов

Вывод информации о количестве выбранных объектов.

Задает режим работы блока.

Аннотативный

Указывается на то, что блок является аннотативный. Это свойство позволяет автоматизировать процесс масштабирования аннотаций для вывода на печать или отображения в соответствии с требуемым форматом листа бумаги.

Ориентация блока по листу

Позволяет согласовать ориентацию вхождений блока на видовых экранах пространства листа с ориентацией листа. Данная опция недоступна, если отменена опция «Аннотативный».

Одинаковый масштаб

Указывает, защищено ли вхождение блока от применения разного масштаба.

Разрешить расчленение

Указывает, возможно ли расчленение вхождения блока

Параметры для блока.

Единицы блока

Указывает единицы вставки для вхождения блока.

Гиперссылка

Вызов диалогового окна «Вставка гиперссылки», в котором можно связать гиперссылку с описанием создаваемого блока.

Указывает описание текста блока.

Открыть в редакторе блоков

Открывает текущее определение блока в Редактор блоков при нажатии «ОК».

Диалоговое окно «Определение атрибута»

Краткий справочник

Здесь задаются режим атрибута, его имя, подсказка и начальное значение, а также точка вставки и параметры текста.

Способы доступа

Лента: Главная вкладка Блок панель Задание атрибутовНедоступна на ленте в текущем рабочем пространстве.

Меню: Рисование Блок Задание атрибутовНедоступно в меню в текущем рабочем пространстве.

Ввод команды: атопр

Список параметров

Отображаются следующие параметры.

Параметры значений атрибутов блоков, которые вставляются в чертеж.

Значения по умолчанию хранятся в системной переменной AFLAGS. Изменение значения AFLAGS приводит к изменению режима по умолчанию для описаний новых атрибутов и не влияет на описания уже существующих.

Указывает, что значение атрибута вставленного блока не должно быть видно на экране или выводиться на печать. АТЭКР переопределяет скрытый режим.

Задает фиксированное значение атрибута для всех вхождений блока.

Контролируемый

Позволяет проверить правильность значения атрибута во время процесса вставки блока.

Установленный

Присваивает атрибуту при вставке блока значение по умолчанию.

Фиксированное положение

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

Многострочный

При выборе этого параметра значение атрибута может содержать несколько строк текста. В этом случае можно задать ширину рамки атрибута.

ПримечаниеВ динамическом блоке положение атрибута должно быть зафиксировано для включения атрибута в набор операции.

Задание данных атрибута.

Имя атрибута, по которому могут быть установлены все его вхождения в чертеж. Имя может состоять из любых символов, кроме пробелов. Все строчные буквы автоматически преобразуются в прописные.

Подсказка атрибута, выводимая на экран всякий раз при вставке блока, содержащего данный атрибут. Если оставить поле подсказки пустым, AutoCAD будет использовать в качестве подсказки имя атрибута. Если в группе «Режим» включена опция «Постоянный», поле «Подсказка» недоступно.

По умолчанию

Значение, которое присваивается атрибуту по умолчанию.

Добавление поля

Отображается диалоговое окно «Поле». Пользователь может вставить поле в качестве всего значения атрибута или только его части.

Кнопка редактора многострочного текста

Если выбран режим многострочного текста, вызывается контекстный текстовый редактор с панелью форматирования текста и линейкой. В зависимости от значения системной переменной ATTIPE панель «Форматирование текста» отображается полностью или в сокращенном варианте.

Более подробная информация приведена в разделе Контекстный редактор.

ПримечаниеНекоторые функции в полной версии контекстного текстового редактора отображаются серым цветом и не доступны; это сделано для обеспечения совместимости с однострочными атрибутами.

Точка вставки

Задается положение атрибута. Здесь можно ввести численные значения координат или, нажав кнопку «Указать на экране», определить точку вставки атрибута относительно тех объектов, с которыми связан этот атрибут.

Указать на экране

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

Указывает координату X для точки вставки атрибута.

Указывает координату Y для точки вставки атрибута.

Указывает координату Z для точки вставки атрибута.

Параметры текста

Здесь задаются выравнивание, текстовый стиль, высота и угол поворота текста атрибута.

Выравнивание

Задается выравнивание текста атрибута. Описание параметров выравнивания см. в разделе ТЕКСТ.

Текстовый стиль

Заранее определенный текстовый стиль для текста атрибута. Отображается текстовый стиль, загруженный в настоящий момент. Дополнительные сведения о загрузке или создании текстовых стилей см. в разделе СТИЛЬ.

Аннотативный

Указывает, что атрибут — аннотативный. Если блок является аннотативным, ориентация атрибута совпадает с ориентацией блока. Щелкните информационный значок, чтобы узнать больше об аннотативных объектах.

Высота текста

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

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

Ширина рамки

Задание максимального значения длины строк текста в многострочном атрибуте, при превышении которого выполняется перенос на следующую строку. Если задано значение 0,000, ограничение на длину строк текста отсутствует.

Параметр не доступен для однострочных атрибутов.

Выровнять по предыдущему атрибуту

Размещение имени атрибута непосредственно под именем предыдущего. Если еще не было создано ни одного описания атрибута, опция недоступна.

Домашнее задание: Начертить электрическую цепь с применением блоков.

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

Панель: Редактирование

Меню: Редактирование Объект Атрибут Диспетчер атрибутов блоков В командной строке введите «диспатблк».

Ввод команды: диспатблк

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

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

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

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

Если сразу после изменения атрибутов выбрать новый блок, на экране появится запрос о сохранении внесенных изменений.

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

Список атрибутов

Отображает свойства каждого атрибута в выбранном блоке.

Блоки, обнаруженные в чертеже

Число вхождений выбранного блока в текущем чертеже.

Блоки, обнаруженные в текущем пространстве

Число вхождений выбранного блока в текущем пространстве модели или листа.

Обновление всех выбранных блоков с учетом измененных свойств атрибутов. Эта опция не изменяет значения, присвоенные атрибутам блоков.

Перемещение выбранного атрибута вверх по порядку следования. Эта опция недоступна, если выбран постоянный атрибут.

Перемещение выбранного атрибута вниз по порядку следования. Эта опция недоступна, если выбран постоянный атрибут.

Вызов диалогового окна «Редактирование атрибута» , где редактируются свойства атрибута.

Исключение выбранного атрибута из описания блока. Если перед выбором этой опции в диалоговом окне «Параметры» активизировать опцию «Применять к имеющимся вхождениям», атрибуты будут исключены из всех блоков текущего чертежа. Опция недоступна для блоков с одним атрибутом.

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

Применяет внесенные изменения без закрытия диалогового окна.

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

Есть достаточно причин для того чтобы комбинировать растровые и векторные изображения в одном рисунке, это могут быть космические снимки, отсканированные чертежи и т.д. Растровые изображения можно представить в виде решетки, каждый элемент которой называют пискелем. Растры могут быть скопированы, перемещены, обрезаны по прямоугольнику или полигону. Некотрые из поддерживаемых форматов могут отображать прозрачные пиксели. Растры могут быть монохромными, 8-бит градации серого, 8-бит цветные и 24-бит цветные. Тип файла Autocad определяет не по его расширению, а по содержимому.

 Тип растрового изображения расширение BMP Windows и OS/2 обычно .bmp, .dib, .rle CALS-I Mil-R-Raster I .gp4, .mil, .rst, .cg4, .cal GeoSPOT GeoSPOT .bil IG4 Image System Group 4 .ig4 IGS Image System Grayscal .igs JPEG Joint Photogr. Expert .jpg FLIC FLIC Autodesk Animator .flc, .fli PCX Picture PC Paintbrush .pcx PICT Picture Macintosh .pct PNG Portable Network Grapf .png RLC Run Length Compresson .rlc TARGA True Vision Raster .tga TIF Tagged Image Format .tif 

ПРИСОЕДИНЕНИЕ И МАСШТАБИРОВАНИЕ РАСТРОВОГО ИЗОБРАЖЕНИЯ

Растры вставленные в рисунок Autocadа на самом деле не являются его частью, а только ссылкой, и не сильно увеличивают размер файла. Добавление растра выполняется методом AddRaster который на входе принимает 4 параметра: имя растра, точку вставки, фактор масштабирования и вращения. После присоединения растра его можно в любое время отсоединить. Каждый из них обладает собственной границей обрезки, яркостью, контрастностью и прозрачностью.
Фактор масштабирования можно задать при создании растрового объекта чтобы его единицы измерения совпадали с остальными. Если вставлять растр, то его фактор масштабирования по-умолчанию = 1 в единицах вычерчивания. Чтоб задать реальный масштаб — нужно знать размеры изображения, при этом очень удобно, когда в самой картинке хранятся данные о числе точек (пикселей) на дюйм DPI и размеры в пикселях. Если это так, например картинка сканировалась в 1 дюйме 50 футов, то есть 1:600, и единицы вычерчивания в Autocad дюймы, то фактор масштабирования будет 600. Пример вставки растра:

 Sub AttachingARaster() Dim insertionPoint(0 To 2) As Double Dim scalefactor As Double Dim rotationAngle As Double Dim imageName As String Dim rasterObj As AcadRasterImage imageName = "C:/Acad2000/sample/watch.jpg" insertionPoint(0) = 5: insertionPoint(1) = 5: insertionPoint(2) = 0 scalefactor = 2: rotationAngle = 0 On Error GoTo ERRORHANDLER ' Вставить растр в пространство модели Set rasterObj = ThisDrawing.ModelSpace.AddRaster(imageName, _ insertionPoint, scalefactor, rotationAngle) ZoomExtents Exit Sub ERRORHANDLER: MsgBox Err.Description End Sub 

УПРАВЛЕНИЕ РАСТРОВЫМИ ИЗОБРАЖЕНИЯМИ

Для того чтобы сменить путь к файлу изображения достаточно изменить значение свойства ImageFile , если Autocad не может найти растр, то он вырезает из имени растра путь (как абсолютный так и относительный) и продолжает поиск по пути указанному в методе SetProjectFilePath для объекта Preferences . При вставке растра Autocad присваивает ему имя основываясь на имени файла, без указания пути и расширения, его можно менять не боясь, что изменится и значение пути к файлу.

МОДИФИКАЦИЯ ИЗОБРАЖЕНИЙ И ГРАНИЦ

Все растры имеют границы. Границы можно отобразить (скрыть), изменить цвет и тип линий, слой, переместить, масштабировать и вращать, делать растр невидимым и прозрачным, менять яркость, контрастность и т.д. Скрытие границ изображения позволяет избежать его случайного смещения и затрагивает все изображения. Чтобы изменить слой, цвет и тип линий границ — меняй значения свойств Layer, Color, LineType . Для изменения фактора масштабирования, вращения, положения, ширины и высоты есть следующие методы и свойства: ScaleEntity, Rotate, Origin, Width (в пикселях), Height (в пикселях), ImageWidth (в единицах вычерчивания), ImageHeight (в единицах вычерчивания), ShowRotation .
Для изменения видимости изображения установи значение ImageVisibility=FALSE , это ускорит регенерацию.
Для изменения прозрачности и цвета двуцветных (чернобелых) растров есть свойства Color и Transparency .
Для регулировки Яркости, Контрастности и Затенения есть следующие свойства Brightness, Contrast, Fade .
Подрезку изображений с помощью прямоугольных и полигональных границ можно выполнять независимо для каждой вставки одного и того же изображения. Для подрезки сначала следует включить ClippingEnabled=TRUE , затем методом ClipBoundary принимающим массив границ выполняем подрезку.
Для изменения существующих границ подрезки нужно просто повторить то что сказано выше, при этом старые границы пропадут. Чтобы отобразить (скрыть) границу подрезки (вернуть оригинальные границы) используй свойство ClippingEnabled .
Пример подрезки растрового изображения:

 Sub ClippingRasterBoundary() Dim insertionPoint(0 To 2) As Double Dim scalefactor As Double Dim rotationAngle As Double Dim imageName As String Dim rasterObj As AcadRasterImage imageName = "C:\AutoCAD\sample\downtown.jpg" insertionPoint(0) = 5: insertionPoint(1) = 5: insertionPoint(2) = 0 scalefactor = 2: rotationAngle = 0 On Error GoTo ERRORHANDLER ' Вставить растр в пространство модели Set rasterObj = ThisDrawing.ModelSpace.AddRaster(imageName, insertionPoint, _ scalefactor, rotationAngle) ZoomExtents ' Задать границы подрезки в виде массива точек Dim clipPoints(0 To 9) As Double clipPoints(0) = 6: clipPoints(1) = 6.75 clipPoints(2) = 7: clipPoints(3) = 6 clipPoints(4) = 6: clipPoints(5) = 5 clipPoints(6) = 5: clipPoints(7) = 6 clipPoints(8) = 6: clipPoints(9) = 6.75 ' Подрезать rasterObj.ClipBoundary clipPoints ' Разрешить отображение подрезки rasterObj.ClippingEnabled = True ThisDrawing.Regen acActiveViewport Exit Sub ERRORHANDLER: MsgBox Err.Description End Sub 

РАБОТА С БЛОКАМИ И АТРИБУТАМИ

Используя внешние ссылки монжно вставлять или накладывать в рисунок другой рисунок, при этом любые изменения сделанные во вставленном рисунке будут отображаться в основном.

Блок представляет собой набор объектов который может быть собран в один объект или блочную ссылку. Полученный блок можно вращать, масштабировать, вставлять многократно как единое целое, но можно также «взорвать» на исходные составляющие, чтобы переопределить. Autocad обновляет все вхождения блока, после того как блок был переопределен. Использование блоков ускоряет процесс вычерчивания. Их можно применять, например, для построения стандартной библиотеки наиболее часто используемых символов, для экономии места на диске, когда вместо множества подобных объектов вставляется ссылка на один объект. Как только блок вставлен в рисунок — создается блочная ссылка. Каждый раз вставляя блочную ссылку можно назначить масштаб и угол вращения, причем масштаб может быть различен по каждой оси координат.

Блоки могут наследовать цвета и типы линий от того слоя в котором расположены элементы их составляющие. При каждой вставке они создают соответствующие слои и типы линий. Блочная ссылка, состоящая из объектов нарисованных на слое 0, с цветом и типом линий «по слою», помещенная на текущий слой наследует цвет и тип линий у слоя. Свойства текущего слоя заменяют свойства цвета и типа линий явно заданные блочной ссылке.
Блочная ссылка, состоящая из объектов у которых цвет и тип линий заданы «по блоку» позволяет назначать их вставленной блочной ссылке, т.е. если сменить цвет блока на красный то изменится цвет всех элементов. Блоки могут быть вложенными, единственное ограничение в том, что блок не может ссылаться сам на себя. Для создания нового блока используется метод Add который требует два параметра — место размещения блока и имя блока. После создания к блоку можно добавлять любые геометрические объекты или другие блоки, после чего можно вставлять в рисунок вхождения блока. Можно также создать блок методом Wblock группируя объекты во внешний файл. Autocad рассматривает любой чертеж вставленный в текущий как блок. Метод InsertBlock используется для вставки блочной ссылки в рисунок, он принимает шесть параметров: точка вставки, имя вставляемого блока, масштабы по осям координат (три параметра), и угол поворота.
Если после вставки блока из внешнего файла во внешнем файле произошли изменения, то это не отражается на вставленном блоке, если необходимо видеть изменения, то блок следует вставить повторно методом InsertBlock . При вставке рисунка в качестве блока имя блока присваивается по имени вставленного файла. Изменить имя блока можно сменив значение свойства Name . По умолчанию для вставки Autocad использует координаты (0,0,0) как координаты базовой точки. Изменить координаты базовой точки можно методом SetVariable для переменной INSBASE . При следующей вставке будет использоваться новая базовая точка. Если вставленный рисунок содержит объекты пространства листа, они не будут включены в текущее определение блока. Для использования объектов пространства листа в другом рисунке откройте исходный рисунок и используйте метод Add чтобы определить объект пространства листа как блок. Вставлять рисунок можно как в пространство модели так и в пространство листа. Составляющие блок объекты не могут быть перечисленны, однако возможно перечисление оригинального определения блока, можно так же взорвать блок для этой цели. Вставлять блок можно также методом AddMInsertBlock , который вставляет массив блоков. Пример определения и вставки блока:

 Sub InsertingABlock() ' Определим блок Dim blockObj As AcadBlock Dim insertionPnt(0 To 2) As Double insertionPnt(0) = 0: insertionPnt(1) = 0: insertionPnt(2) = 0 Set blockObj = ThisDrawing.Blocks.Add(insertionPnt, "CircleBlock") ' Добавим в блок окружность Dim circleObj As AcadCircle Dim center(0 To 2) As Double Dim radius As Double center(0) = 0: center(1) = 0: center(2) = 0: radius = 1 Set circleObj = blockObj.AddCircle(center, radius) ' Вставим блок Dim blockRefObj As AcadBlockReference insertionPnt(0) = 2: insertionPnt(1) = 2: insertionPnt(2) = 0 Set blockRefObj = ThisDrawing.ModelSpace.InsertBlock _ (insertionPnt, "CircleBlock", 1#, 1#, 1#, 0) ZoomExtents MsgBox "Окружность стала блоком " & blockRefObj.ObjectName End Sub 

Примечание: после вставки внешнего файла WCS выравнивается параллельно плоскости XY, UCS текущего рисунка.
Метод Explode позволяет разбить блок на составляющие, после чего удалить или отредактировать и переопределить блок. Следующий пример создает блок, затем его взрывает и показывает составляющие.

 Sub ExplodingABlock() ' Определим блок Dim blockObj As AcadBlock Dim insertionPnt(0 To 2) As Double insertionPnt(0) = 0: insertionPnt(1) = 0: insertionPnt(2) = 0 Set blockObj = ThisDrawing.Blocks.Add(insertionPnt, "CircleBlock") ' Добавим окружность Dim circleObj As AcadCircle Dim center(0 To 2) As Double Dim radius As Double center(0) = 0: center(1) = 0: center(2) = 0: radius = 1 Set circleObj = blockObj.AddCircle(center, radius) ' Вставим блок Dim blockRefObj As AcadBlockReference insertionPnt(0) = 2: insertionPnt(1) = 2: insertionPnt(2) = 0 Set blockRefObj = ThisDrawing.ModelSpace.InsertBlock _ (insertionPnt, "CircleBlock", 1#, 1#, 1#, 0) ZoomExtents MsgBox "Окружность стала " & blockRefObj.ObjectName ' Взорвем блочную ссылку Dim explodedObjects As Variant explodedObjects = blockRefObj.Explode ' Перечислим полученные обломки Dim I As Integer For I = 0 To UBound(explodedObjects) explodedObjects(I).Color = acRed explodedObjects(I).Update MsgBox "Обломок " & I & ": " & explodedObjects(I).ObjectName explodedObjects(I).Color = acByLayer explodedObjects(I).Update Next End Sub 

ПЕРЕОПРЕДЕЛЕНИЕ БЛОКА

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

 Sub RedefiningABlock() ' Определим блок Dim blockObj As AcadBlock Dim insertionPnt(0 To 2) As Double insertionPnt(0) = 0: insertionPnt(1) = 0: insertionPnt(2) = 0 Set blockObj = ThisDrawing.Blocks.Add(insertionPnt, "CircleBlock") ' Добавим окружность Dim circleObj As AcadCircle Dim center(0 To 2) As Double Dim radius As Double center(0) = 0: center(1) = 0: center(2) = 0: radius = 1 Set circleObj = blockObj.AddCircle(center, radius) ' Вставим блок Dim blockRefObj As AcadBlockReference insertionPnt(0) = 2: insertionPnt(1) = 2: insertionPnt(2) = 0 Set blockRefObj = ThisDrawing.ModelSpace.InsertBlock _ (insertionPnt, "CircleBlock", 1#, 1#, 1#, 0) ZoomExtents ' Переопределим блок circleObj.radius = 3 blockRefObj.Update End Sub 

РАБОТА С АТРИБУТАМИ

Атрибуты позволяют присоединить к блоку текст комментария. Атрибуты можно извлекать и помещать в базу данных или электронную таблицу. С блоком может быть связано более одного атрибута. Можно определять постоянные атрибуты, которые при вставке блока не требуют ввода значения. Атрибуты могут быть невидимыми. Чтобы создать атрибутную ссылку сначала следует определить атрибут методом AddAttribute который требует шесть параметров: высота текста, режим, строка подсказки, точка вставки, строка — имя атрибута, значение атрибута по-умолчанию. Режим указывать не обязательно (возможны следующие варианты acAttributeModeNormal, acAttributeModeInvisible, acAttributeModeConstant, acAttributeModeVerify, acAttributeModePreset . Если нужно указать несколько атрибутов, то следует просто сложить константы им соответствующие, например acAttributeModeInvisible + acAttributeModeConstant )
Строка подсказки появляется при вставке блока с атрибутами, по-умолчанию ее значение равно имени (тэгу) атрибута. При acAttributeModeConstant подсказка не выводится. В качестве тэгов можно использовать любые символы кроме пробелов и восклицательных знаков, символы нижнего регистра преобразуются в верхний. После того как атрибут определен при вставке блока можно указать другое значение атрибута. Атрибуты связаны с блоком в котором они создавались. Атрибуты созданные в пространстве модели или листа рассматриваются как не принадлежащие к блокам. Пример определения атрибутов:

 Sub CreatingAnAttribute() ' Определим блок Dim blockObj As AcadBlock Dim insPnt(0 To 2) As Double insPnt(0) = 0: insPnt(1) = 0: insPnt(2) = 0 Set blockObj = ThisDrawing.Blocks.Add(insPnt, "BlkWithAttr") ' Добавим к нему атрибут Dim attributeObj As AcadAttribute Dim height As Double Dim mode As Long Dim prompt As String Dim insPoint(0 To 2) As Double Dim tag As String Dim value As String height = 1 mode = acAttributeModeVerify prompt = "New Prompt" insPoint(0) = 5: insPoint(1) = 5: insPoint(2) = 0 tag = "New Tag": value = "New Value" Set attributeObj = blockObj.AddAttribute(height, mode, prompt, insPoint, tag, value) ' Вставим блок, создадим блочную ссылку и атрибутную ссылку Dim blockRefObj As AcadBlockReference insPnt(0) = 2: insPnt(1) = 2: insPnt(2) = 0 Set blockRefObj = ThisDrawing.ModelSpace.InsertBlock(insPnt, "BlkWithAttr", 1#, 1#, 1#, 0) End Sub 

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

Свойства
Alignment — задает горизонтальное и вертикальное выравнивание
Backward — задает направление текста
FieldLength — задает ширину поля
Height — задает высоту атрибута
InsertionPoint — задает точку вставки
Mode — один из режимов
PromptString — строка подсказки
Rotation — вращение
ScaleFactor — фактор масштабирования
TagString — имя атрибута

Методы
ArrayPolar — создать полярный массив
ArrayRectangular — создать прямоугольный массив
Copy — копировать атрибут
Erase — удалить атрибут
Mirror — зеркально отразить
Move — передвинуть
Rotate — вращать
ScaleEntity — масштабировать

Переопределение атрибутов

 Sub RedefiningAnAttribute() ' Определим блок Dim blockObj As AcadBlock Dim insPnt(0 To 2) As Double insPnt(0) = 0: insPnt(1) = 0: insPnt(2) = 0 Set blockObj = ThisDrawing.Blocks.Add(insPnt, "BlkWithAttr") ' Добавим атрибут Dim attributeObj As AcadAttribute Dim height As Double Dim mode As Long Dim prompt As String Dim insPoint(0 To 2) As Double Dim tag As String Dim value As String height = 1 mode = acAttributeModeVerify prompt = "New Prompt" insPoint(0) = 5: insPoint(1) = 5: insPoint(2) = 0 tag = "New Tag": value = "New Value" Set attributeObj = blockObj.AddAttribute(height, mode, prompt, insPoint, tag, value) ' Вставим блок, создадим блочную и атрибутную ссылки Dim blockRefObj As AcadBlockReference insPnt(0) = 2: insPnt(1) = 2: insPnt(2) = 0 Set blockRefObj = ThisDrawing.ModelSpace.InsertBlock(insPnt, "BlkWithAttr", 1#, 1#, 1#, 0) ' Переопределим направление текста attributeObj.Backward = True attributeObj.Update End Sub 

Извлечение информации из атрибутов

Для извлечения атрибутов есть два метода GetAttributes и GetConstantAttributes . Первый из них возвращает массив атрибутных ссылок присоединенных к блоку. Второй метод возвращает массив постоянных атрибутов (не ссылок). По полученному массиву можно пройти, просматривая свойства TagString и TextString для получения информации о каждом атрибуте. Пример извлечения атрибутов:

 Sub GettingAttributes() ' Создаем блок Dim blockObj As AcadBlock Dim insPnt(0 To 2) As Double insPnt(0) = 0: insPnt(1) = 0: insPnt(2) = 0 Set blockObj = ThisDrawing.Blocks.Add(insPnt, "TESTBLOCK") ' определим атрибуты Dim attributeObj As AcadAttribute Dim height As Double Dim mode As Long Dim prompt As String Dim insPoint(0 To 2) As Double Dim tag As String Dim value As String height = 1# mode = acAttributeModeVerify prompt = "Attribute Prompt" insPoint(0) = 5: insPoint(1) = 5:insPoint(2) = 0 tag = "Attr Tag" value = "Attr Value" ' Создаем определение атрибута в блоке Set attributeObj = blockObj.AddAttribute(height, mode, prompt, insPoint, tag, value) ' Вставим блок Dim blockRefObj As AcadBlockReference insPnt(0) = 2: insPnt(1) = 2: insPnt(2) = 0 Set blockRefObj = ThisDrawing.ModelSpace.InsertBlock(insPnt, "TESTBLOCK", 1, 1, 1, 0) ZoomAll ' Получить атрибуты для блочной ссылки Dim varAttributes As Variant varAttributes = blockRefObj.GetAttributes ' Поместим Тэг и содержимое текстовой части ' атрибута в Msgbox Dim strAttributes As String strAttributes = "" Dim I As Integer For I = LBound(varAttributes) To UBound(varAttributes) strAttributes = strAttributes + " Tag: " + _ varAttributes(I).TagString + vbCrLf + _ " Value: " + varAttributes(I).textString Next MsgBox "Атрибуты для блочной ссылки " + _ blockRefObj.Name & " : " & vbCrLf & strAttributes ' Изменим значение атрибута ' Не SetAttributes. Если есть массив то он является объектом. ' Изменение его изменияе объекты чертежа. varAttributes(0).textString = "NEW VALUE!" ' Снова получим атрибуты Dim newvarAttributes As Variant newvarAttributes = blockRefObj.GetAttributes ' Снова отобразим strAttributes = "" For I = LBound(varAttributes) To UBound(varAttributes) strAttributes = strAttributes + " Tag: " + _ newvarAttributes(I).TagString + vbCrLf + _ " Value: " + newvarAttributes(I).textString Next MsgBox "Атрибуты для блочной ссылки " & _ blockRefObj.Name & " : " & vbCrLf & strAttributes End Sub 

ИСПОЛЬЗОВАНИЕ ВНЕШНИХ ССЫЛОК

Внешняя ссылка связывает другой рисунок с текущим. При вставке другого рисунка как блока информация о его геометрии сохраняется в базе рисунка. Она не обновляется если исходный рисунок изменился. Однако если вставлять как внешнюю ссылку, все изменения сразу отображаются. Подобно блочной ссылке внешняя ссылка отображается в рисунке единым объектом, однако вненяя ссылка не может быть «взорвана», как и с блоками можно создавать вложения внешних ссылок.
При открытии или печати рисунка Autocad перезагружает каждую внешнюю ссылку, чтобы отобразить ее в «свежайшем» виде. В отличие от блока при вставке внешней ссылки в чертеж вставляется только определение, а не сам файл. Если файл внешней ссылки отсутствует или поврежден, то Autocad его просто не отображает. Если значение системной переменной VISRETAIN=On Autocad сохраняет любую информацию о зависимых от внешней ссылки слоях в базе данных чертежа и она используется при следующем открытии. Можно вставлять неограниченное (?) число внешних ссылок. Можно также управлять слоями и типами линий внешней ссылки. Для добавления внешней ссылки используй метод AttachExternalReference он требует путь и имя вставляемого файла, имя ссылки, точку вставки, масштаб и угол вращения и возвращает объект ExternalReference . Пример:

 Sub AttachingExternalReference() On Error GoTo ERRORHANDLER Dim InsPoint(0 To 2) As Double Dim insertedBlock As AcadExternalReference Dim tempBlock As AcadBlock Dim msg As String, PathName As String ' определим внешнюю ссылку InsPoint(0) = 1: InsPoint(1) = 1: InsPoint(2) = 0 PathName = "c:/acad2002/sample/db_samp.dwg" ' Отобразим информацию о блоках GoSub ListBlocks ' Добавим внешнюю ссылку Set insertedBlock = ThisDrawing.ModelSpace. _ AttachExternalReference(PathName, "XREF_IMAGE", InsPoint, 1, 1, 1, 0, False) ZoomExtents ' Отобразим информацию о блоках GoSub ListBlocks Exit Sub ListBlocks: msg = vbCrLf For Each tempBlock In ThisDrawing.Blocks msg = msg & tempBlock.Name & vbCrLf Next MsgBox "Блоки в чертеже: " & msg Return ERRORHANDLER: MsgBox Err.Description End Sub 

Наложение внешних ссылок подобно присоединению, отличие только в том как обрабатываются вложенные ссылки. В случае наложения — вложенные ссылки просто не отображаются. Наложение удобно использовать толгда когда конечному потребителю по-барабану дополнительные детали созданного вами чертежа, который используется в качестве внешней ссылки. То есть этот тип ссылок предназначен для совместного использования данных, кроме того он позволяет избежать цикличесских ссылок. Чтобы ссылка была наложением измени параметр метода AttachExternalReference на bOverlay=TRUE . Для исключения ссылки из рисунка нужно его оттсоединить, можно также стереть конкретное вхождение ссылки. Ссылка самоуничтожается при следующем открытии чертежа, если уже нет ни одного ее вхождения. Для отсоединения ссылки используй метод Detach . Нельзя, однако отсоединить вложенную ссылку. Пример отсоединения ссылки:

 Sub DetachingExternalReference() On Error GoTo ERRORHANDLER ' Определим внешнюю ссылку Dim xrefHome As AcadBlock Dim xrefInserted As AcadExternalReference Dim insertionPnt(0 To 2) As Double Dim PathName As String insPnt(0) = 1: insPnt(1) = 1: insPnt(2) = 0 PathName = "c:/acad2002/sample/db_samp.dwg" ' Добавим внешнюю ссылку Set xrefInserted = ThisDrawing.ModelSpace. _ AttachExternalReference(PathName, "XREF_IMAGE", insPnt, 1, 1, 1, 0, False) ZoomExtents MsgBox "Внешняя ссылка присоединена." ' Остосединим внешнюю ссылку Dim name As String name = xrefInserted.name ThisDrawing.Blocks.Item(name).Detach MsgBox "Внешняя ссылка отсоединена." Exit Sub ERRORHANDLER: MsgBox Err.Description End Sub 

Выгрузка внешних ссылок

Для ускорения работы часть (или все) внешних ссылок можно выгрузить методом Unload . Пример:

 Sub UnloadingExternalReference() On Error GoTo ERRORHANDLER ' Определим внешнюю ссылку Dim xrefHome As AcadBlock Dim xrefInserted As AcadExternalReference Dim insPnt(0 To 2) As Double Dim PathName As String insPnt(0) = 1: insPnt(1) = 1: insPnt(2) = 0 PathName = "c:/AutoCAD/sample/db_samp.dwg" ' Добавим внешнюю ссылку Set xrefInserted = ThisDrawing.ModelSpace. _ AttachExternalReference(PathName, "XREF_IMAGE", insPnt, 1, 1, 1, 0, False) ZoomExtents MsgBox "Добавлена внешняя ссылка." ' Выгрузим определение внешней ссылки ThisDrawing.Blocks.Item(xrefInserted.name).Unload MsgBox "Внешняя ссылка выгружена." Exit Sub ERRORHANDLER: MsgBox Err.Description End Sub 

Привязка внешней ссылки

Привязка внешней ссылки делает ее постояннной частью рисунка, а не внешней ссылкой. То есть она становится блоком, отсюда следует что при изменении чертежа внешней ссылки в основном чертеже никаких изменений не получим. После привязки любые именованные объекты (блоки, размерные стили, слои, типы линий и стили текста) могут использоваться в основном рисунке. Метод Bind требует только один параметр bPrefixName , если он равен TRUE, то символьные имена получают префикс по имени блока + цифровой идентификатор. В противном случае символьные имена сливаются с уже существующими и при наличии совпадаений оставляются уже определенные в основном рисунке. Если не уверен, будут ли в связываемой внешней ссылке дублироваться имена используй TRUE. Пример связывания:

 Sub BindingExternalReference() On Error GoTo ERRORHANDLER ' Определим внешнюю ссылку Dim xrefHome As AcadBlock Dim xrefInserted As AcadExternalReference Dim insPnt(0 To 2) As Double Dim PathName As String insPnt(0) = 1: insPnt(1) = 1: insPnt(2) = 0 PathName = "c:/AutoCAD/sample/db_samp.dwg" ' Добавим внешнюю ссылку Set xrefInserted = ThisDrawing.ModelSpace. _ AttachExternalReference(PathName, "XREF_IMAGE", insPnt, 1, 1, 1, 0, False) ZoomExtents MsgBox "Внешняя ссылка присоединена." ' Привяжем определение внешней ссылки ThisDrawing.Blocks.Item(xrefInserted.name).Bind False MsgBox "Внешняя ссылка связана." Exit Sub ERRORHANDLER: MsgBox Err.Description End Sub 

Не существует метода для обрезки блока или внешней ссылки в ActiveX, поэтому если очень нужно используй метод SendCommand вызывая команду XCLIP .

Загрузка по требованию и повышение производительности внешних ссылок

Комбинируя загрузку по требованию и сохранение рисунка с индексами можно увеличить скорость работы рисунков с внешними сслыками. Загрузка по требованию работает совместно с системными переменными XLOADCTL и INDEXCTL . Когда включена загрузка по требованию (при условии что были сохранены индексы в подчиненных рисунках) Autocad загружает в память только данные которые нужны для регенирации текущего рисунка. Наиболее заметен выигрыш в производительности при использовании загрузки по требованию когда внешняя ссылка подрезана и пространственный индекс сохранен во внешнем рисунке, а также в случае заморозки некоторых слоев внешней ссылки и рисунок-внешняя ссылка сохранен с индексом слоя. Чтобы включить загрузку по требованию есть свойство XRefDemandLoad если оно включено с параметром acDemandLoadEnabledWithCopy Autocad создает временную копию файла внешней ссылки и загружает по требованию временный файл, при этом исходный файл внешней ссылки можно в этот момент редактировать. А когда загрузка по требованию отменена Autocad загружает весь файл внешней ссылки, не обращая внимание на видимость слоев или обрезку. Для включения слоев и пространственных индексов установи значение переменной INDEXCTL таким образом — (0 — не создавать индексы, 1 — создать индекс слоев, 2 — создать пространственный индекс, 3 — создать оба индекса).
Пространственный индекс — список примитивов и данных их положения в трехмерном пространстве (используется при частичном открытии файла).
Индекс слоев — список слоев с перечнем объектов на них. По умолчанию файлы создаются без индексов (!)

НАЗНАЧЕНИЕ И ЧТЕНИЕ РАСШИРЕННЫХ ДАННЫХ

Объектам могут назначаться расширенные данные (дополнительная информация). Примеры установки и чтения:

 Sub AttachXDataToSelectionSetObjects() ' Создаем набор Dim sset As Object Set sset = ThisDrawing.SelectionSets.Add("SS1") ' Предложим пользователю выбрать объекты sset.SelectOnScreen ' Определим расширенные данные Dim appName As String, xdataStr As String appName = "MY_APP" xdataStr = "Пример xdata (дополнительных данных)" Dim xdataType(0 To 1) As Integer Dim xdata(0 To 1) As Variant ' Зададим значения для каждого массива ' 1001 = appName xdataType(0) = 1001 xdata(0) = appName ' 1000 отображает строковое значение xdataType(1) = 1000 xdata(1) = xdataStr ' Проходим по элементам набора и устанавливаем ' каждому расширенные данные Dim ent As Object For Each ent In sset ent.SetXData xdataType, xdata Next ent End Sub Sub ViewXData() ' Ищем набор, созданный в предыдущем примере Dim sset As Object Set sset = ThisDrawing.SelectionSets.Item("SS1") ' Создаем переменные для хранения расширенных данных Dim xdataType As Variant Dim xdata As Variant Dim xd As Variant Dim xdi As Integer xdi = 0 ' Проходим по всем объектам набора, читая расширенные данные Dim msgstr As String Dim appName As String Dim ent As AcadEntity appName = "MY_APP" For Each ent In sset msgstr = "" xdi = 0 ' Имя приложения (appName) xdata Тип и Значение ent.GetXData appName, xdataType, xdata ' Если переменная xdataType не инициализирована, не ' будет appName xdata If VarType(xdataType) <> vbEmpty Then For Each xd In xdata msgstr = msgstr & vbCrLf & xdataType(xdi) & ": " & xd xdi = xdi + 1 Next xd End If ' Если полученная строка пуста (NULL), нет расширенных данных If msgstr = "" Then msgstr = vbCrLf & "NONE" MsgBox appName & " xdata " & ent.ObjectName & ":" & vbCrLf & msgstr Next ent End Sub 

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

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