AutoCAD高速化の第一歩:自作LISPを支える「A_Utility.lsp」の作り方と設定術

「同じ作業を何度も繰り返して、日が暮れてしまった……」 「修正の手順が多すぎて、どこまでやったか分からなくなった……」

そんな悩みを解決するのが**LISP(リスプ)**です。まずは、LISPを使うと何が変わるのか、そして安全に使うための「土台」の作り方を解説します。

❓1. LISPってなに?(実は怖くない魔法の杖)

LISPを一言でいうと、**「AutoCADへの指示書」**です。

  • 繰り返し作業を一括で終わらせる: 100箇所ある修正も、コマンド一つで一瞬です。
  • 面倒な手順を減らす: 「画層を変えて、線を引いて、元の画層に戻る」といった3工程を、1クリックに凝縮できます。
  • 圧倒的な時短: 手作業で1時間かかる仕事が、数秒で終わる快感。これがLISPの魅力です。

「プログラムなんて難しそう……」と思うかもしれませんが、安心してください。
私もコードは書けません、先輩方が書いたモノを調べながら整理・調整しながら使っております。
しかし設定は難しくありません、これから説明する通りにファイルを置くだけで、誰でも動かすことができます。

🧞2. 自作LISPの守護神「A_Utility.lsp」の役割

便利なLISPも、途中でエラーが起きると「スナップが消えた!」「画層が勝手に変わった!」と困る原因になります。
それを防ぐのが、共通設定ファイル**「A_Utility.lsp」**です。

このファイルは、あなたの代わりに以下のことをしてくれます。

  • 「今の設定」を覚える: 実行前のオブジェクトスナップ(Oスナップ)や、現在画層を一時保存します。
  • エラー時に元に戻す: 万が一、途中でプログラムが止まっても、自動で「実行前の設定」に復元します。
  • 一発UNDO(元に戻す): 複雑な処理も、キーボードの「U」一回で実行前に戻せます。

📁3. LISPの「管理ルール」を決めよう

LISPファイルは、バラバラに置くとAutoCADも自分も見失ってしまいます。まずは「専用の基地(フォルダー)」を作りましょう。

  1. LISP管理フォルダーを作成: C:\AUTOCADLISP (Cドライブの下) や C:\Users\●●●(PC名)\Documents\LISP (マイドキュメントの中) など、分かりやすい場所に分かりやすい名前でフォルダーを作ります。
  • ココではC:\AUTOCADLISPを例にフォルダを作ります
  1. 同じ場所に置く: 「〇〇.lsp」などの個別のファイルと「A_Utility.lsp」は、必ず同じフォルダーに入れてください。

🔧4. 【重要】サポートファイルの検索パスを設定する

ここが一番のポイントです。これさえ設定すれば、後は使用するLISPファイルをこのフォルフダーに入れておくと、「AutoCADがLISPファイルはここにある」と理解見に行ってくれます

  1. AutoCADで OPTIONS コマンドを入力。
  2. **「ファイル」**タブをクリック。
  3. **「サポートファイルの検索パス」**の左にある「+」をクリックして展開。
  4. 右側の「追加」をクリック→「参照」をクリック
  1. から先ほど作ったフォルダー(例:C:\AUTOCADLISP)を選択。
  2. **「開く」**をクリック。AUTOCADKISPフォルダーが開いて、もう一度**「開く」**をクリック
  1. オプションの「サポートファイルの検索パス」に「C:¥AUTOCADLISP」なっているか確認。
  2. **「適用」**をクリック。

これで検索パス設定はOK👍

💾5. A_Utility.lsp のダウンロード

次のリンクからからダウンロードし
(又はメモ帳を開き、以下のコードを貼り付けて「A_Utility.lsp」という名前で保存)先ほど作ったLISP管理フォルダーに保存してください

※WordPressの仕様上、ファイルはZIP形式でダウンロードされます。ダウンロード後、ファイルを右クリックして「すべて展開(解凍)」してから、中に入っている A_Utility.lsp ファイルをご使用ください。

A_Utility.lsp
;================================================================
; 共通ユーティリティファイル (環境設定/エラー処理特化版)
;   - A_start/A_end/myerror のみを含む
;   - エラー時にも A_end を呼び出し、設定復元
;================================================================

