Урок 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
- Видео уроки
Как изменить масштаб вставленного блока? (Страница 1 из 2)
Форумы CADUser → Autodesk → AutoCAD → Как изменить масштаб вставленного блока?
Страницы 1 2 Далее
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Сообщения с 1 по 25 из 26
#1 Тема от Костя 28 июля 2005г. 10:28:19
Тема: Как изменить масштаб вставленного блока?
В АрхиКаде была такая команда «scale objects inserted from other drawing».(ставилась галочка). Где можно найти нечто подобное в АвтоКаде 2004. А то вставленный блок, созданный в более ранней версии, немного раскидывает по чертежу.
#2 Ответ от kpblc 28 июля 2005г. 10:47:29
Re: Как изменить масштаб вставленного блока?
Если вставка блока ведется через диалоговое окно (_insert), то там можно либо поставить определенный масштаб, либо определять его в момент вставки мышой или с клавы. При работе через ком.строку (_-insert) то же самое.
#3 Ответ от Александр Ривилис 28 июля 2005г. 10:54:55
Re: Как изменить масштаб вставленного блока?
Для уже вставленного блока выбрать блок и запустить команду _PROPERTIES (правая кнопка мыши и выбрать эту команду из меню). В диалоговом окошке изменить масштабные коэффициенты по X,Y,Z на те, которые нужны.
#4 Ответ от Костя 28 июля 2005г. 11:08:54
Re: Как изменить масштаб вставленного блока?
Не, проблема не в масштабе! Может это какой-то глюк,
но Акад сбивает положение точек вставки(вставляемый блок — стеллаж, состоящий из множества элементов). В итоге стеллаж выглядит как
мешанина элементов. Опытным путем было установлено, что при изменении вышеописанного параметра в Архикаде стеллаж вставляется нормально, как и должно быть. Хотелось бы найти аналогичную опцию в Автокаде.
#5 Ответ от Alena 28 июля 2005г. 11:12:03
Re: Как изменить масштаб вставленного блока?
Еще проверь сам блок.
Format — Units — Insertion scale
Там масштаб должен стоять, как вам нужно,
например, в миллиметрах, а не в inches..
#6 Ответ от Костя 28 июля 2005г. 11:30:38
Re: Как изменить масштаб вставленного блока?
Не, тоже не помогает. Я открыл файл с блоком(там все в порядке — стеллаж цел) и проверил у себя. Но при попытке как-либо воткнуть стеллаж(insert, copy-paste, а вообще у нас еще специфичные команды написаны и загружены — для облегчения работы, но проблема точно не в них) все разваливается. Purge делаю после каждой неудачной попытки. Может еще идей есть?
#7 Ответ от kpblc 28 июля 2005г. 11:33:12
Re: Как изменить масштаб вставленного блока?
Выложи файл где-нибудь на webfile.ru и здесь дай ссылку — поковыряем. Хоть разговор предметный будет
#8 Ответ от Костя 28 июля 2005г. 11:44:59
Re: Как изменить масштаб вставленного блока?
Номер 427940. Самое обидное будет, если это какая-нибудь фигня, моя невнимательность или глупость. два часа уже убил — мог его из деталей уже раз 5 собрать. Но любопытно. Посмотрите, пожалуйста.
#9 Ответ от Костя 28 июля 2005г. 11:45:44
Re: Как изменить масштаб вставленного блока?
#10 Ответ от kpblc 28 июля 2005г. 12:01:11
Re: Как изменить масштаб вставленного блока?
Странно, я не могу понять — в чем проблема. У меня все нормально вставляется. Проверено на ACAD 2005 (чистый, не ADT!): перетаскивание файла на граф.область, команда _insert, _-insert.
Единственное, что я сделал в первую очередь — _purge на файле «Куда вставлять». Снеснось прилично всякого.
Между прочим, может, имеет смысл работать не поверхностями, а твердотельными объектами? По ним хоть сечения можно построить (если такое надо, конечно).
—
ИМХО.
—
Да, вот еще — вопрос: а на фига работать в ADT, если его возможности не используются? Может, проще работать в чистом каде?
#11 Ответ от kpblc 28 июля 2005г. 12:02:00
Re: Как изменить масштаб вставленного блока?
Все, всосал: при вставке блока (_insert) через диалоговое окно сними галку «Explode»
#12 Ответ от kpblc 28 июля 2005г. 12:02:19
Re: Как изменить масштаб вставленного блока?
#13 Ответ от Александр Ривилис 28 июля 2005г. 12:05:30
Re: Как изменить масштаб вставленного блока?
Плохо пуржил чертеж, в который вставлял. После трех _PURGE стеллаж замечательно вставляется. AutoCAD 2006. Кстати, надо было бы уточнять, что чертеж делался в ADT.
#14 Ответ от Костя 28 июля 2005г. 12:26:09
Re: Как изменить масштаб вставленного блока?
Сначала отвечу. Создаются магазины. У них есть стены, двери, окна. В чистом АКАДЕ нет стен, вроде. Я работаю в АКАД 2004. Твердотельные? Ты видел базу самого простого стеллажа. На него вешаюстя полки, козырек, на полки — всякие ограничители, делители (решетки по краям полок). В
магазине таких стеллажей много — от нескольких десятков до сотен или тысяч в гипермаркетах. Делителей соответсвенно десятки тысяч, а они прорисованы лучше и больше весят. Я думаю, что твердотельные могут банально не вытянуты компами. У нас и так на Р4 с 512mb тормозят большие магазины. А сечения точно не нужны. ЗЫ. Сейчас все попробую, что ты написал. Надеюсь, что хоть что-нибудь поможет. Или пойду к сис админу — пусть АКАД 2005-6 ставит. хе хе. Тебе спасибо!
#15 Ответ от Костя 28 июля 2005г. 12:33:50
Re: Как изменить масштаб вставленного блока?
Кстати, в новый файл акада или полность очищенный и пурженый файл, который я отправлял, все отлично вставляется. Видимо это глюк какого-то слоя или оборудования, которое не дает сделать полный пурж. Так что буду все переносить в чистый файл. Всем спасибо!
#16 Ответ от Александр Ривилис 28 июля 2005г. 13:00:44
Re: Как изменить масштаб вставленного блока?
Костя. В этом чертеже пурж нужно делать несколько(. ) раз. Там есть взаимосвязанные объекты, которые за один раз не пуржатся.
#17 Ответ от kpblc 28 июля 2005г. 13:01:46
Re: Как изменить масштаб вставленного блока?
> Александр Ривилис
Странно, я сделал _purge, установил «Purge nested objects» (сносить зависимые объекты), снял требование подтверждения и все — хватило 1 раза.
—
ИМХО
#18 Ответ от Александр Ривилис 28 июля 2005г. 13:09:37
Re: Как изменить масштаб вставленного блока?
> kpblc
Все правильно. Я был не прав — забыл установить Purge nested.
#19 Ответ от Костя 28 июля 2005г. 13:37:50
Re: Как изменить масштаб вставленного блока?
Я пуржил с зависимыми. ЗЫ. Я нашел в чем глюк — стены.
Если их убрать и пурж — всё глюков нет. Но пока они есть — все бесполезно. Видимо какая-то несовместимость в настройках. (Я кидал файл, в котором стен уже нет, но я его вроде не пуржил.)
Будет интересно — могу скинуть магазин целиком — помучаетесь)))
#20 Ответ от kpblc 28 июля 2005г. 13:40:54
Re: Как изменить масштаб вставленного блока?
И рад бы, да некогда.
#21 Ответ от Костя 28 июля 2005г. 13:46:01
Re: Как изменить масштаб вставленного блока?
#22 Ответ от Костя 28 июля 2005г. 13:47:58
Re: Как изменить масштаб вставленного блока?
Как хочешь — я уже решил проблему немного другими методами, но все равно спасибо.
#23 Ответ от kpblc 28 июля 2005г. 14:12:14
Re: Как изменить масштаб вставленного блока?
Cамое прикольное, так это то, что xref нормально воспринимает (проверено на ADT 2005).
Кстати об xref’ах — я так понимаю, что у тебя там полно подобной мебели, все это засунуть в отдельные папки и вставлять как внешние ссылки. Вариант в принципе.
Скорее всего здесь дело в следующем: у тебя в файле-получателе (который «магазин. «) уже есть описание блока вертикальной стенки. И в имеющемся блоке уже сделаны изменения. Когда кад вставляет блок, он в первую очередь использует имеющиеся описания (при вставке блока посмотри на ком.строку, или нажми F2, увидишь нечто вида «Повторное определение блока ля-ля-ля игнорировано»). Так что либо xref, либо ищи описания вертикальной стенки и исправляй там.
Если не очень понятно, то пиши на мыло kpblc2000>yandex.ru, только адрес приведи в нормальный вид.
Как изменить масштаб блока в автокаде при вставке
Есть достаточно причин для того чтобы комбинировать растровые и векторные изображения в одном рисунке, это могут быть космические снимки, отсканированные чертежи и т.д. Растровые изображения можно представить в виде решетки, каждый элемент которой называют пискелем. Растры могут быть скопированы, перемещены, обрезаны по прямоугольнику или полигону. Некотрые из поддерживаемых форматов могут отображать прозрачные пиксели. Растры могут быть монохромными, 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
Аллегория зрения, или Масштабно о масштабах
В XVII веке среди художников-живописцев большой популярностью пользовалась идея написания картин внутри картины. Ярким примером служит знаменитая серия полотен-кунсткамер Виллема ван Хахта. Такие картины, своеобразные галереи, в наши дни представляют огромную историческую ценность, так как живописные и скульптурные произведения, содержащиеся в картинах, – реальны, имеют своих авторов, а персонажи являются историческими личностями.
В своей работе «Апеллес рисует Кампаспу (Александр Македонский в мастерской Апеллеса)» – (рис. 1) Виллем ван Хахт отразил легенду о том, как Александр Македонский отдал свою любовницу художнику Апеллесу взамен на ее портрет.
Рис. 1. «Апеллес рисует Кампаспу (Александр Македонский в мастерской Апеллеса)», Виллем ван Хахт (ок. 1630 г.)
Но давайте взглянем на мастерскую художника: здесь можно найти более сотни действительно существующих произведений, в том числе и знаменитейших шедевров мирового искусства. Любители искусства по сей день гадают о названиях и авторах нескольких картин и скульптур, не прошедших идентификацию.
От настолько кропотливого творения захватывает дух! Только представьте, какого труда и профессионализма требовало воспроизведение сотни мировых шедевров в собственной картине. Но с появлением и развитием технологий создавать подобные картинные галереи не составит большой сложности. В САПР, например, это легко можно сделать с помощью видовых экранов – здесь главное не запутаться в масштабах.
Какие именно способы оформления чертежа существуют, как устроена система масштабирования в Платформе nanoCAD, а также где могут быть спрятаны масштабы разных объектов, мы узнаем далее.
Единицы чертежа, или Глобальный масштаб
Где-то на другой стороне континента людям привычно слышать такую фразу: «Погода ясная, ожидается до 86º». Если не знать, что речь о градусах Фаренгейта, впору ужаснуться. Использование своей системы измерения является ничем иным как привычкой. У строителей расстояния измеряются в метрах, швеи пользуются сантиметрами, а инженеры, как правило, миллиметрами.
Приступая к созданию любого чертежа, необходимо подготовить рабочую среду: сказать программе, какими единицами мы будем пользоваться. Диалог Единицы чертежа (рис. 2) вызывается по команде Units либо по кнопке Единицы, которая располагается во вкладке Главная → Группа Свойства → переходим в «подвал» → Единицы.

