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

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

【AutoLISP】修正依頼
お世話になります。
つい最近AutoLISPを学び始めた超初心者です。
範囲選択で文字だけを選択したくLISPを作っているのですが...

(defun c:TXG (/)
(setq Objs (ssget '((0 . "*TEXT"))))
(princ))

上記を実行すると、確かに選択範囲に文字だけを選ぶ事はできているものの、
選択セット(?)に含まれず、移動もコピーも何も出来ない状態になります。
どうすれば選んだ文字を触れるようになるかご教授頂けると助かります...。

また、範囲選択などせずにLISPを実行するだけで、図面上の全ての文字だけが選択されるようにするには
どう修正したらいいかもさっぱり分からず...こちらもご教授頂けると助かります。

よろしくお願い致します。
  • 初心者
  • 2025/04/24 (Thu) 00:05:49
Re: 【AutoLISP】修正依頼
選択範囲内の文字を選択状態にするには、
(defun c:TXG (/)
(setq Objs (ssget '((0 . "*TEXT"))))
(command-s "pselect" Objs "" )
(princ))

図面上の文字をすべて選択状態にするには
(defun c:ATXG (/)
(command-s "zoom" "a")
(setq Objs (ssget "_X" '((0 . "*TEXT"))))
(command-s "pselect" Objs "" )
(princ))
※最初に図面全体にZOOMしてから、ssgetのXを使います。
  • LUNE
  • 2025/04/24 (Thu) 09:15:14
Re: 【AutoLISP】修正依頼
AIに聞いてみました。
Lispを貼り付けて、最後にオブジェクトを選択状態にしたい、と聞いたら
(defun c:TXG (/)
(setq Objs (ssget '((0 . "*TEXT"))))
(sssetfirst nil Objs)
(princ))
と返ってきました。

(command-s "pselect" Objs "" )

(sssetfirst nil Objs)
と書けるようです。
私も使ったことなかったです・・・
  • LUNE
  • 2025/04/24 (Thu) 14:05:01
Re: 【AutoLISP】修正依頼
sssetfirst は、現在の空間のオブジェクトしか適用できないので、
ssgetの引数には、(cons 410 (getvar "ctab"))を加えておく必要があるそうです。
(allで選択したり、ssget "X" としている場合、別空間のオブジェクトまで拾ってしまうからエラーになる)
  • Hamu
  • 2025/04/25 (Fri) 09:13:51 New
Re: 【AutoLISP】修正依頼
皆様ご返信本当にありがとうございます。
選択状態にするにはcommand~が必要だったのですね。
本当に勉強になります...

ちなみによければ追加でご教授頂きたいのですが
図面上の特定のテキストオブジェクトを選択したいときには
getstringを使うと思いますが、以下の状態で全然分からなくなり断念...

(defun c:TGS (/)
(command-s "zoom" "a")
(setq Objs (getstring "\n文字入力:"))
(setq Objs (ssget '((0 . "*TEXT"))))
(command-s "pselect" Objs "" )
(princ)
)

ここからどうすれば特定の文字だけ選択できるようになるか教えて頂く事できますでしょうか?
よろしくお願いします。
  • 初心者
  • 2025/04/25 (Fri) 10:37:16 New
Re: 【AutoLISP】修正依頼
(setq Objs (getstring "\n文字入力:"))
(setq Objs (ssget '((0 . "*TEXT"))))

と、違う物に対して同じ変数(Objs)を使うのは良くないです。
(setq str (getstring "\n文字入力:"))
として、
(setq Objs (ssget (list (cons 0 "*TEXT")(cons 1 str))))
としてみる。


>つい最近AutoLISPを学び始めた超初心者です。
※「作って下さい」ではなく、「自分で作りたい」という事ですので苦言を。
この程度の疑問は、ちょっと調べたら判る事です。
聞いた方が早い。のは判りますが、これからもっと難しい処理を考えていくことになるのでしょう。
そのとき、自分で調べて解決できないと苦労します。

都度、ここに聞いても良いですが、面倒な事は(解決方法が判っていたとしても)私は答えないかもしれません。
他の人達も、そう考える事は有るでしょうし、回答が来るまで何日も掛かってしまう事も有るでしょう。

調べる力を付けましょう。そうすれば大抵の事は他人に聞かなくても自己解決できます。
  • Hamu
  • 2025/04/25 (Fri) 12:30:56 New

返信フォーム






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