【入門編】【初心者向け】新規アセンブリ作成時に標準ビュー(等角投影など)や原点表示状態をVBAで一括強制する表示設定自動化 – SolidWorks VBA解析バイブル

スポンサーリンク

こんにちは!SolidWorksの自動化の世界へようこそ。
チーフアーキテクトの私です。

「マクロの記録」ボタンを押して、何となく操作を記録してみたものの、いざ再生するとエラーが出たり、意図しない動きをしたりして頭を抱えていませんか?「もっとスマートに、自分の意のままにSolidWorksを動かしたい!」――その情熱こそが、あなたを優秀な自動化エンジニアへと引き上げる原動力です。

今回は、初心者の方が最初に直面する大きな壁の一つである「アセンブリ新規作成時の表示設定のバラつき」を、VBAの力で美しく解決する方法を伝授します。

ここをクリアすれば、SolidWorks VBAのオブジェクト操作の基本はバッチリですよ。一緒に一歩ずつ進んでいきましょう!

—

なぜ、アセンブリの「初期表示」をマクロで統一すべきなのか?

皆さんは、チームメンバーや他部署から受け取ったアセンブリを開いたとき、こんなストレスを感じたことはありませんか?

  • 「あれ? 向きがバラバラで、どこが正面だか分からない……」
  • 「原点や平面のアイコンが画面いっぱいに表示されていて、モデルが見づらい!」
  • 「等角投影(アイソメ)にしてレビューしたいのに、パースペクティブ(透視投影)がかかっている……」

設計者によって癖が違うため、ドキュメントを開くたびに手動でビューを整えるのは、地味に時間を奪うムダな作業です。

これを新規アセンブリを作成した瞬間、あるいはマクロの実行一つで一括強制できたらどうでしょう?
図面化の効率が跳ね上がり、設計レビューの品質も一気に均一化されます。今回はその魔法のコードをあなたに授けます。

—

現場で即戦力になる!初期化自動化マクロの全貌

まずは、百聞は一見にしかず。新規アセンブリドキュメントをプログラムから作成し、原点の非表示化、標準ビュー(等角投影)の設定、そして不要な表示要素のクリアをワンストップで行うコードを公開します。

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

‘ ==============================================================================
‘ 担当アーキテクト直伝:アセンブリ初期表示自動化マクロ
‘ 概要: 新規アセンブリの作成と同時に、表示設定(原点非表示、等角投影など)を強制適用します。
‘ ==============================================================================
Sub Main()

Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim templatePath As String
Dim errors As Long
Dim warnings As Long

‘ 1. SolidWorks アプリケーションのインスタンスを取得
Set swApp = Application.SldWorks
If swApp Is Nothing Then
MsgBox “SolidWorksが起動していません。”, vbCritical
Exit Sub
End If

‘ 2. 標準のアセンブリテンプレートのパスを取得(環境に合わせて調整してください)
templatePath = swApp.GetUserPreferenceStringValue(swUserPreferenceStringValue_e.swDefaultTemplateAssembly)

If templatePath = “” Then
MsgBox “デフォルトのアセンブリテンプレートが見つかりません。”, vbCritical
Exit Sub
End If

‘ 3. 新規アセンブリドキュメントを作成
Set swModel = swApp.NewDocument(templatePath, 0, 0, 0)

If swModel Is Nothing Then
MsgBox “アセンブリの新規作成に失敗しました。”, vbCritical
Exit Sub
End If

‘ — ここからが本命:表示設定の強制化フェーズ —

‘ ① 原点(Origin)の表示を非表示にする
‘ ※SolidWorksでは、システムオプションやドキュメントプロパティを操作して表示を制御します
Dim swModelDocExt As SldWorks.ModelDocExtension
Set swModelDocExt = swModel.Extension

‘ 原点の表示・非表示を切り替える(Falseで非表示)
‘ ※APIのバージョンや設定方法によりUserPreferenceを使うアプローチも有効です
boolstatus = swModelDocExt.SetUserPreferenceToggle(swUserPreferenceToggle_e.swViewOrigins, swUserPreferenceScope_e.swUserPreferenceScope_Document, False)

