Jagaimo
テキスト/マルチテキストを選択すると、テキストの内容が変わるAutoLISPコマンドです。
コマンドの内容
コマンドを実行すると、テキスト/マルチテキストを選択するように促されます。
空振りクリックミス対策として、テキスト/マルチテキスト以外を選択したり、何もない所をクリックすると処理が進まずに、テキスト/マルチテキストを選択するように促し続けます。
テキスト/マルチテキストを選択すると、その内容が変更されます。
コマンド実行例です。
テキスト xxxxxx が2つあります。
コマンドを実行してこのテキストをクリックすると、コマンド名 MyName では文字を”私の名前” コマンドYourNameでは文字を”あなたの名前”に変更します。
文字を変更する処理は、JagaimoLispTxChと名付けてオリジナル関数としてまとめました。
なので、この一行で1つのコマンドができます。
(defun c:MyName () (JagaimoLispTxCh “私の名前“))
コマンド名と新しい文字列を入れ替えて、類似コマンドを簡単にたくさん作ることができます。
AutoLISP サンプル
;/////////////////////////////////////////
;JagaimoLisp コマンド関数
;テキストチェンジ var.20210312
;---------------------------------------
(defun c:MyName () (JagaimoLispTxCh "私の名前"))
(defun c:YourName () (JagaimoLispTxCh "あなたの名前"))
;/////////////////////////////////////////
;=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
;JagaimoLisp関数 【JagaimoLispTxCh】テキストチェンジ
;----------------------------------------------
;<引数> NewTx 入れたいテキストの内容
;テキストかマルチテキスト選択でNewTxに変更
;=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
(defun JagaimoLispTxCh (NewTx / Objs Obj Flg Ent0 Ent)
(setq Objs (ssget "_I" '((0 . "TEXT,MTEXT"))))
(if Objs
(setq Obj (ssname Objs 0))
(progn
(setq Obj nil Flg "No")
(while Flg
(while (null Obj)
(setq Obj
(car
(entsel "\nSelect a TEXT/MTEXT: ")
);car
);setq
);while null Obj
(setq Ent0 (cdr(assoc 0 (entget OBJ))))
(if (or (= "TEXT" Ent0)(= "MTEXT" Ent0))
(setq Flg nil)
(setq Flg "No" Obj nil)
);if
);while Flg
);progn
);if
(setq Ent (Entget Obj))
(setq Ent (subst (cons 1 NewTx )(assoc 1 Ent) Ent))
(entmod Ent)
(princ "\n=========== JagaimoLISP.com ===========")
(princ));defun
;=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
参考記事
共通する部分を自作関数にする方法についての記事です。
Comments