Работа с блоками, атрибутами и внешними ссылками — КиберПедия 

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

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

Работа с блоками, атрибутами и внешними ссылками

2021-06-30 48
Работа с блоками, атрибутами и внешними ссылками 0.00 из 5.00 0 оценок
Заказать работу

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

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

Блоки могут наследовать цвета и типы линий от того слоя в котором расположены элементы их составляющие. При каждой вставке они создают соответствующие слои и типы линий. Блочная ссылка, состоящая из объектов, нарисованных на слое 0, с цветом и типом линий "по слою", помещенная на текущий слой наследует цвет и тип линий у слоя. Свойства текущего слоя заменяют свойства цвета и типа линий явно заданные блочной ссылке.

Блочная ссылка, состоящая из объектов, у которых цвет и тип линий заданы "по блоку" позволяет назначать их вставленной блочной ссылке, т.е. если сменить цвет блока на красный, то изменится цвет всех элементов. Блоки могут быть вложенными, единственное ограничение в том, что блок не может ссылаться сам на себя. Для создания нового блока используется метод Add, который требует два параметра - место размещения блока и имя блока. После создания к блоку можно добавлять любые геометрические объекты или другие блоки, после чего можно вставлять в рисунок вхождения блока. Можно также создать блок методом Wblock, группируя объекты во внешний файл. Autocad рассматривает любой чертеж, вставленный в текущий, как блок. Метод InsertBlock используется для вставки блочной ссылки в рисунок, он принимает шесть параметров: точка вставки, имя вставляемого блока, масштабы по осям координат (три параметра), и угол поворота.

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

Sub InsertingABlock() ' Определим блок Dim blockObj As AcadBlockDim 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.ObjectNameEnd 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).UpdateNextEnd Sub

Переопределение блока

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

Sub RedefiningABlock() ' Определим блок Dim blockObj As AcadBlockDim 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.UpdateEnd Sub

Работа с атрибутами

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

Строка подсказки появляется при вставке блока с атрибутами, по-умолчанию ее значение равно имени (тэгу) атрибута. При acAttributeModeConstant подсказка не выводится. В качестве тэгов можно использовать любые символы кроме пробелов и восклицательных знаков, символы нижнего регистра преобразуются в верхний. После того как атрибут определен при вставке блока можно указать другое значение атрибута. Атрибуты связаны с блоком, в котором они создавались. Атрибуты, созданные в пространстве модели или листа, рассматриваются как не принадлежащие к блокам. Пример определения атрибутов:

Sub CreatingAnAttribute() ' Определим блок Dim blockObj As AcadBlockDim 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.UpdateEnd Sub

Поделиться с друзьями:

Историки об Елизавете Петровне: Елизавета попала между двумя встречными культурными течениями, воспитывалась среди новых европейских веяний и преданий...

Индивидуальные и групповые автопоилки: для животных. Схемы и конструкции...

Индивидуальные очистные сооружения: К классу индивидуальных очистных сооружений относят сооружения, пропускная способность которых...

Своеобразие русской архитектуры: Основной материал – дерево – быстрота постройки, но недолговечность и необходимость деления...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.015 с.