チュートリアル: AutoLISP Extension で LSP ファイルをデバッグする(AutoLISP/VS Code)

AutoLISP (LSP)ファイルを作成し、コード文をファイルに記入したら、Visual Studio Code を AutoCAD に接続し、Visual Studio Code が提供する多くのデバッグ ツールを使用してカスタム関数をステップ実行することができます。

注: AutoCAD LT では、AutoLISP Extension for Microsoft Visual Studio (VS) Code を使用しての AutoLISP プログラムのデバッグはサポートされていません。

前提条件

  1. Visual Studio Code をワークステーションにインストールする。
  2. AutoCAD AutoLISP Extension をインストールして環境設定する。

このチュートリアルのトピック

AutoLISP (LSP)ファイルを開く

LSP ファイルをデバッグする前に、まずデバッグする LSP ファイルを開くことをお勧めします。現在のエディタ ウィンドウで開いている LSP ファイルは、デバッグのために Visual Studio Code が AutoCAD に初めて接続されたときに AutoCAD にロードされます。

次の手順では、Visual Studio Code で Create-LSP-Tutorial.lsp ファイルを開く方法について説明します。

  1. Visual Studio Code を起動します。
  2. Visual Studio Code の[Activity Bar]で[Explorer]をクリックします。
  3. [Explorer]ビューの[LSP Files]の下の Create-LSP-Tutorial.lsp をクリックして開き、それを現在のエディタ ウィンドウにします。

    LSP Files フォルダが開いていない場合は、[File]メニュー > [Open Folder/Open]をクリックします。次に、LSP Files フォルダを参照して選択します。

デバッグ用に AutoCAD にアタッチして AutoLISP (LSP)ファイルをロードする

AutoLISP Extension を適切に環境設定し、現在のエディタ ウィンドウで LSP ファイルを開いたら、Visual Studio Code を使用して LSP ファイルに保存されている AutoLISP コード文をデバッグする準備は完了です。

次の手順では、デバッグ用に Visual Studio Code を AutoCAD にアタッチする方法について説明します。

  1. AutoCAD 2024 を起動します。
  2. Visual Studio Code に切り替えます。
  3. Visual Studio Code で、[Run]メニュー > [Start Debugging]をクリックします。
  4. [Configurations]メニューから[AutoCAD AutoLISP Debug: Attach]を選択します。
  5. [Processes]メニューで、AutoCAD 2024 の実行中のインスタンスを表すプロセスを選択します。

    Visual Studio Code が、現在の作図ウィンドウにロードされる現在のエディタ ウィンドウ内の LSP ファイルとともに、AutoCAD にアタッチされます。

    Visual Studio Code のステータス バーの色が青からオレンジに変わり、Visual Studio Code が AutoCAD に正常にアタッチされたことがわかります。

  6. AutoCAD に戻ります。
  7. コマンド プロンプトに対して、hello と入力します。
  8. プロンプト「Enter a message:」に対して、Hello from AutoCAD! と入力して[Enter]を押します。

    メッセージ ボックスに「Hello from AutoCAD!」と表示されます。

  9. [OK]をクリックしてメッセージ ボックスを閉じます。
  10. コマンド プロンプトに対して、drawline と入力します。線分の 2 つの端点を指定します。

    指定した点の間に線分が描かれ、現在の画層に配置されます。

文にブレークポイントを追加する

ブレークポイントを使用して、コード文の実行を中断することができます。実行を中断して、次のことができます。

次の手順では、現在のエディタ ウィンドウで開いている Create-LSP-Tutorial.lsp ファイルにブレークポイントを追加する方法について説明します。

行ブレークポイント
  1. Visual Studio Code に切り替えます。
  2. エディタ ウィンドウの左余白で、行 3 の左側をクリックして、その行のコード文の先頭にブレークポイントを追加します。

    ブレークポイントが追加されたことを示す赤い円が表示されます。

  3. AutoCAD に切り替えます。
  4. コマンド プロンプトに対して、hello と入力します。

    hello 関数が開始され、コードの実行がブレークポイントのある行で中断されます。

  5. Visual Studio Code に戻ります。
  6. [Debug]ツールバーで、[Continue]をクリックして実行を再開します。
  7. AutoCAD に戻り、メッセージ ボックスに表示する文字列を入力します。
  8. [OK]をクリックしてメッセージ ボックスを閉じます。