Рис. 2. Диалоговое окно Единицы чертежа
По умолчанию в Платформе nanoCAD установлены миллиметры. Отмечу, что данная опция действительна для внешних dwg-ссылок, растров и блоков. Значение этого масштаба отображается на панели свойств, в графе Геометрия.
Как правило, эта опция не пользуется большой популярностью – по понятным причинам. При передаче чертежа из одного отдела в другой легко запутаться в используемых единицах измерения и оказаться Гулливером в новом пространстве.
Внимание! При создании блока его единицами по умолчанию являются миллиметры. В случае несоответствия единиц чертежа и блока блок будет уменьшаться или увеличиваться в зависимости от единиц измерения чертежа. Для корректного создания блока в заданных размерах синхронизируйте единицы чертежа и единицы блока (рис. 3).

Рис. 3. Диалоговое окно Определение блока
Команда МАСШТАБ
Самое простое в масштабировании – команда МАСШТАБ.
Команда МШ или МАСШТАБ предназначена для увеличения или уменьшения выбранных объектов. Опции команды позволяют как масштабировать объекты с сохранением пропорций, так и назначать различные масштабные коэффициенты по осям X и Y (рис. 4).
Если масштабный коэффициент больше единицы, объекты увеличиваются, если меньше – уменьшаются. Заданное значение масштабного коэффициента сохраняется в текущем сеансе работы до его следующего изменения.
Для масштабирования с разными коэффициентами по осям координат блок необходимо разбить до примитивов.
Рис. 4. Пример масштабирования примитива с различными коэффициентами по осям
При применении команды МАСШТАБ к блокам не только изменяется геометрия объекта, но и запоминается значение. На панели свойств, в графе Геометрия, масштаб блока изменится в соответствии с введенными коэффициентами (рис. 5).

