Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RFpro.ru: Работа с программой CorelDraw


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный ХОСТИНГ на базе Linux x64 и Windows x64

РАССЫЛКИ ПОРТАЛА RFPRO.RU

Лучшие эксперты данной рассылки

Elinn
Статус: Профессор
Рейтинг: 1334
∙ повысить рейтинг »
mihlyandij
Статус: 3-й класс
Рейтинг: 77
∙ повысить рейтинг »
Scorch
Статус: 2-й класс
Рейтинг: 41
∙ повысить рейтинг »

/ КОМПЬЮТЕРЫ И СОФТ / Дизайн / web-дизайн / Работа с программой CorelDraw

Номер выпуска:11
Дата выхода:06.11.2010, 21:30
Администратор рассылки:Калашников О.А. (Руководитель)
Подписчиков / экспертов:70 / 16
Вопросов / ответов:1 / 1

Вопрос № 180508: Как в CorelDraw можно использовать свои формулы рисования графических кривых линий? Например СВОЮ формулу рисования окружности. А не то что есть уже в примитивах CorelDraw....



Вопрос № 180508:

Как в CorelDraw можно использовать свои формулы рисования графических кривых линий? Например СВОЮ формулу рисования окружности. А не то что есть уже в примитивах CorelDraw.

Отправлен: 30.10.2010, 22:12
Вопрос задал: Serafim Stefanovich (Посетитель)
Всего ответов: 1
Страница вопроса »


Отвечает Сучкова Татьяна Михайловна (Администратор) :
Здравствуйте, Serafim Stefanovich!
Да, свою кривую в Corel Draw нарисовать по собственной формуле можно.
Делается это рисованием с помощью VBA (средства встроенные).
Привожу самый простой вариант, когда функцию отрисовываем короткими линиями, начало и конец которых вычисляются по необходимой нам формуле. В данном случае это будет формула построения окружности с постоянным радиусом, равным 1, точки которой рисуются с шагом 1 (от 0 до 360 градусов, градусы в программе будут переведены в радианы). Координаты точки вычисляются по формуле
x = x0 + Cos(i * 3.14 / 180)
y = y0 + Sin(i * 3.14 / 180)
где x0, y0 - координаты центра окружности

Для того, чтобы попробовать на простом примере, нужно запустить запись макроса командой Инструменты - VisualBasic - Запись (в англоязычной версии Tools - Visual basic - Records), взять любой инструмент (например, свободную форму - Free Hand) и нарисовать отрезок.
З атем изменить макрос на тот, который приведен ниже.
Для этого дать команду Tools - Visual Basic - Play и в появившемся окне нажать кнопку Edit (редактировать, изменить).
Откроется окно редактора, в котором тот текст, который там есть, стираем, и вставляем этот код:

Код:
Sub Macro1()
'
' Recorded 03.11.2010
'
' Description:
'
'


Dim s5 As Shape
Dim crvs5 As Curve

For i = 0 To 359
x = 5 + Cos(i * 3.14 / 180)
y = 5 + Sin(i * 3.14 / 180)

Set crvs5 = CreateCurve(ActiveDocument)
With crvs5.CreateSubPath(x, y)
.AppendLineSegment 5 + Cos((i - 1) * 3.14 / 180), 5 + Sin((i - 1) * 3.14 / 180)
End With
Set s5 = ActiveLayer.CreateCurve(crvs5)

Next i


End Sub


Прямо в редакторе можно запустить рисование (Run Sub) или сохранить макрос и запускать командой Tools - Visual Basic - Play и в появившемся окне нажать кнопку Run.

Так можно нарисовать любую другую функцию, в том числе и те, для которых x и y вычисляются параметрически (как в данном примере для окружности)
Вот пример для удлиненной циклоиды:
Код:
Sub Macro1()
'
' Recorded 03.11.2010

' Description:
'

Dim s5 As Shape
Dim crvs5 As Curve
a = 0.3
b = 3
lam = 1.8
For i = 0 To 360
x = 5 + (b - a) * Cos(i * 3.14 / 180) + lam * a * Cos((b - a) * (i * 3.14 / 180) / a)
y = 5 + (b - a) * Sin(i * 3.14 / 180) + lam * a * Sin((b - a) * (i * 3.14 / 180) / a)

Set crvs5 = CreateCurve(ActiveDocument)
With crvs5.CreateSubPath(x, y)
.AppendLineSegment 5 + (b - a) * Cos((i - 1) * 3.14 / 180) + lam * a * Cos((b - a) * ((i - 1) * 3.14 / 180) / a), 5 + (b - a) * Sin((i - 1) * 3.14 / 180) + lam * a * Sin((b - a) * ((i - 1) * 3.14 / 180) / a)
End With
Set s5 = ActiveLayer.CreateCurve(crvs5)

Next i


End Sub

Вот она сама:

Ответ отправил: Сучкова Татьяна Михайловна (Администратор)
Ответ отправлен: 03.11.2010, 21:38
Номер ответа: 263804
Россия, Орск
ICQ # 101137510

Вам помог ответ? Пожалуйста, поблагодарите эксперта за это!
Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 263804 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:
  • Ответ поддержали (отметили как правильный): 1 чел.



    Оценить выпуск »
    Нам очень важно Ваше мнение об этом выпуске рассылки!

    Задать вопрос экспертам этой рассылки »

    Скажите "спасибо" эксперту, который помог Вам!

    Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
    на короткий номер 1151 (Россия)

    Номер ответа и конкретный текст СМС указан внизу каждого ответа.

    Полный список номеров »

    * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов)
    ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
    *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.


    © 2001-2010, Портал RFPRO.RU, Россия
    Авторское право: ООО "Мастер-Эксперт Про"
    Автор: Калашников О.А. | Программирование: Гладенюк А.Г.
    Хостинг: Компания "Московский хостер"
    Версия системы: 2010.6.22 от 02.11.2010

    В избранное