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

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

分解が1個しかできない
(setq ss (ssget '((0 . "INSERT"))))
(command "explode" ss)

この方法で、複数のブロックを選択したとき、そのうちの1個しか分解できません。

LISPではなく、普通にコマンド入力すると選んだブロックすべてが分解されます。

仕方が無いので、
(setq ss (ssget '((0 . "INSERT"))))
(setq i 0)
(repeat (sslength ss)
(command "explode" (ssname ss i))
(setq i (1+ i))
)

として対処していますが、ブロック数が多いとかなり時間が掛かってしまいます。
コマンド入力で一括で分解すると2秒くらいで済むものが、上のLISPでは10数秒かかります。
  • ビリ-
  • 2025/02/04 (Tue) 11:06:23
Re: 分解が1個しかできない
https://forums.augi.com/showthread.php?11688-Explode-in-LISP-Does-Not-Explode-Selection-Set
ここの#3に記述がありますが、古いバージョンではexplaodeは1度に1個しか分解できなかったようです。
そのころ作成されたLispとの互換性のため、Lisp内では古い挙動をします。

この場合は、initcommandversionを使用します。

(setq ss (ssget '((0 . "INSERT"))))
(initcommandversion 2)
(command "explode" ss "")

としてみてください。
  • LUNE
  • 2025/02/04 (Tue) 15:18:32
Re: 分解が1個しかできない
(initcommandversion 2)を追加することで複数の分解が出来ました。

無事に解決できたのですが、もしご存じでしたら教えてください。

他のパソコンで、(initcommandversion 2)を追加していない状態でも複数分解できる物がありました。
そのパソコンだけです。
(initcommandversion 2)を追加したLISPでも正常に分解できています。

(initcommandversion 2)を追加しなくても、システム設定などで出来る様になるのでしょうか?
  • ビリ-
  • 2025/02/04 (Tue) 16:19:50
Re: 分解が1個しかできない
(initcommandversion 2)がなくても可能な場合、おそらく、システム変数QAFLAGSが1の状態なのかもしれません。
1にして試したら、可能でした。

システム変数QAFLAGSは、非公開で既定値が0です。
正式サポートされていないシステム変数なので、0にしておくのが望ましいと公式でも書かれています。
https://www.autodesk.com/jp/support/technical/article/caas/tsarticles/ts/5sqEqFGM8ues2vzekwSSk.html
  • LUNE
  • 2025/02/04 (Tue) 17:35:48
Re: 分解が1個しかできない
QAFLAGSは非公開のシステム変数なので、検索で分かる設定値のそれぞれの内容がどこまであっているのか、詳しいのかは分かりません。
1や1024に付随する副次的な機能かもしれませんし・・・
  • LUNE
  • 2025/02/05 (Wed) 09:24:20
Re: 分解が1個しかできない
すみません。前回書いたものを手違いで消してしまいました。

問題は解決しています。ありがとうございました。
  • ビリー
  • 2025/02/05 (Wed) 12:59:18

返信フォーム






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