AutoCAD AutoLISP Extension には、IntelliSense やコード スニペットなどの AutoLISP プログラムおよび DCL ファイルを簡単に記述できるようにする機能がいくつか備わっています。
このトピックでは、以下について学ぶことができます。
開いた AutoLISP ソース(LSP)または DCL ファイルのエディタ ウィンドウに入力すると、AutoCAD AutoLISP Extension により、入力した文字と一致する推奨関数とコード スニペットの一覧が表示されます。入力する文字が多いほど、一覧に表示される項目が少なくなります。一覧の項目を選択して関数名を完成したり、コード スニペットを使用します。また、矢印キーで使用する項目をハイライト表示してから[Tab]を押してその項目を完成することもできます。
組み込みの AutoLISP 関数または DCL タイル/属性のヘルプには、オンライン ヘルプを直接開いて参照する必要はなく、VS Code のエディタ ウィンドウからコンテキストに応じてアクセスすることができます。AutoLISP 関数または DCL タイル/属性のヘルプを表示するには、AutoLISP ソース(LSP)または DCL ファイルを含むエディタ ウィンドウで名前をクリックするかハイライト表示し、右クリックして[オンライン ヘルプを開く]を選択します。
AutoLISP ソース(LSP)ファイルまたは DCL ファイルは、行コメントおよびブロック コメントをサポートしています。コメントは任意の AutoLISP または DCL 文に手動で追加できますが、VS Code では、選択した AutoLISP または DCL 文に対して行コメントやブロック コメントを追加および削除できるようにするためにこの機能がサポートされています。
; Returns a CDATE value that includes milliseconds based on release ; Usage: (CDate) ; Replaces (rtos (getvar "CDATE") 2 8)
;| Returns a CDATE value that includes milliseconds based on release Usage: (CDate) Replaces (rtos (getvar "CDATE") 2 8) |;
// defines the Spacing Between Tiles edit box // :edit_box { // label = "&Spacing between tiles"; // key = "gp_spac"; // edit_width = 6; // }
/* defines the Spacing Between Tiles edit box :edit_box { label = "&Spacing between tiles"; key = "gp_spac"; edit_width = 6; } */
VS Code を使用して、現在のエディタ ウィンドウで開いている AutoLISP ソース(LSP)ファイル内で使用されているユーザ定義関数またはユーザ定義変数の定義を検索することができます。関数または変数の定義を検索する場合、VS Code は以下を検索します。
ユーザ定義関数またはユーザ定義変数の定義は、次のように定義されます。
関数の定義は、defun 関数を使用して定義されます。
(defun xxx ())
変数の定義は、次のいずれかで定義されます。
(defun xxx ( / varname)) (setq varname val)
変数の定義は、最初に AutoLISP 文または defun コード ブロックのローカル スコープ内で検索され、次にグローバル スコープ内で検索されます。
ユーザ定義関数またはユーザ定義変数の定義に移動するには、エディタ ウィンドウで名前をクリックするかハイライト表示し、右クリックして[Go to Definition]を選択するか、[F12]を押します。定義が見つかった場合、定義が見つかった場所にフォーカスが移動します。複数の定義が見つかることがあります。その場合は、定義フォーカスをどのインスタンスに移動するかを確認するプロンプトが表示されます。
VS Code は AutoLISP 文または複数行にまたがる DCL 定義に基づいて、「リージョン」と呼ばれるものを自動的に定義します。リージョンを展開または折りたたむことで、エディタ ウィンドウに現在表示されているコード文の数を最小限に抑えることができます。ユーザ定義リージョンを挿入して、サブ領域とも呼ばれる複数の文およびリージョンを、単一の折りたたみ可能なリージョンにグループ化することもできます。
ユーザ定義リージョンは、コメント ;#region で始まり、コメント ;#endregion で終わります。これらはコメントであるため、それぞれの後に、各リージョン内の文および定義の使用方法を説明するテキストを追加することができます。
AutoCAD AutoLISP Extension は、コード スニペットと呼ばれる小さなコード ブロックまたはサンプルをサポートしています。コード スニペットを使用すると、よく使用する関数や複雑なコード ブロックに対して必要な構文をすばやく追加できます。たとえば、AutoCAD AutoLISP Extension には If... Progn の略である ifp という名前のコード スニペットがあり、これにはネストした progn 文を含む if 文が含まれています。コード エディタで ifp と入力して[Tab]を押すと、コード スニペットを挿入することができます。
コード スニペットは VS Code の AutoComplete 機能の一部であり、先頭には AutoLISP 関数の名前を示すために使用されるレンチではなく正方形のアイコンが付きます。
AutoCAD AutoLISP Extension のコードには、60 以上のコード スニペットが含まれています。次に、AutoCAD AutoLISP Extension に付属しているコード スニペットの一部を示します。
getlayer |
(setq layer (cdr (assoc 8 entname))) |
ifp |
(if (testexpr) (progn (thenexpr) ) ) |
line |
(command "_line" "pt1" "pt2" "") |
open |
(setq fp "fname.txt") (setq f (open fp "mode")) (close f) |
while |
(while testexpr [expr ...]) |
AutoCAD AutoLISP Extension のコード スニペットは、次のいずれかの場所の snippets.json という名前のファイルに保存されます。