Рис. 5. Пример масштабирования блоков и изменение геометрических свойств
Система масштабирования в Платформе nanoCAD
Далее познакомимся с системой масштабирования, которая используется для оформления. Вся система строится на панели, расположенной в строке состояния, и подразделяется на два типа масштаба: масштаб символов и масштаб измерений. Значения этих масштабов могут быть установлены индивидуально для любого объекта, группы объектов или документа. Новые объекты наследуют значения масштабов из документа.
Для каждого типа масштаба из этой панели существует перечень устанавливаемых масштабов, который соответствует ЕСКД ГОСТ 2.302-68 «Масштабы».
Более подробно о системе масштабирования, а также об аннотативных масштабах рассказывается в видео (0:00-3:40):
Если в чертеже содержится большое количество аннотативных масштабов, он может весить много больше положенного. В таком случае рекомендуется очистить от них чертеж. Для этого используйте команду -ОЧИСТИТЬ – аннотативные масштабы.
Масштаб символов
Параметр настройки, в соответствии со значением которого увеличиваются или уменьшаются объекты оформления на чертеже.
На размеры обычных и специальных объектов (объектов СПДС, объектов Механики) этот масштаб не влияет.
Изменение масштаба символов оказывает влияние на следующие объекты (рис. 6):
- объекты оформления чертежа;
- сложные типы линий;
- размеры и специальный текст nanoCAD.