‘ ② 平面や軸などの参照ジオメトリを一括して非表示にする(すっきりさせるため)
boolstatus = swModelDocExt.SetUserPreferenceToggle(swUserPreferenceToggle_e.swDisplayPlanes, swUserPreferenceScope_e.swUserPreferenceScope_Document, False)
boolstatus = swModelDocExt.SetUserPreferenceToggle(swUserPreferenceToggle_e.swDisplayAxes, swUserPreferenceScope_e.swUserPreferenceScope_Document, False)

‘ ③ 標準ビュー(等角投影 / Isometric)を強制適用する
‘ swStandardView_e.swIsometric は等角投影を表す定数です
swModel.ShowNamedView2 “等角投影”, swStandardView_e.swIsometricView

‘ ④ 画面全体にモデルをズーム(ズーム全体表示)
swModel.ViewZoomtoFit2

‘ ユーザーへの完了通知
MsgBox “アセンブリの初期化が完了しました!美しい作業環境へようこそ。”, vbInformation, “自動化完了”

End Sub

—

コードの急所を解説!初心者が押さべき3つのポイント

このコードがなぜ美しく機能するのか、プロの視点で重要なポイントを3つに絞って解説します。

1. `Application.SldWorks` と `ModelDoc2` の関係を理解する

SolidWorks VBAの基本は、「今、どのドキュメントを触っているか」のコンテキストを掴むことです。

  • `swApp` は、SolidWorksという巨大なアプリケーションそのもの。
  • `swModel` は、現在開いている(あるいは今作った)個別の3Dモデルファイル。

新規作成 (`NewDocument`) を行うと、メモリ上に新しいアセンブリの空間が生まれ、それを `swModel` という変数で受け取ることで、その後の料理(設定変更)が可能になります。

2. 「マクロの記録」の限界を超える `ModelDocExtension`

「マクロの記録」をすると、UI上のボタンクリックがそのままコード化されます。しかし、それだと「どのボタンを押すか」に依存するため、画面解像度やテーマが変わっただけでバグります。

ここで使っている `swModelDocExt`(ModelDocExtension)は、UIをバイパスしてSolidWorksの内部データベースに直接命令を叩き込むための現代的な高級APIです。これを使うことで、高速かつ確実な設定変更が可能になります。

3. スコープ(適用範囲)の概念

コード内の `swUserPreferenceScope_Document` という記述に注目してください。
これは、「この設定を、今開いているこのドキュメントだけに適用する(Document)」という意味です。システム全体(System)を書き換えてしまうと、他の人の環境や既存のファイルに悪影響を与えてしまうため、アセンブリの初期化では必ずドキュメントスコープを指定するのがプロの作法です。

—

よくあるエラーと対策

初学者がこのコードを試すときによくハマるポイントを事前に共有しておきます。

  • エラー:「オブジェクト変数が設定されていません。」 (Run-time error ’91’)
  • 原因: `NewDocument` が失敗している(テンプレートパスが間違っているなど)のに、その後の `swModel` を操作しようとした場合に起きます。
  • 対策: テンプレートパスが正しく取得できているか、`Debug.Print templatePath` などでイミディエイトウインドウに出力して確認しましょう。
  • 日本語のビュー名「等角投影」でエラーが出る
  • 原因: お使いのSolidWorksの言語設定が英語(English)の場合、`Isometric` と指定する必要があります。
  • 対策: 環境に応じて `等角投影` を `Isometric` に書き換えてください。

—

まとめ:あなたのルーティンを自動化の第一歩に

今回は、アセンブリの新規作成時に表示設定を強制化し、誰が作業しても美しい状態からスタートできる自動化マクロを解説しました。

たったこれだけのコードですが、「マクロを記録するだけでは見えてこないAPIの本質(Extensionやスコープ)」に触れることができたはずです。ここをクリアできれば、部品表の自動出力や、一括ファイル保存といった、より高度な業務自動化への扉が開きます。

日々の「めんどくさい手作業」をコードで駆逐する快感を、ぜひ味わってください。
それでは、次回の高度な自動化の世界でお会いしましょう!

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