インライン ブレークポイント
  1. Visual Studio Code に切り替えます。
  2. エディタ ウィンドウで、行 11 の左括弧の左側をクリックします。
  3. 右クリックして[Add Inline Breakpoint]を選択し、ネストした AutoLISP 式の先頭にブレークポイントを追加します。
  4. AutoCAD に切り替えます。
  5. コマンド プロンプトに対して、drawline と入力します。
  6. 線分の始点を指定します。

    最初の点を指定した後、インライン ブレークポイントによって実行が中断されます。

  7. Visual Studio Code に戻ります。
  8. [Debug]ツールバーで、[Continue]をクリックして実行を再開します。
  9. AutoCAD に戻り、線分の終点を指定します。

変数の値と文の戻り値を確認する

ブレークポイントによって実行が中断された際、変数に割り当てられている現在の値やコード文が返す値を確認することができます。

前のセクションでは、2 つの異なるブレークポイントを設定しました。次の手順では、それらのブレークポイントを使用してコードの実行を中断し、変数に割り当てられた値を表示します。

  1. AutoCAD に切り替えます。
  2. コマンド プロンプトに対して、drawline と入力します。
  3. 線分の始点を指定します。
  4. Visual Studio Code に切り替えます。
  5. 上またはハイライト表示されている文内の変数 pt1 にカーソルを合わせると、変数に割り当てられている現在の値が表示されます。
  6. [Debug]ツールバーで、[Step Into]をクリックします。
  7. AutoCAD に戻り、2 番目の点を指定します。
  8. Visual Studio Code に切り替えて、[Debug]ツールバーの[Step Into]を再度クリックします。
  9. 変数 pt2 に割り当てられている値を表示します。

    カーソルを変数に合わせると、現在割り当てられている値がツールチップに表示されます。[Run]ビューの[Variables]セクションには、すべてのローカル変数に割り当てられている値が表示されます。

  10. [Debug]ツールバーで、[Continue]をクリックして実行を再開します。

デバッグ中に AutoLISP (LSP)ファイルを再ロードする

カスタム プログラムのデバッグ中に、修正が必要なエラーが発生するのは避けられません。修正したら、行った変更をテストします。

次の手順では、Visual Studio Code でデバッグしている間に、drawline 関数に変更を加え、LSP ファイルを AutoCAD に再ロードする方法について説明します。

  1. Visual Studio Code に切り替えます。
  2. Create-LSP-Tutorial.lsp ファイルのエディタ ウィンドウで、次の太字の変更を加えます。
    ;; Draws a line between two points
    (defun c:drawline ( / pt1 pt2 sv_clayer) ;; Declared local variables
    ;; Store the current and create a new layer
    (setq sv_clayer (getvar "clayer"))
    (command "_.-layer" "_m" "Object" "_c" "5" "" "")
    
    ;; Prompt for two points
    (setq pt1 (getpoint "\nSpecify start point of line: ")
    pt2 (getpoint pt1 "\nSpecify end point of line: ")
    )
    
    ;; Check to see if the user specified two points
    (if (and pt1 pt2)
    (command "_.line" pt1 pt2 "")
    (prompt "\nInvalid or missing point(s)")
    )
    
    ;; Restore the previous layer
    (setvar "clayer" sv_clayer)
    
    ;; Exit quietly
    (princ)
    )
  3. LSP ファイルに変更を保存します。
  4. [Debug]ツールバーで、[Restart]をクリックします。

    Visual Studio Code は AutoCAD から切断され、現在の図面に LSP ファイルをロードする前に、同じ AutoCAD プロセスに再アタッチされます。

  5. AutoCAD に戻ります。
  6. コマンド プロンプトに対して、drawline と入力します。
  7. 線分の最初の点と 2 番目の点を指定します。

    今回は、青色が割り当てられている画層 Objects に線分が配置されていることに注目してください。

デバッグを終了する

LSP ファイルのデバッグが完了したら、Visual Studio Code を AutoCAD から切断する必要があります。

次の手順では、Visual Studio Code を AutoCAD から切断する方法について説明します。

  1. Visual Studio Code に切り替えます。
  2. [Debug]ツールバーで、[Disconnect]をクリックします。

    [Debug]ツールバーが閉じ、ステータス バーがオレンジから青に変わります。