Рис. 6. Пример использования масштаба символов
Характерные особенности масштаба символов (на примере масштаба m1:5):
- элементы оформления (размеры, выноски и др.) вставляются в пять раз крупнее;
- стандартные детали базы данных вставляются в масштабе, равном 1 (то есть геометрия остается без изменений) и с текущим масштабом типов линий (длина штриха в штриховых линиях), равным 5 (в пять раз больше);
- геометрия вставляется с масштабом типов линий (длина штриха в штриховых линиях), равным 5;
- отображаемое значение размера берется как есть;
- об использовании режима сигнализирует строчная буква m на панели инструментов Масштаб.
Масштаб измерений
При изменении этого масштаба размер объектов изменяется в соответствии с установленным значением, а размер элементов оформления остается неизменным. Кроме того, происходит масштабирование линейных размеров путем установления линейного коэффициента масштаба.
Масштаб измерений можно установить (рис. 7):
- для размерных объектов (масштаб измерений влияет на значение размерного текста);
- для специальных объектов вертикальных приложений – например, объектов СПДС или объектов Механики (у них масштаб измерений регулирует величину объекта на чертеже).

Рис. 7. Пример использования масштаба измерений и масштаба символов
Для масштаба измерений характерно следующее (на примере масштаба M1:5):
- элементы оформления (размеры, выноски и др.) вставляются в масштабе 1:1, то есть не изменяются;
- стандартные детали базы данных вставляются уменьшенными в 5 раз (геометрия), с текущим масштабом типов линий (длина штриха в штриховых линиях), равным 1, то есть без изменений;
- геометрия вставляется с масштабом типов линий (длина штриха в штриховых линиях), равным 1, то есть без изменений;
- отображаемое значение размеров (если они не находятся поверх видовых экранов и не связаны ассоциативно с объектами приложения) берет масштабный коэффициент, обратный текущему масштабу (то есть будет в пять раз больше измеренного);
- об использовании режима сигнализирует прописная буква M на панели инструментов Масштаб.
Работа с панелью масштабов
Основным средством задания масштаба является кнопка, расположенная в правой части строки состояния.
Масштаб 1:1 означает, что 1 мм объекта равен 1 единице чертежа nanoCAD.
Панель позволяет менять значения масштабов для уже созданных и создаваемых объектов, а также копировать масштаб выбранного объекта в документ.
Добавление пользовательского масштаба на панель
Если есть желание добавить пользовательский масштаб в масштабы символов и измерений, это можно сделать через файл настроек settings.xml, который находится в папке по пути C:\ProgramData\Nanosoft\nanoCAD x64 22.0\DataRO\ru—RU. Файл можно открыть в любом текстовом редакторе. С помощью поиска находим раздел SPDS, а в этом разделе – блок с масштабами (scales – масштаб оформления или dscales – масштаб измерений). Добавляем по примеру новую строку (порядок масштабов в XML-файле соответствует списку масштабов в интерфейсе программы). Сохраняем файл, перезапускаем Платформу. Новый масштаб должен появиться в списке.
Для модулей «СПДС» и «Механика» файлы настроек соответственно находятся в папках:
- C:\ProgramData\Nanosoft\nanoCAD x64 22.0\NanoSPDS\DataRO\ru-RU
- C:\ProgramData\Nanosoft\nanoCAD x64 22.0\NanoMechanical\DataRO\ru-RU
На панели списка масштабов по умолчанию выставлены масштаб символов 1:100, масштаб измерений 1:1.
- Для того чтобы изменить масштаб уже вычерченных объектов, необходимо выделить объекты и применить нужный масштаб.
- Для того чтобы применить нужный масштаб для будущих объектов, следует сбросить выделение объектов и выставить масштаб. К уже вычерченным объектам этот масштаб неприменим.
- Для того чтобы выставить нужный масштаб по умолчанию при запуске Платформы nanoCAD, перейдите в настройки объектов (params) → Главные настройки → Оформление → Масштаб оформления, выберите масштаб и сохраните настройки.
Видео-инструкция по добавлению пользовательского масштаба на панель (3:40-4:40):
Есть второй, более легкий способ добавить собственный масштаб на эту панель. Рассмотрим его чуть позже, в разделе «Масштабы в настройках. Список масштабов».
Масштабы в настройках
Много важных настроек, связанных с масштабированием, содержится в настройках объектов (params). Давайте рассмотрим каждую из них по порядку.
- Вкладка Главные настройки → Типы линий.

