Sponsored links

【AutoLISP サンプル】テキストに背景マスクをつける

Sponsored links
AutoLISP
Sponsored links
Jagaimo
Jagaimo

選択したテキスト/マルチテキストに背景マスクをつけます。

テキストはマルチテキストに変換されます。

Sponsored links

コマンドの内容

選択したテキスト/マルチテキストに、背景マスクを付ける、もしくは背景マスクを消します。
背景マスクの色は「図面の背景色」です。

選択はグループ選択です。
テキストかマルチテキストしか選択されないようにフィルターが付いています。
ドバーッとウィンドウ選択でその他の図形も一緒に選択しても、テキストとマルチテキストのみ選択されます。

テキストが選択された場合はマルチテキストに変換されます。(マスクサイズが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