【入門編】【初心者向け】選択したベクター図形の中心座標を基準にして等間隔に複製・配置する幾何学模様生成マクロ – CorelDRAW VBA解析バイブル

スポンサーリンク

こんにちは!CorelDRAWの自動化の世界へようこそ。
マクロの記録ボタンを押して「なんだか動いたけれど、中身がよくわからない……」というモヤモヤを抱えていませんか?

今回は、デザインのアクセントや背景パターン制作でめちゃくちゃ重宝する「選択したベクター図形の中心座標を基準にして、回転させながら等間隔に連続複製・配置する幾何学模様生成マクロ」を一緒に作っていきます。

ここをクリアすれば、CorelDRAW VBAの「オブジェクト操作」「ループ処理」「座標の概念」という基本がバッチリ頭に入りますよ。難しい数式は必要ありません。優しく紐解いていくので、リラックスしてついてきてくださいね!

1. なぜ「マクロの記録」だけでは幾何学模様が作れないのか?

CorelDRAWの「変形」docker(ドッカー)を使えば、手動で図形を回転・複製することは簡単です。しかし、「これを30個、きれいに隙間なく並べたい」「ボタン一つで一瞬で生成したい」と思ったとき、手作業では限界が来ますよね。

ここでVBA(Visual Basic for Applications)の出番です。
プログラムの得意技は「同じ作業を高速で繰り返すこと(ループ)」「計算を間違えないこと」

今回のマクロの設計図はこうです:
1. 今、画面上で選択している図形を特定する。
2. その図形の中心座標をしっかりメモする。
3. 「360度を何個に分けるか」を計算し、決めた角度ずつ回転させながらコピー(複製)を繰り返す。

この3ステップをコードでどう表現するのか、次から見ていきましょう。

2. 実用コード:幾何学模様ジェネレータ

以下のコードを、CorelDRAWのVBAエディタ(`Alt + F11`)の標準モジュールにそのまま貼り付けてください。実務の現場でもそのまま使えるよう、安全装置と丁寧なコメントを入れています。

Sub CreateGeometricPattern()
‘ ==========================================
‘ 選択図形を中心に回転・複製する幾何学模様ジェネレータ
‘ ==========================================

‘ 1. エラーハンドリング(何も選択されていない時の対策)
If ActiveSelection.Shapes.Count = 0 Then
MsgBox “まずは基準となる図形を1つ選択してください!”, vbExclamation, “エラー”
Exit Sub
End If

‘ 2. 複数の図形が選択されている場合の対策
If ActiveSelection.Shapes.Count > 1 Then
MsgBox “図形は1つだけ選択してください。”, vbExclamation, “エラー”
Exit Sub
End If

‘ 3. 変数の定義(入れる箱を用意する)
Dim sourceShape As Shape
Dim centerX As Double, centerY As Double
Dim totalCopies As Integer
Dim angleStep As Double
Dim i As Integer
Dim newShape As Shape

‘ 4. 設定値の入力(ダイアログで個数を尋ねる)
Dim inputVal As String
inputVal = InputBox(“何個の図形に展開しますか?(推奨: 6〜36)”, “幾何学模様ジェネレータ”, “12”)

‘ キャンセルされたら終了
If inputVal = “” Then Exit Sub
totalCopies = CInt(inputVal)

‘ 5. 選択中の図形を変数に格納し、中心座標をゲットする
Set sourceShape = ActiveSelection.Shapes(1)

‘ CorelDRAWの座標系はデフォルトで「左下原点」。中心Xと中心Yを取得します。
centerX = sourceShape.CenterX
centerY = sourceShape.CenterY

‘ 6. 回転角度の計算(360度を分割)
angleStep = 360# / totalCopies

‘ 7. 画面描画を一旦ストップ(処理スピードを爆上げするプロのテクニック)
ActiveDocument.Optimization = True

‘ 8. ループ処理による連続複製と回転
‘ 1番目はすでに存在するので、2番目から「totalCopies」までループ
For i = 1 To totalCopies – 1
‘ その場で図形を複製
Set newShape = sourceShape.Duplicate

‘ 複製した図形を指定した中心座標を軸にして回転させる
‘ RotateEx(角度, 中心X, 中心Y)
newShape.RotateEx angleStep i, centerX, centerY
Next i

‘ 9. 画面描画を再開
ActiveDocument.Optimization = False
ActiveWindow.Refresh

‘ 完了メッセージ
MsgBox “美しい幾何学模様が完成しました!”, vbInformation, “完了”
End Sub

3. コードの注目ポイントを解説!

初心者の方につまづいてほしくないポイントを、エンジニア目線で分かりやすく解説します。

① 画面描画のロック(`Optimization = True`)

コードの後半にある `ActiveDocument.Optimization = True` と `False` のペア。これ、実はめちゃくちゃ重要です。
もしこれを書かないと、パソコンは「1個複製するごとに画面を書き換える」という無駄な労働を強いられ、処理が重くなります。裏側で一気に計算を終わらせて、最後に「はい、ドン!」と画面を更新させることで、一瞬で処理が終わるようになります。

② 中心座標を固定して回転させる(`RotateEx`)

CorelDRAW VBAで図形を回転させる際、ただ `Rotate` メソッドを使うと「図形自体のバウンディングボックスの中心」を基準に回転してしまい、きれいな円形になりません。
今回は、最初に取得した元の図形の中心座標(`centerX`, `centerY`)を `RotateEx` の引数にしっかりと渡すことで、「元の図形の中心をコンパスの針のようにして、綺麗に円周上に並べる」ことを実現しています。

4. 陥りやすいエラーと回避のコツ

マクロを動かしていると、たまに意図しない挙動に出会います。代表的なものを知っておくだけで、エラー怖さが一気に消えますよ。

  • エラー:「オブジェクト変数または With ブロック変数が見つかりません」
  • 原因: 図形を選択せずにマクロを実行してしまった時に起きがちです。
  • 対策: 今回のコードには最初に `If ActiveSelection.Shapes.Count = 0 Then` というガード(安全装置)を入れているので、このエラーは綺麗に回避できます。実務のコードには必ずこの「選択チェック」を入れましょう。
  • 模様が変な方向に散らばってしまう
  • 原因: 選択した図形がグループ化されていたり、線の太さや塗りの中心と実際のバウンディングボックスの中心がずれている場合があります。
  • 対策: 綺麗な正円や、星形、パス単体のオブジェクトを最初は選ぶのが成功のコツです。

おわりに:ここから広がる自動化の世界

お疲れ様でした!たったこれだけのコードで、シンプルな丸やパスが、息を飲むような美しい幾何学模様へと生まれ変わったはずです。

「このマクロの角度をランダムにしたらどうなるだろう?」
「カラーを少しずつグラデーション状に変えられたら面白いかも?」

そんな風に、プログラムを少しずついじりたくなったら、あなたもう立派なCorelDRAW自動化エンジニアの仲間入りです。
日々の退屈な繰り返し作業はVBAに任せて、あなたしか生み出せないクリエイティブなデザインに没頭してくださいね。それでは、次回の記事もお楽しみに!

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