Рис. 8. Настройка объектов — Типы линий
Здесь находятся две настройки (рис. 8):
- Автоматически отключать опциюМасштаб в единицах пространства листа. Если эта опция включена, то при переходе между листами (или с модели на лист) настройка Масштаб в единицах пространства листа, расположенная в редакторе Типы линий, будет сбрасываться.
- Изменять текущий масштаб типа линий. Настройка включает или отключает масштабирование типов линий в стандартных объектах при изменении их масштаба. При включенной настройке вставляемые элементы оформления и объекты БД автоматически масштабируются в соответствии с масштабом, установленным на панели инструментов Масштаб.
- Вкладка Главные настройки → Редактирование.

Рис. 9. Настройка объектов — Редактирование
Здесь мы найдем четыре настройки (рис. 9):
- Масштабировать размеры;
- Масштабировать текст;
- Масштабировать штриховки;
- Масштабировать таблицы.dwg.
Для последующего рассмотрения этих настроек углубимся немного в систему оформления, применяемую в Платформе nanoCAD.
Система оформления в Платформе nanoCAD
К системе оформления в САПР относятся объекты оформления чертежей: всевозможные выноски, тексты, размеры, штриховки, таблицы и так далее. Платформа nanoCAD поддерживает две системы оформления чертежей (рис. 10):
- систему оформления AutoCAD – мультивыноски, таблицы DWG;
- систему оформления nanoCAD – восемь типов настроенных по ГОСТ выносок, таблицы nanoCAD.

Рис. 10. Оформление в Платформе nanoCAD
Преимуществ использования объектов оформления nanoCAD – множество:
- все объекты оформления уже настроены под ГОСТ;
- объекты nanoCAD «понимают» друг друга, можно выстраивать взаимосвязи между ними;
- настроенные объекты легче распространять. Это одна из самых приятных особенностей работы с объектами nanoCAD. Объясню на примере. Допустим, вы настроили несколько стилей выносок и таблиц, которые необходимо использовать в данном проекте. Все настроенные стили будут храниться только в этом *.dwg-файле. А если необходимо растиражировать эти стили по отделу? Конечно, можно настроить шаблон DWT, на основе которого создавать для проекта новые чертежи, но в старых проектах придется настраивать стили заново или копировать выноску и использовать MATCHPROP. А в случае смены стилей оформления – снова настраивать и подключать новый шаблон. Настройки объектов nanoCAD (выноски, таблицы, частично размеры) хранятся в файле AppOptions.xml, редактировать который вы можете как с помощью интерфейса программы, так и в любом текстовом редакторе. Передача и тиражирование файла возможны на любой стадии выполнения проекта.
Размеры в Платформе nanoCAD тоже можно разделить по двум системам, но заметить разницу в них сложнее.
При вызове размера (рис. 11), если название команды начинается с буквы «m» (mdim, mdimali, mdimord и т.д.), этот размер можно отнести к размерам nanoCAD.
Линейный размер или DIMLINEAR из списка – размер, поддерживающийся системой оформления AutoCAD.

Рис. 11. Перечень размеров в Платформе nanoCAD
Размеры nanoCAD частично настраиваются в диалоге Настройка объектов, также доступна настройка стилей через диалог Размерные стили (для этого необходимо снять галочку в Настройках объектов → Редактирование → Масштабировать размеры).
Чтобы более подробно ознакомиться с системой оформления в Платформе nanoCAD, смотрите видео:
Возвратимся к Масштабам в настройках.
Масштабировать размеры
При установленном значении «Да» для размеров nanoCAD будут игнорироваться глобальный масштаб из вкладки Размещение и масштаб измерений из вкладки Основные единицы в диалоге размерных стилей (команда DIMSTYLE, рис. 12). Глобальный масштаб в этом случае заменяется масштабом оформления, масштаб измерений соответствует установленному на панели масштабов.

