CorelDRAW VBAで「角の丸め」を極める:大量のパスを瞬時にモダン化する一括自動化術
こんにちは。CorelDRAWの自動化の世界へようこそ。
「マクロの記録」ボタンを押して、生成された無機質なコードを眺めて溜息をついたことはありませんか?記録されたコードは、いわば「その場限りの足跡」に過ぎません。
今回は、数千個のパスオブジェクトを抱えるデザインドキュメントに対し、プログラムから直接「角の丸め(フィレット)」を数値制御で適用し、デザインのトーン&マナーを統一する「プロの自動化術」を伝授します。
—
1. なぜ「手動」でなく「VBA」なのか?
数枚のロゴなら手動で十分です。しかし、アイコンセットや複雑なベクターイラスト全体に「統一された丸み」を持たせようとすると、人間は必ずミスをします。
CorelDRAWの内部エンジンは、オブジェクトの「ノード」を数学的な座標として管理しています。VBAを使えば、以下の利点が得られます。
- 完全なる再現性: パラメータを数値で指定するため、誰がいつ実行しても同じ結果になります。
- 一括処理: 手作業では数時間かかる作業を、数秒で完了させます。
- デザインの品質保証: ノードの密度や曲率を数学的に制御することで、意図しない歪みを防げます。
—
2. 実践:パスを一括で丸めるコード
CorelDRAW VBAにおいて、角を丸めるには `EffectFillet` メソッドを活用します。しかし、単に命令を出すだけでは不十分です。「選択範囲内のパスのみを対象にする」という安全策を講じるのが、中級者へのステップアップです。
以下のコードをVBAエディタ(Alt + F11)に貼り付けてみてください。
Sub BatchRoundCorners()
Dim s As Shape
Dim sr As ShapeRange
Dim radius As Double
‘ 丸め半径をインチ単位で指定(ドキュメント単位に合わせる)
radius = 0.05
‘ 現在選択しているオブジェクトを取得
Set sr = ActiveSelectionRange
‘ 選択漏れをチェック
If sr.Count = 0 Then
MsgBox “処理対象のオブジェクトを選択してください。”
Exit Sub
End If
‘ 処理の高速化:画面描画を停止する(これだけで体感速度が激変します)
Optimization = True
‘ 選択範囲をループ処理
For Each s In sr
‘ カーブオブジェクトであるか確認(そうでなければスキップ)
If s.Type = cdrCurveShape Then
‘ フィレット効果を適用
‘ 0 = 鋭角、1 = 丸め、2 = 面取り
s.Curve.Fillet radius, 1
End If
Next s
‘ 描画を再開して完了を通知
Optimization = False
ActiveWindow.Refresh
MsgBox “全オブジェクトの角を丸めました。”
End Sub
—
3. コードの「読み解き」:ここが設計の肝
この短いコードには、現場で生き残るための「3つの知見」が詰まっています。
① `Optimization = True` の重要性
CorelDRAWはオブジェクトを更新するたびに画面を再描画します。数千個のオブジェクトを処理する際、この再描画がボトルネックになります。`Optimization = True` は、処理が終わるまで脳死で描画させないという「現場の定石」です。
② `ShapeRange` 型の活用
`ActiveSelectionRange` を使うことで、複雑なレイヤー構造やグループ化された状態でも、現在「選択しているもの」だけを確実に捕まえることができます。これにより、マクロが予期せぬオブジェクトを破壊するリスクを排除します。
③ `If s.Type = cdrCurveShape` による安全装置
CorelDRAWには文字(テキスト)やビットマップ画像も混在します。これらに無理やり「角の丸め」を実行させるとマクロはエラーで停止します。必ず`Type`を確認する癖をつけてください。
—
4. 陥りやすいエラーと回避策
初心者がよく踏む地雷は「単位の不一致」です。
CorelDRAWの内部単位は「インチ」ベースであることが多いですが、ドキュメント設定が「ミリメートル」や「ピクセル」の場合、期待した丸みになりません。
- 回避策: `ActiveDocument.Unit` を使用して、現在の単位を基準に計算式を組み立てるか、常に一定の単位(例: `0.03937`を掛けてミリをインチ換算する)を意識してください。
—
最後に:自動化は「デザインの拡張」である
多くの人は「自動化=手抜き」と考えがちですが、違います。
「自動化とは、手作業では到底到達できない緻密な計算をデザインに反映させるための、エンジニアリングによる拡張」です。
今回紹介した「角の丸め」を習得すれば、次は「特定の角度以上の角だけを丸める」といった条件分岐や、「サイズに応じて丸みの半径を自動計算する」といった、より高度なデザインプロセスへ進むことができます。
まずはこのコードを走らせ、自分の描いたパスが美しい曲線に変わる瞬間を楽しんでください。そこからが、本当の自動化エンジニアとしてのスタートラインです。
何か疑問があれば、いつでも聞いてください。あなたのクリエイティブを加速させるお手伝いをします。
