この掲示板は AutoCADマクロ屋本舗 の掲示板です。

【 注意 】最初に必ず ↓↓ 下記内容 ↓↓ を参照ください。
① マクロが分からない方は、まず 【 マクロ講座 】 を参照ください。
② 質問の前に 【 マクロ使用前の注意事項 】 をお読みください。
③ 質問する時は、新規投稿フォーム下の【 新規投稿時のお願い 】を必ずお読みください。

ロックされた画層を解除して基点コピー→終わったら画層状態を戻す
いつも参考にさせて頂いています。
Brics cadでロックされた画層を解除して基点コピー→終わったら画層状態を戻すというlispを作ったのですが、うまく動作しません。

・最初に画層状態を"temp"に保存
・画層ロックを全解除
・基点コピー
・画層状態を"temp"に復旧ですが、
基点コピーしようとすると、"temp"状態にもどってしまいます。
ご協力いただきたくよろしくおねがいします。


(defun c:SaveLayerState ()
(vl-catch-all-apply
'(lambda ()
(layerstate-save "temp" 4 nil)
(princ "\n画層状態が'temp'という名前で保存されました。")
(command "-layer" "u" "*" "")
(command "_copybase" 'pause)
(layerstate-restore "temp" nil)
(princ))
nil))
  • ruru
  • 2025/03/20 (Thu) 07:49:58
Re: ロックされた画層を解除して基点コピー→終わったら画層状態を戻す
基点コピーするオブジェクトを選択していないから?
  • Hamu
  • 2025/03/21 (Fri) 09:20:04
Re: ロックされた画層を解除して基点コピー→終わったら画層状態を戻す
Brics cadで動くかどうか分かりませんが、AutoCADなら以下で動作しました。
(command "_copybase" 'pause)ではなく、先に基点とオブジェクトを指定しています。
また、最後に作成した画層状態tempを削除しています。
これは、このコマンドを再度使用する場合に、tempという画層状態があると、layerstate-saveでは上書きできないからです。

(defun c:SaveLayerState (/ bpt ss)

(layerstate-save "temp" 4 nil)
(princ "\n画層状態が'temp'という名前で保存されました。")
(command "-layer" "u" "*" "")
(setq bpt (getpoint "\n基点を指定")
ss (ssget))
(command "_copybase" bpt ss "")
(layerstate-restore "temp" nil)
(layerstate-delete "temp")
(command "regen")
(princ)

)
  • LUNE
  • 2025/03/21 (Fri) 16:19:31
Re: ロックされた画層を解除して基点コピー→終わったら画層状態を戻す
LUNE様

ばっちり動作しました。ありがとうございます。
  • ruru
  • 2025/03/25 (Tue) 10:38:27

返信フォーム






プレビュー (投稿前に内容を確認)