; 共通コマンド (設定退避/開始処理)
(defun A_start ()
	; 環境変数を退避
	(setq OldCmdEcho (getvar "CMDECHO"))
	(setq OldOsmode (getvar "OSMODE"))
	(setq OldLayer (getvar "CLAYER"))
	(setq OldLType (getvar "CeLType"))
	(setq OldColor (getvar "CeColor"))
	(setq OldOrtho (getvar "ORTHOMODE"))
	(setq OldDStyle  (getvar "DIMSTYLE"))
        (setq OldPickAdd (getvar "PICKADD"))
        (setq OldPickFirst (getvar "PICKFIRST"))
        (setq OldSnapMode (getvar "SNAPMODE"))
    
    ; LISP実行に適した設定に変更
	(setvar "CMDECHO" 0)
	(command "undo" "be") ; UNDOグループ開始
	(princ)
)

;********************************
; 共通コマンド (設定復元/終了処理)
(defun A_end ()
	; 退避しておいた環境変数を復元
	(setvar "OSMODE" OldOsmode)
	(command "undo" "e") ; UNDOグループ終了
	(setvar "CLAYER" OldLayer)
	(setvar "CeLType" OldLType)
	(setvar "CeColor" OldColor)
	(setvar "ORTHOMODE" OldOrtho)
        (setvar "PICKADD" OldPickAdd)
        (setvar "PICKFIRST" OldPickFirst)
        (setvar "SNAPMODE" OldSnapMode)
    
	; 寸法スタイルを復元 (存在チェック付き)
	(if (and (/= (getvar "DIMSTYLE") OldDStyle)(tblsearch "DIMSTYLE" OldDStyle))
	(command "-dimstyle" "Restore" OldDStyle)
	)
    
	(setvar "CMDECHO" OldCmdEcho)
	(princ)
)

;********************************
; 独自エラー処理ルーチン 
(defun *myerror* (msg)
    ; 二重エラーを防ぐため、*error* を一旦 nil に戻す
	(setq *error* nil)
    
    ; 最重要: A_endを呼び出し、環境設定を必ず元に戻す
    (A_end)
    
    ; エラーメッセージを出力
	(princ (strcat "\n** Error in your LISP: " msg "\n"))
	(princ)
)
Lisp

✏️6. なぜこのファイルが必要なの?

例えば、LISPの途中で「 Esc 」キーを押して中止したとします。

普通のLISPだと、プログラムが書き換えた「スナップが全部オフになった状態」で止まってしまい、手動で戻すハメになります。

この「A_Utility.lsp」を連携させておけば、エラーが起きた瞬間に *myerror* が発動し、自動で設定を元通りにしてくれます。

「道具を使い終わったら、元の場所に綺麗に戻しておく」——この職人の基本を、プログラムが代わりにやってくれるわけです。

☝️7.本ブログのLISPを使うための「ルールとお願い」

このブログで紹介するLISPは、すべてこの「A_Utility.lsp」とセットで動作するように作られています。以下のポイントだけ覚えておいてください。

  • A_Utility.lsp は「基地の守護神」です
    このファイル単体では何も起きませんが、他のLISPと一緒に同じフォルダに入れておくことで、エラー時に自動で設定を元に戻してくれる「安全装置」として働きます。
  • 読み込みは自動で行われます
    今後紹介するLISPコードには、最初の一行で自動的に「A_Utility」を読み込む命令が入っています。皆さんが個別に(A_Utility.lspを)ロードする必要はありません。
  • 同じフォルダに同梱してください
    使うLISPと「A_Utility.lsp」は、必ず「手順3」で作った専用フォルダ(C:\AUTOCADLISP など)に一緒に入れてください。
  • 図面は最後に「人の目」でチェックを!
    このLISPは私が長年実務で使い込んできたものですが、図面の内容や環境によって予期せぬ挙動をする可能性もゼロではありません。計算された数値や結果は、必ず最後にご自身の目で確認してくださいね。道具はあくまで「手助け」、最終判断は設計者であるあなた自身の手で。

「まずはこの土台さえ作れば、あとは安心してLISPを使い倒せる」。
これが、最も安全で効率的な環境です。

準備ができたら、次はさっそく[効率化LISP(例:平均計算など)]を試して、その爆速体験を味わってみてください!

コメント