Рис. 12. Диалог редактирования размерных стилей
При установленном значении «Нет» масштаб оформления размеров задается на вкладке Размещение, а масштаб измерений – на вкладке Основные единицы в диалоге размерных стилей (команда DIMSTYLE).
По умолчанию галочка Масштабировать размеры активна, поэтому при простановке новых размеров nanoCAD они игнорируют масштабные коэффициенты в размерных стилях.
Изменение в настройке значения масштаба измерений стиля приводит к изменению значения в уже проставленных размерах того же стиля.
После отключения галочки все вновь создаваемые размеры подчиняются настройкам размерного стиля.
Если вы активно используете масштабы в размерных стилях, рекомендую отключить эту галочку во избежание путаницы.
Масштабировать таблицы .dwg
Для тестирования галочки Масштабировать таблицы .dwg выполним следующие действия:
- отключим галочку Масштабировать таблицы .dwg;
- установим масштаб символов 1:100;
- установим масштаб измерений 1:1;
- убедимся, что на панели масштабов активен масштаб символов m1:1.
Переходим на вкладку Оформление → группа Таблицы. Вынесем в пространство модели таблицу nanoCAD, а затем таблицу .dwg. Вы заметите, что таблица .dwg несоразмерна таблице nanoCAD. Это происходит потому что таблица nanoCAD масштабируется согласно установленному на панели масштабу оформления, который сейчас составляет 1:100, а у таблиц .dwg эта настройка отключена.
Масштабировать текст
Настройка применима для вставляемого текста.
Значение «Да». При изменении масштаба оформления с помощью панели инструментов Масштаб пропорционально изменяется параметр Высота в диалоге Формат текста для многострочного текста и в командной строке для однострочного текста. Если высота текста нулевая, она задается системной переменной TEXTSIZE (см. раздел «Системные переменные»).
Значение «Нет». При изменении масштаба оформления с помощью панели инструментов Масштаб параметр Высота остается неизменным.
В Платформе сохраняется значение последней введенной высоты текста. При включенном параметре изменение масштаба оформления пропорционально изменяет сохраненное значение высоты. Новый текст будет представлен с измененной высотой.
Масштабировать штриховки
Настройка применима для новых штриховок.
Значение «Да». При изменении масштаба оформления с помощью панели инструментов Масштаб пропорционально изменяется параметр Масштаб в диалоге Штриховка. В блоке Угол и масштаб диалога Штриховка будет отображаться текущий масштаб символов.
Значение «Нет». При изменении масштаба оформления с помощью панели инструментов Масштаб параметр Масштаб в диалоге Штриховка не изменяется.
В Платформе сохраняется значение последней введенной высоты штриховки. При включенном параметре изменение масштаба оформления пропорционально изменяет сохраненное значение высоты. Новая штриховка будет представлена с измененной высотой.
- Вкладка Главные настройки → Оформление

Рис. 13. Настройка объектов — Оформление
Здесь мы также видим четыре типа настроек, связанных с масштабами (рис. 13):
- Применять глобальный масштаб для элементов оформления;
- Масштаб оформления;
- Масштаб измерений;
- Список масштабов.
Рассмотрим каждую по очереди.
- Настройка Применять глобальный масштаб для элементов оформления влияет на то, какой из масштабов (символов или измерений) будет «главным». Каждый раз при переключении масштаба символов или измерений эта галочка меняет свое значение.
- элементы оформления вставляются с текущим масштабом символов;
- объекты базы данных вставляются с масштабом, указанным в диалоге вставки (по умолчанию 1:1).
На размер объектов базы влияет только масштаб измерений. В диалоговых окнах вставки при изменении масштаба локально изменится масштаб измерения для данного объекта. Это можно заметить, если в диалоге выставить масштаб, не равный глобальному масштабу измерений в чертеже (например, 1:10), вставить объект в пространство модели и выделить его. На панели масштаба масштаб измерения будет показывать *М1:10, что отлично от глобального.
- Об использовании режима сигнализирует строчная буква m на панели инструментов Масштаб.
- элементы оформления вставляются согласно текущему масштабу измерений;
- об использовании режима сигнализирует прописная буква M на панели инструментов Масштаб.
По умолчанию для стандарта СПДС опция включена, для стандарта ЕСКД – отключена.
-
Две следующие настройки, Масштаб оформления и Масштаб измерений, предлагают установить одноименным масштабам значения по умолчанию. Этими настройками можно управлять непосредственно через панель масштаба – каждый раз при изменении величины любого масштаба он перезаписывается и в настройках объектов.
Рекомендую изменять величину и масштаб по умолчанию непосредственно через панель.
Эта настройка, которая появилась в 22-й версии Платформы nanoCAD, регулирует, из какого файла будет подтягиваться список масштабов. Как мы уже знаем, список собран в файле settings.xml, а новая настройка позволяет расширить список файлов, включая файл настроек объектов AppOptions.xml.
Рассмотрим на примере. Применим значение этой настройки Только стандартные. Сохраним и перейдем на вкладку Оформление → группа Масштабирование → Список масштабов (рис. 14). Добавим пользовательский масштаб, который теперь будет доступен в списке масштабов видовых экранов (см. раздел «Масштаб ВЭ»). В списке масштаба измерений и символов пользовательского масштаба нет. Снова переходим в диалог настроек объектов → Оформление → Список масштабов. Применим опцию Из документа, сохраним, перейдем в панель масштабов и увидим, что в масштабах символов и измерений наш нестандартный масштаб появился. Опция Все позволяет растиражировать этот масштаб во все открытые чертежи.

