【入門編】【初心者向け】選択したベクター図形を一括して同心円状に縮小・複製して幾何学的なアートパターンを生成する自動化 – CorelDRAW VBA解析バイブル

スポンサーリンク

CorelDRAW VBAで幾何学模様を操る:自動化の第一歩を踏み出そう

こんにちは。CorelDRAWの自動化の世界へようこそ。
「マクロの記録」ボタンを押して、生成されたコードの多さに圧倒された経験はありませんか?

実は、CorelDRAWのVBA(Visual Basic for Applications)をマスターするということは、「CorelDRAWという巨大な心臓部に対して、直接コマンドを送り込む権利を得る」ことと同義です。今日は、単なる作業の効率化ではなく、数学的な美しさをワンクリックで描き出す「幾何学模様生成マクロ」を通じて、オブジェクト操作の本質を伝授します。

準備はいいですか? 手を動かしながら、CorelDRAWの深淵を覗いていきましょう。

1. なぜ「オブジェクト操作」がVBAの核心なのか

CorelDRAWのVBAにおいて最も重要な概念は、「ActiveSelection(現在選択しているもの)」「Shapeオブジェクト」の関係です。

私たちが手作業で行う「縮小」や「回転」という操作は、VBAの世界では「Shapeオブジェクトのプロパティを書き換える」という数学的な処理に置き換わります。この処理をループ(繰り返し)させることで、人間には到底描けない緻密なパターンが生まれます。

2. 幾何学模様生成マクロの実装

今回作成するマクロは、以下のロジックで動きます。
1. 現在選択している図形を取得する
2. 指定した回数分だけ「コピー→縮小→回転」を繰り返す
3. 新しい図形を生成し、配置する

以下のコードをVBAエディタ(`Alt + F11`)に貼り付けてみてください。

Sub GenerateGeometricPattern()
‘ — 設定項目 —
Dim iterations As Integer: iterations = 30 ‘ 生成する図形の数
Dim scaleFactor As Double: scaleFactor = 0.95 ‘ 縮小率 (95%)
Dim rotateAngle As Double: rotateAngle = 10 ‘ 回転角 (度)
‘ —————-

Dim doc As Document
Set doc = ActiveDocument

‘ 選択範囲がない場合は終了
If doc.Selection.Count = 0 Then
MsgBox “対象となる図形を選択してください。”
Exit Sub
End If

‘ 元の図形を基準にする
Dim originalShape As Shape
Set originalShape = doc.Selection(1)

Dim i As Integer
Dim currentShape As Shape
Set currentShape = originalShape

‘ 処理の高速化:描画更新を一時停止
Application.Optimization = True

‘ ループ開始
For i = 1 To iterations
‘ コピーを作成
Set currentShape = currentShape.Duplicate()

‘ 縮小処理 (幅と高さを指定倍率にする)
currentShape.SetSize currentShape.SizeWidth scaleFactor, _
currentShape.SizeHeight scaleFactor

‘ 回転処理
currentShape.Rotate rotateAngle
Next i

‘ 描画更新を再開
Application.Optimization = False
doc.ActiveWindow.Refresh

MsgBox “幾何学模様が完成しました!”
End Sub

3. コードを読み解く:ここがプロのポイント

初心者が陥りやすい「エラー」や「重い動作」を回避するために、以下の3点だけは覚えて帰ってください。

  • `Application.Optimization = True` の魔法

CorelDRAWは、図形が1つ増えるたびに画面を再描画しようとします。100回ループすれば100回再描画が走り、動作が重くなります。このコマンドで一時的に描画を止め、最後にまとめて反映させるのが、現場で生き残るプロの鉄則です。

  • `.Duplicate()` のライフサイクル

コピーを作成する際、`Duplicate`メソッドは「新しいShapeオブジェクト」を返します。この戻り値を次の処理の起点(`Set currentShape = …`)にすることで、連鎖的な縮小・回転が可能になります。

  • オブジェクトの参照

`doc.Selection(1)`は、選択中の最初のオブジェクトを指します。もし複数の図形を選択して実行した場合、このコードは一番上の図形だけを対象にします。「意図しない選択への対応」も、堅牢なプログラムには不可欠です。

4. さあ、試してみましょう

1. CorelDRAWで適当な四角形や星型を描きます。
2. その図形を選択した状態で、先ほどのマクロを実行してください。
3. 瞬時に幾何学的な曼荼羅のようなパターンが生成されたはずです。

さらに上を目指すあなたへ

このコードを理解できたら、次は`rotateAngle`や`scaleFactor`をループの経過(`i`)に応じて変化させてみてください。例えば、`rotateAngle = 10 i` とすれば、渦を巻くようなダイナミックな動きに変わります。

CorelDRAW VBAは、あなたの「手」を「計算機」に変えるツールです。一度仕組みを理解すれば、どんな複雑なデザインも数秒で生成できるようになります。

何かわからないことがあれば、またいつでも聞きに来てくださいね。あなたのクリエイティブな挑戦を、心から応援しています!

タイトルとURLをコピーしました