AutoCADからARES CAD(アレス・キャド)に乗り換えた際、意外と戸惑うのが「ロックされた画層(レイヤー)へのオブジェクト移動」です。
AutoCADでは、ロックされていない図形を選択し、プロパティパレットからロック中の画層を指定すればそのまま移動できました。しかし、ARES CADの標準機能では「移動先の画層がロックされている」という理由で操作がブロックされてしまいます。
わざわざ画層マネージャーを開いてロックを解除し、移動してからまたロックし直すのは非常に手間がかかります。
そこで今回は、ARES CADでロックを解除せずに、図形をクリックするだけでロック画層へ強制移動できるオリジナルLisp(マクロ)をご紹介します。コピペですぐに使えるので、ぜひ業務効率化に役立ててください。
解決策:ロック画層へ強制移動するLispコード
Lispの entmod 関数を使って図形のデータベース(DXFコード8:画層名)を直接書き換えることで、UI上のロック制限をバイパスして移動させます。
以下のコードをすべてコピーし、Windowsの「メモ帳」などに貼り付けて保存してください。
- 保存ファイル名:
MatchLockedLayer.lsp - 文字コード: UTF-8(※日本語のメッセージや画層名の文字化けを防ぐため必須)
(defun c:MLL ( / ss targetEnt targetDxf layName i ent dxf)
;; 1. 移動させたいオブジェクト(ロックされていない図形)を複数選択
(princ "\nロック画層へ移動するオブジェクトを選択: ")
(setq ss (ssget "_:L")) ; "_:L" で既にロックされている図形は誤選択から除外
(if ss
(progn
;; 2. 移動先の画層を持つ図形(ロック中でも可)を1つクリックさせる
(setq targetEnt (car (entsel "\n移動先の画層上にある図形を1つクリック: ")))
(if targetEnt
(progn
;; クリックした図形から画層名(DXFコード8)を取得
(setq targetDxf (entget targetEnt))
(setq layName (cdr (assoc 8 targetDxf)))
(setq i 0)
;; 3. 選択された全オブジェクトの画層(DXFコード8)を書き換え
(while (< i (sslength ss))
(setq ent (ssname ss i))
(setq dxf (entget ent))
(setq dxf (subst (cons 8 layName) (assoc 8 dxf) dxf))
(entmod dxf)
(setq i (1+ i))
)
(princ (strcat "\n" (itoa (sslength ss)) " 個の図形を画層「" layName "」へ移動しました。"))
)
(princ "\n移動先の図形が選択されませんでした。")
)
)
(princ "\n移動するオブジェクトが選択されませんでした。")
)
(princ)
)
導入と使い方の手順
1. ARES CADにLispを読み込む
- ARES CADを開き、コマンドラインに
LOADLISP(またはAPPLOAD)と入力して Enter を押します。 - ダイアログが開いたら、先ほど保存した
MatchLockedLayer.lspを選択してロードします。
ワンポイント: 毎回読み込むのが面倒な場合は、同画面の「スタートアップ」にこのファイルを登録しておくと、ARES CAD起動時に自動で読み込まれるようになります。
2. コマンドを実行する(コマンド名:MLL)
- コマンドラインに
MLL(Match Locked Layerの略)と入力して Enter を押します。 - 移動させたい図形をドラッグなどでまとめて選択し、Enter で確定します。
※誤ってロック中の図形を囲んでしまっても、自動で選択から除外される安全設計になっています。 - 「移動先の画層上にある図形を1つクリック:」と表示されたら、移動先にしたいロック画層上の図形を1つクリックします。
- クリックした瞬間に、ロックを解除することなく画層の移動が完了します!
標準コマンドでの代替案(Lispを使わない場合)
「会社のPC制限などでLispファイルが入れられない」という環境の場合は、標準コマンドの MATCHLAYER(短縮:MAL)でも同じことが可能です。
- コマンドラインに
MATCHLAYERと入力して Enter。 - 移動させたい(非ロック)図形を選択して Enter。
- 移動先にしたい(ロック中)図形を1つクリック。
標準コマンドでも実現できますが、今回作成した MLL コマンドは「誤ってロック図形を選択対象に含めてしまう事故を防ぐ(_:L オプション)」処理を入れているため、より安全かつスピーディに作業を進められます。
まとめ
ARES CADではプロパティパレットからのロック画層への移動が制限されていますが、Lispを1つ用意しておくだけでAutoCAD時代と変わらない、あるいはそれ以上に快適なレイヤー整理が可能になります。
図面整理のストレスを減らしたい方は、ぜひ試してみてください!