Рис. 14. Настройка объектов — «Список масштабов»
Системные переменные
- TEXTSIZE – задает высоту текста по умолчанию при создании новых текстовых объектов.
Доступные значения: положительные вещественные числа, кроме нуля.
Тип: вещественное число (Real).
Примечание. Системная переменная TEXTSIZE не действует, если высота в текущем текстовом стиле фиксирована.
Место хранения: чертеж.
Значение по умолчанию: 250.0 в Платформе nanoCAD и Платформе nanoCAD с модулем «СПДС». В Платформе nanoCAD с модулем «Механика» – 2.5.
Подробнее рассмотрим эту переменную в разделе «Масштабы объектов. Текст».
- HPSCALE – устанавливает масштабный коэффициент по умолчанию для новых образцов штриховки в текущем чертеже.
Доступные значения: положительные вещественные числа.
Тип: вещественное число (Real).
Место хранения: чертеж.
Значение по умолчанию: 1.0 (если установлен масштаб символов 1:1).
Эта переменная не что иное как настройка масштаба в диалоговом окне штриховки (рис. 15).

Рис. 15. Соответствие системной переменной и масштаба штриховки
Главное не забыть, что эта системная переменная полностью зависит от масштаба символов. Например, выставим масштаб символов 1:1 и зададим переменной HPSCALE значение 2.0. Переключим масштаб символов на 1:100 – и увидим, что HPSCALE составляет теперь 200.0.
Панель масштабов символов и измерений является приоритетной.
- LTSCALE – определяет глобальный масштаб типов линий в текущем чертеже.
Доступные значения: положительные вещественные числа, кроме нуля.
Тип: вещественное число (Real).
Место хранения: чертеж.
Значение по умолчанию: 1.0.
Подробнее к этой переменной мы вернемся в разделе «Масштабы объектов. Линии».
- CMLSCALE – управляет общей шириной мультилиний.
Доступные значения: вещественные числа.
Тип: вещественное число (Real).
Место хранения: чертеж.
Значение по умолчанию: 20.0.
Например, при масштабе, равном 2.0, мультилиния оказывается вдвое шире, чем указано в описании. Если масштаб равен 0, мультилиния сжимается в одну линию. Отрицательное значение масштаба вызывает переворачивание мультилинии (мультилиния рисуется слева направо).
- DIMSCALE – это масштабный коэффициент, применяемый ко всем переменным измерения, которые регулируют размеры, смещения и расстояния. DIMSCALE не влияет на измеренные расстояния, координаты и углы.
Тип: вещественное число (Real).
- 0 – если значение переменной DIMSCALE равно 0, то независимо от масштаба видового экрана (ВЭ) и выставленного масштаба оформления высота размерного текста при оформлении поверх ВЭ будет соответствовать высоте текста, указанной в размерном стиле. Не забудьте отключить галочку Масштабировать размеры в настройках объектов!
- Положительное вещественное число – пропорционально увеличит масштаб оформления размера на чертеже при нанесении его поверх ВЭ.
Место хранения: чертеж.
Значение по умолчанию: 1.0.
- CELTSCALE – указывает масштаб типа линии по умолчанию для новых объектов. Локально, только для линий будет изменять масштаб символов.
Доступные значения: положительные вещественные числа.
Тип: вещественное число (Real).
Место хранения: чертеж.
Значение по умолчанию: 1.0.
- PSLTSCALE – управление масштабом типов линий объектов, отображаемых на видовых экранах пространства листа.
Тип: целое число (Integer, Int16).
- 0 – специальное масштабирование типа линий не выполняется. Длина штрихов базируется на единицах чертежа в том пространстве (модели или листа), где был создан объект. Масштабируется по глобальному коэффициенту ЛМАСШТАБ.
- 1 – масштаб типа линий зависит от масштаба видового экрана. Если для TILEMODE установлено значение 0 (вы находитесь в пространстве листа), длина пунктира базируется на единицах чертежа в пространстве листа, даже если объекты находятся в пространстве модели. На видовых экранах в этом режиме можно как угодно изменять увеличение, сохраняя при этом одинаковые типы линий. Длины штрихов на видовых экранах в этом случае всегда совпадают с длинами штрихов, принадлежащих тому же типу линий и расположенных в пространстве листа. Управлять длиной пунктира можно при помощи команды ЛМАСШТАБ. Значение установлено умолчанию.
Примечание. При изменении значения PSLTSCALE или использовании команды ПОКАЗАТЬ (при PSLTSCALE = 1) автоматическая регенерация объектов на видовых экранах не происходит. Для обновления масштабов типов линий на каждом видовом экране используйте команду РЕГЕН.
Место хранения: чертеж.
Чтобы изменения при переходе из листа в модель и обратно не пропадали, отключите галочку Автоматически отключать опцию «Масштаб в единицах пространства листа» (Настройки объектов (params) → вкладка Главные настройки → Типы линий).
- CANNOSCALE – задает имя текущего аннотативного масштаба для текущего пространства в формате N:M, где N и M – положительные целые числа. Можно ввести только именованный масштаб, существующий в списке именованных масштабов чертежа (ScaleListEdit).
Тип: строка (String).
Место хранения: чертеж.
Значение по умолчанию: 1:1.
Для скрытия объектов оформления, не соответствующих введенному значению масштаба CANNOSCALE, к аннотативным объектам необходимо применить команду В текущем масштабе (вкладка Оформление → группа Масштабирование → В текущем масштабе).
- CANNOSCALEVALUE – отображает значение текущего аннотативного масштаба. Напрямую связана с переменной CANNOSCALE.
Тип: вещественное число (Real).
Место хранения: чертеж.
Значение по умолчанию: 1.0.
- LWDISPSCALE – имитирует ползунок настройки веса линии (команда ВЕСЛИН).
Доступные значения: вещественные числа в диапазоне 0.1 . 1.
Тип: вещественное число (Real).
Место хранения: реестр.
Значение по умолчанию: 0.25.
Масштабы объектов
В текстовых стилях (команда STYLE) нет опции масштаба, но есть такой параметр как Высота, который косвенно связан с масштабом. По умолчанию в текстовых стилях этот параметр равен 0, но это совсем не значит, что текст будет нулевой высоты. На самом деле при выставленной нулевой высоте текста (нефиксированная высота) значение высоты будет соответствовать значению системной переменной TEXTSIZE, которая в свою очередь масштабируется согласно масштабу символов.
Рассмотрим работу связки системной переменной TEXTSIZE, высоты текста и масштаба символов. Создадим пробный текстовый стиль «Высота 0» с нефиксированным значением высоты, установим масштаб символов 1:100. На панели системных переменных видим, что значение TEXTSIZE соответствует 250.0, при создании многострочного текста на панели редактирования отображается значение высоты текста 250. Изменим масштаб символов на 1:1 – текущим значением TEXTSIZE станет 2.5. Создадим новый текст – на панели редактирования его высота сейчас равна 2.5, начертание в пространстве модели тоже стало меньше в 100 раз. Так как мы глобально изменили масштаб символов для объектов оформления.
При изменении высоты текста через переменную TEXTSIZE следите за масштабом оформления – переменная TEXTSIZE напрямую зависит от этого масштаба.
При фиксированной высоте текста в текстовом стиле значение переменной TEXTSIZE игнорируется. Будет применяться значение высоты текста, указанное в текстовом стиле, с коэффициентом масштаба оформления.
При применении высоты текста через текстовые стили следите за текущим масштабом символов, так как результирующая высота текста будет умножаться на коэффициент масштаба символов.
В блоке Подробности диалогового окна Типы линий (команда LINETYPE) есть три опции, связанные с масштабами (рис. 16).

