Введення в CorelDraw для роботи зі скриптами
Макроси можна:
- створювати автоматично,
- писати "з нуля",
- і середнє між першим і другим.
Створювати автоматично.
Для цього в CorelDraw є більш доступного режиму:
1) Командою "Записати" (Інструмент -> Visual Baisic -> Записати) (рис) створюємо ім'я макросу і вказуємо, що далі йде запис дій (не всіх), які ви хочете записати для автоматичного відтворення.
2) Командою "Стоп" (Інструмент -> Visual Baisic -> Стоп) вказуєте, що запис закінчена.
3) Відтворити виконані дії - Виконуємо комаду "Програти" (Інструмент -> Visual Baisic -> Програти).
Зберігаючи документ CorelDraw в форматі * .cdr, ви автоматично зберігаєте і структура макросів даного сеансу, правді при завантаженні цього файлу треба вказати (система запитає)
"Enamle Macros". Приклади ж автоматичної організації макросів дан в уроці 1.
Писати "з нуля".
Тут треба знати основи мови програмування
Visual Basic for Applications (див. Наприклад тут), команди CorelDraw на VBA, Learning CorelSCRIPT і т.д. що досить нудне заняття і під силу досвідченим програмістам
(Наприклад, текст цього макросу через "Блокнот" або WordPad збережіть у файлі з розширенням * .csc (дивіться уважно) і потім запустіть макрос ( "Інструмент -> Запустіть скрипт"). Ви отримали макрос, написаний з нуля, правда, без всяких кодів CorelDraw.
Макроси - середнє між створювати їх автоматично і писати "з нуля"
Найчастіше доводиться дублювати дії. Одна дія при цьому можна створити автоматично, а далі справа техніки (точніше деяких прийомів створення циклів на Visual Baisic). Тому потрібно модернізувати макроси, створені автоматично. При цьому в тій структурі (проектах), куди вони записуються автоматично.
Приклад 1. Створити макрос обертання відрізка навколо його початкової точки.
Ось його текст
Sub Macro1 ()
Dim i As Integer
x1 = 4
y1 = 5
r = 4
ug0 = 0
num = 41
ugi = 6.28 / num
For i = 1 To num
ug = ug0 + i * ugi
x2 = x1 + r * Sin (ug)
y2 = y1 + r * Cos (ug)
Dim s104 As Shape
Dim crvs104 As Curve
Set crvs104 = CreateCurve (ActiveDocument)
With crvs104.CreateSubPath (x1, y1)
.AppendLineSegment x2, y2
End With
Set s104 = ActiveLayer.CreateCurve (crvs104)
k = k + 1
Next i
End Sub
Видно, що код створення відрізка (узятий з автоматичної записи макросу для відрізка) складається з 6 рядків:
Dim crvs104 As Curve
Set crvs104 = CreateCurve (ActiveDocument)
With crvs104.CreateSubPath (x1, y1)
.AppendLineSegment x2, y2
End With
Set s104 = ActiveLayer.CreateCurve (crvs104)
де x1, y1 і x2, y2 - координати початку і кінця відрізка.
Цикл організований так:
For i = 1 To num
Приклад 2. Організувати перебір точок на відрізку прямої лінії.
Sub Macro2 ()
Dim i As Integer
num = 25
r1 = -0.1
r2 = -0.1
r3 = 0.1
r4 = 0.1
x1 = 1
y1 = 1
x2 = 10
y2 = 7
tb = 1 / num
For i = 0 To num
t = i * tb
x = (1 - t) * x1 + t * x2
y = (1 - t) * y1 + t * y2
Dim s45 As Shape
Set s45 = ActiveLayer.CreateEllipse ((x + r1), (y + r2), (x + r3), (y + r4), 90 #, 90 #, False)
s45.Fill.UniformColor.CMYKAssign 0, 100, 100, 0
Next i
Dim s104 As Shape
Dim crvs104 As Curve
Set crvs104 = CreateCurve (ActiveDocument)
With crvs104.CreateSubPath (x1, y1)
.AppendLineSegment x2, y2
End With
Set s104 = ActiveLayer.CreateCurve (crvs104)
End Sub
Для зображення точки і її заливки кольором використаний код:
Dim s45 As Shape
Set s45 = ActiveLayer.CreateEllipse ((x + r1), (y + r2), (x + r3), (y + r4), 90 #, 90 #, False)
s45.Fill.UniformColor.CMYKAssign 0, 100, 100, 0
Приклад 3. Визначити мінімальну відстань від точки до відрізка. Показати ЦФ відстані від точки до відрізка.
Ось цикл (повний текст макро 3 см. Тут) (для CorelDraw 10 тут)
For i = 0 To num
t = i * tb
x = (1 - t) * x1 + t * x2
y = (1 - t) * y1 + t * y2
Set s45 = ActiveLayer.CreateEllipse ((x + r1), (y + r2), (x + r3), (y + r4), 90 #, 90 #, False)
s45.Fill.UniformColor.CMYKAssign 0, 100, 100, 0
Set crvs104 = CreateCurve (ActiveDocument)
With crvs104.CreateSubPath (x, y)
.AppendLineSegment x3, y3
End With
Set s104 = ActiveLayer.CreateCurve (crvs104)
s = Sqr ((x - x3) * (x - x3) + (y - y3) * (y - y3))
Set s46 = ActiveLayer.CreateEllipse ((x - r5), (s - r5 + 1), (x + r5), (s + r5 + 1), 90 #, 90 #, False)
s46.Fill.UniformColor.CMYKAssign 0, 100, 100, 100
If s
Set s47 = ActiveLayer.CreateEllipse ((x - r5), (s - r5 + 2), (x + r5), (s + r5 + 2), 90 #, 90 #, False)
s47.Fill.UniformColor.CMYKAssign 0, 100, 100, 100
End If
Next i
У циклі відбувається:
- перебір відрізків від точки до прямої,
- перебір точок на прямій,
- перебір точок на ЦФ на всій області існування ЦФ
- перебір точок на ЦФ до мінімуму відстані від точки до прямої.
Приклад 5. Муар на квадраті (Макро1)
Приклад 6. Муар на трикутнику (Макро2)
Приклад 7. Розкидати окружності на аркуші A4 випадковим чином з випадковою заливкою.
Приклад 8. На аркуші A4 створити три форми: коло, квадрат і трикутник з випадковою їх заливкою.
Як завантажити макро в CorelDraw см. Вище.
Примітка. При копіюванні текстів в рекдактор CorelSCRIPT рядки можуть бути скопійовані з перенесенням, що викличе помилку (ці рядки будуть виділені), тому спробуйте їх зрушити вліво.
Вбудовані діалогові вікна: вікна введення і виведення
Приклад 9. З вікна введення ввести прізвище, в вікно виведення вивести прізвище і те й інше помістити її в графічному коді на робоче поле.
Sub Macro1 ()
Dim zF As String, zI As String
zF = InputBox ( "Ваше прізвище", "Вікно введення")
Dim s As Shape
Set s = ActiveLayer.CreateArtisticText (0, 0, zF)
With s.Text.FontProperties
.Name = "Arial" ' "Arial Black" "TimesET"
.Size = 40
End With
zI = "Борис"
Dim s1 As Shape
MsgBox "Ваша ім'я, братик, буде:" zI
Set s1 = ActiveLayer.CreateArtisticText (2, 0, zI)
With s1.Text.FontProperties
.Name = "Arial"
.Size = 40
End With
End Sub
При виконанні графічних робіт потрібно дотримуватися ГОСТ, зокрема, креслення повинні мати основний напис. Щоразу її креслити досить трудомістка робота. Можна зберігати креслення основного напису в форматі .cdr і їм користуватися, проте зручніше мати макрос, за допомогою якого можна в діалозі швидко внести свої дані
Приклад 10. Написати макрос, який би автоматично виконував основі напис з введенням в діалозі постійних даних і змінних: прізвище, номер завдання, лист, кількість аркушів, назва групи. Почала системи коордімнат помістимо в нижній правий кут.
Рішення завдання.
1. Виконаємо рамку і заповнимо її на аркуші зі збереженням сценарію.
2. Організуємо введення і заповненні змінних даних через діалогове вікно введення.
Протокол введення тексту на робоче поле не записує. Тому спочатку малюємо прямокутники (з лівого нижнього кута вгору), а потім беремо ці координати і підставляємо їх в коди виведення потрібного тексту. Внизу в макросі показаний цей прийом.
Sub Macro2 ()
Dim s980 As Shape
Set s980 = ActiveLayer.CreateRectangle (2.786543, 2.676874, 5.645953, 3.549236, 0, 0, 0, 0)
Set s3 = ActiveLayer.CreateArtisticText (2.786543, 2.676874, "Проба")
With s3.Text.FontProperties
.Name = "Arial"
.Size = 24
End With
End Sub
Макрос (CorelDraw11) побудови "Основний написи" з введенням в діалозі прізвищ: хто виконав, хто перевірив, номер завдання, назву групи, номер варіанта тут.
Основнуюнадпісь з макросом введення своїх даних в форматі .cdr завантажити звідси.
Резюме. Використовуючи макроси, можна автоматизувати деякі часто повторювані види побудов при графічних роботах. В даному наборі макросів зібрані базові елементи: відрізок прямої, коло, прямокутник, багатокутник і т.д.
В іншому наборі задаються аксонометричні осі 5-ти стандартних аксонометричних проекцій (ізометрія, діаметром, фронтальна Косокутна изометрия і діаметром, горизонтальна Косокутна изометрия - зенітна проекція), що застосовуються в нарисної геометрії і креслення.