「作業セットにないオブジェクトをロック」をダイアログ以外から変更したい

「作業セットにないオブジェクトをロック」をダイアログ以外から変更したい

Miyamoco
Advocate Advocate
554件の閲覧回数
4件の返信
メッセージ1/5

「作業セットにないオブジェクトをロック」をダイアログ以外から変更したい

Miyamoco
Advocate
Advocate

インプレイス参照編集のダイアログで、「設定」タブの方に「作業セットにないオブジェクトをロック」のチェックボックスがあります。

普段はロックしていたいので通常はチェックを入れていて、まれにブロック外の寸法も一緒にストレッチしたい時があってチェックを外して編集→参照編集を保存で終了するのですが、インプレイス参照編集のダイアログ以外でそこのチェックを操作する方法がない為に また無駄にインプレイス参照編集ダイアログを開いてチェックをつけて編集せずに閉じる、という操作が発生してしまいます。

システム変数などで制御する方法は無いのでしょうか?

対応するLISPなどがあれば教えて欲しいです。

よろしくお願いします。

0 件のいいね
解決済み
555件の閲覧回数
4件の返信
返信 (4)
メッセージ2/5

N.H1971
Advisor
Advisor
解決済み

「作業セットにないオブジェクトをロック」のチェック状態は、レジストリに保存されているようです。

 

Lispで変更する場合、以下のようになります。

コマンド名はLOb_op、実行するたびに「ロック」←→「ロック解除」を切り替えます。

--------------------------------------------------

(defun c:LOb_op (/ regkey val)
(setq regkey (strcat "HKEY_CURRENT_USER\\" (vlax-product-key) "\\Profiles\\"(getvar "cprofile")"\\Dialogs\\RefeditDialog"))
(setq val (vl-registry-read regkey "LockObjects"))
(if (eq 0 val)
(progn
(vl-registry-write regkey "LockObjects" 1)
(princ "「作業セットにないオブジェクトをロック」しました")
)
(progn
(vl-registry-write regkey "LockObjects" 0)
(princ "「作業セットにないオブジェクトをロック」を解除しました")
)
)
(princ)

)

--------------------------------------------------



H N
AUG-JP Staff
AUG-JP

メッセージ3/5

Miyamoco
Advocate
Advocate

早速のlispご教授ありがとうございます。

試してみたのですが、アプリケーションロードで読み込ませると「正常にロードされました」とコマンドラインに表示された後に「エラー:入力のリスト形式に誤りがあります」と表示されます。

エンコードの形式が悪かったのか?といろいろ変えてみたのですが、うまくいかず…

(唯一 UTF-16BE(BOM無し)というのだけエラーを返さなかったのですが、コマンドを入力しても「そのようなコマンドはありません」と言われてしまいます)

lispの保存方法が悪いのでしょうか?

何か思い当たるところがあれば教えていただけると助かります。

よろしくお願いします。

 

そういえばこちらの作業環境を書いていませんでしたすみません。

使用CAD:AutoCAD Mechanical 2021

 

0 件のいいね
メッセージ4/5

N.H1971
Advisor
Advisor

すみません。

Lispを自分の環境から転記する際に、一番最後の「)」を落としてしまったようです。

上記のコードを修正しましたので、そちらを再度コピーして使用していただくか、ご自分のところのコードの一番最後に「)」(半角カッコ)を追記してください。

 

よろしくお願いします。



H N
AUG-JP Staff
AUG-JP

メッセージ5/5

Miyamoco
Advocate
Advocate

ありがとうございます!括弧の追加でうまく動きました。

こちらこそ、lispの基礎が分かってたら気づけたかもしれないのにすみません。お手数をおかけしました。

大変助かりました。