CorelDRAW VBAの深淵へ:数千の角を瞬時に操る「フィレット自動化」の極意
こんにちは。CorelDRAWの自動化の世界へようこそ。
「マクロの記録」ボタンを押して、生成されたコードの量に愕然としたことはありませんか? あれは自動化ではなく、単なる「作業の物真似」です。真の自動化エンジニアは、CorelDRAWのオブジェクトモデルを支配し、数学的に図形を制御します。
今回は、デザイン現場の苦行である「大量のパスの角丸め(フィレット)」を、VBAで完璧に制御する手法を伝授します。これさえ理解すれば、あなたはCorelDRAWの「手作業」から永遠に解放されます。
—
1. なぜ「手作業」から脱却すべきなのか?
デザイン現場で100個のアイコンを一括修正する場合、手作業では「選択→効果→数値入力」を100回繰り返すことになります。これは単なる時間の浪費ではなく、「ヒューマンエラー」という名の爆弾を抱えている状態です。
VBAを使えば、以下のメリットを享受できます。
- 一貫性: 全ての角が厳密に同じ数値で丸められる。
- 再現性: 修正指示が入っても、数値を書き換えて再実行するだけ。
- 精神的自由: コンピュータが計算している間に、あなたはよりクリエイティブな思考に集中できる。
—
2. 実践:一括フィレット適用マクロ
CorelDRAWの `Curve.Nodes` を操作することで、ノード単位でのフィレット制御が可能です。以下のコードをVBAエディタ(Alt+F11)に貼り付けてみてください。
Sub BatchFilletSelectedObjects()
‘ パフォーマンス向上のため、描画更新を一時停止
Optimization = True
Dim sr As ShapeRange
Dim shp As Shape
Dim radius As Double
‘ 指定する角の丸み(単位はドキュメント設定に依存)
radius = 0.5
Set sr = ActiveSelectionRange
If sr.Count = 0 Then
MsgBox “オブジェクトを1つ以上選択してください。”
Optimization = False
Exit Sub
End If
‘ 選択範囲内の全オブジェクトをループ
For Each shp In sr
‘ パス(曲線)オブジェクトのみを対象にする
If shp.Type = cdrCurveShape Then
‘ フィレット処理を実行(CorelDRAWの内部関数を活用)
‘ ※注:複雑なパスの場合はエラー回避のハンドリングが必要
On Error Resume Next
shp.Curve.Fillet radius
On Error GoTo 0
End If
Next shp
‘ 描画更新を再開
Optimization = False
ActiveWindow.Refresh
MsgBox “フィレット処理が完了しました。”
End Sub
—
3. コード解説:プロの視点
このコードで重要なポイントは2つだけです。
① `Optimization = True` の魔法
CorelDRAW VBAにおいて、最も避けるべきは「描画のチラつき」と「無駄なメモリ再描画」です。これを `True` にすることで、処理完了まで画面の更新を止め、処理速度を劇的に向上させます。大規模なプロジェクトほど、この一行が効いてきます。
② `ShapeRange` と `For Each` の力
「マクロの記録」では個々のIDを指定しがちですが、私たちは `ActiveSelectionRange` を使います。これにより、今ユーザーが選択しているもの全てが変数 `sr` に格納されます。あとはそれをループさせるだけ。柔軟性が段違いです。
—
4. 陥りやすい「罠」と回避策
初心者の方が最初につまずくポイントを整理しました。
- 「直線のみのオブジェクト」への適用:
フィレットは「ノード」の角度に基づいて計算されます。極端に短いセグメントを持つパスに無理な数値を適用するとエラーになります。`On Error Resume Next` で処理をスキップさせるのが、現場での賢い生存戦略です。
- 単位の不一致:
CorelDRAWの内部単位は「インチ」や「mm」などドキュメントの設定に依存します。`ActiveDocument.Unit` を確認し、計算式に変換を挟む習慣をつけましょう。
—
最後に:自動化は「あなたの意志」です
今回紹介したコードは、あくまで「入り口」です。
ここからさらに「特定のレイヤーにあるオブジェクトだけを抽出する」「角の角度を判別して特定の条件の角だけ丸める」といった高度なロジックを組み込むことも可能です。
VBAは、単なるプログラミング言語ではなく、CorelDRAWという巨大なキャンバスを操るための「指揮棒」です。恐れずに、まずはこのコードの数値をいじるところから始めてみてください。
あなたのクリエイティブワークが、より速く、より正確になることを願っています。何か不明点があれば、いつでも聞いてくださいね。応援しています!