Рис. 16. Диалоговое окно Типы линий
- Масштаб в единицах пространства листа – задание одинакового масштаба типов линий в пространствах листа и модели. Галочка полностью регулируется также системной переменной PSLTSCALE (см. раздел «Системные переменные»).
- Глобальный масштаб – задание значения глобального масштабного коэффициента для всех типов линий. Эта галочка является вынесенной в интерфейс системной переменной LTSCALE. Ее применение заменит значение масштаба как для вновь создаваемых линий, так и для уже вычерченных. Для применения изменений в графике не забудьте обновить чертеж (команда REGENALL).
- Текущий масштаб – задает масштабный коэффициент для вновь создаваемых линий. Результирующим значением масштаба будет произведение глобального и текущего масштабов. Текущий масштаб есть ничто иное как масштаб символов, то есть он локально, для линий, будет изменять масштаб символов. Текущий масштаб линий регулируется также системной переменной CELTSCALE.
В диалоге Штриховки есть только одна настройка, связанная с масштабом. Мы уже рассмотрели ее в предыдущем разделе («Системные переменные. HPSCALE»).
Вкладка Размещение → Масштаб размеров по листу.
Включение галочки Масштаб размеров по листу устанавливает значение системной переменной DIMSCALE равным 0.
Галочка Глобальный масштаб установит переменной DIMSCALE введенное положительное вещественное значение.
Режим применения масштабного коэффициента только к размерам в видовых экранах листа рекомендуется включать только при простановке неассоциативных размеров.
Окно Изменение списка масштабов (команда ScaleListEdit) позволяет добавить/удалить/изменить масштаб видовых экранов (ВЭ).
Кстати, максимальное количество ВЭ в пространстве листа определяется системной переменной MAXACTVP (доступные значения 2…64).
Оформление чертежа в пространстве модели или листа
Варианты оформления чертежа в пространстве модели или листа:
Вывод
Как нам удалось сегодня выяснить, CAD-система может скрывать в себе очень много разных настроек. Возможно, это происходит оттого, что пока нет единого стандарта оформления чертежей – каждый проектировщик и предприятие выбирают свой путь, а нам как разработчикам остается лишь воплощать их пожелания в Платформе, стараясь не задеть близлежащий функционал.
Надеюсь, что это статья станет для вас хорошим помощником или небольшим справочником при «общении» с масштабами в Платформе nanoCAD.
Асель Бексултанова,
технический специалист
по Платформе nanoCAD
«Нанософт разработка»
