Jagaimo
選択したテキスト/マルチテキストに背景マスクをつけます。
テキストはマルチテキストに変換されます。
コマンドの内容
選択したテキスト/マルチテキストに、背景マスクを付ける、もしくは背景マスクを消します。
背景マスクの色は「図面の背景色」です。
選択はグループ選択です。
テキストかマルチテキストしか選択されないようにフィルターが付いています。
ドバーッとウィンドウ選択でその他の図形も一緒に選択しても、テキストとマルチテキストのみ選択されます。
テキストが選択された場合はマルチテキストに変換されます。(マスクサイズが0以外の時)
コマンド名
JagaMask1 背景マスクサイズ1
JagaMask2 背景マスクサイズ2
JagaMask 背景マスクサイズをユーザー入力
JagaMask0 背景マスクを消す
サイズ違いの類似コマンドを作成できるようにマスクのサイズを引数として渡す自作関数にしました。
関数名は JagaimoLispTxMask で、引数としてマスクサイズを渡します。
引数を0にすると背景マスクを消すコマンドになります。
AutoLISP サンプル
;/////////////////////////////////////////
;JagaimoLisp コマンド関数
;テキストチェンジ var.20210907
;---------------------------------------
(defun c:JagaMask1 () (JagaimoLispTxMask 1))
(defun c:JagaMask2 () (JagaimoLispTxMask 2))
(defun c:JagaMask0 () (JagaimoLispTxMask 0))
(defun c:JagaMask () (JagaimoLispTxMask (getreal "Mask Size:")))
;/////////////////////////////////////////
;=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
;JagaimoLisp関数 【JagaimoLispTxMask】背景マスク
;----------------------------------------------
;<引数> MaskSize 背景マスクサイズ (0はマスク無し)
;=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
(defun JagaimoLispTxMask (MaskSize / *error* OBJs ObjNum Cnt JagaTxMskEnd JagaTxMskErr OldCmdEcho OldDynMode)
(setq DefError *error* *error* JagaTxMskErr)
(setq OldCmdEcho (getvar "CMDECHO"))
(setvar "CMDECHO" 0)
(command-s "undo" "be")
(setq OldDynMode (getvar "DYNMODE"))
(setvar "DYNMODE" 3)
;----------------------------------------------
(defun JagaTxMskEnd()
(command-s "undo" "end")
(setvar "filedia" 1)
(setq *error* DefError)
(setvar "CMDECHO" OldCmdEcho)
(setvar "DYNMODE" OldDynMode)
(princ "\n=========== JagaimoLISP.com ===========")
(princ));defun
;----------------------------------------------
(defun JagaTxMskErr (msg)
(JagaTxMskEND)
(princ "\nJagaTxMskErr\n")
(princ msg)
(princ));defun
;----------------------------------------------
(setq OBJs (ssget "I" '((0 . "TEXT,MTEXT"))))
(if (null OBJs)
(setq OBJs (ssget '((0 . "TEXT,MTEXT"))))
);if
(setq ObjNum (sslength OBJs))
(setq Cnt 0)
(if (= 0 MaskSize)
(progn
(while (< Cnt ObjNum)
(setq OBJ (ssname OBJs Cnt))
(vla-put-backgroundfill (vlax-ename->vla-object OBJ) 0)
(setq Cnt (+ Cnt 1))
);while
);progn
(progn
(while (< Cnt ObjNum)
(setq OBJ (ssname OBJs Cnt))
(setq Ent (entget OBJ))
(if (= "TEXT" (cdr(assoc 0 ENT)))
(progn
(command-s "TXT2MTXT" OBJ "")
(setq Ent (entget (entlast)))
));progn if
(setq Ent (append Ent (list (cons 90 3))))
(setq Ent (append Ent (list (cons 45 MaskSize))))
(entmod Ent)
(setq Cnt (+ Cnt 1))
);while
);progn
);if
(JagaTxMskEND)
(princ));defun
参考記事
共通する部分を自作関数にする方法についての記事です。
Comments