Sponsored links

【AutoLISP サンプル】文字のスタイルと画層を変更

Sponsored links
AutoLISP
Sponsored links
Sponsored links

コマンドの内容

概要

フィルターを入れた選択セットでテキスト/マルチテキストのみを選び、文字スタイルと画層を変更します。

図形選択

グループ選択で複数の文字を変更することができます。
フィルターがかかっているので、テキスト/マルチテキストのみが選択されます。

文字スタイル

文字スタイルは ”Jaga-Style-L” に設定してあります。
文字スタイルが図面に無ければ作成します。

画層

文字用の画層は “Jaga-Text” に設定してあります。
画層が無ければ作成します。 

AutoLISP

コマンド名は Stl-JagaL です。

;//////////////////////////////////////////////////////////////////////////////////
;/////////////////////////////////////////
;JagaimoLisp コマンド関数
;文字スタイル変更  var.20200706
;---------------------------------------

(defun c:Stl-JagaL ( / Objs ObjNum Cnt TxH Ent)
  
	(setq Objs (Jaga00TxSs)) 
			(setq ObjNum (sslength OBJs) Cnt 0)
  
  (Jaga00StlJagaL)
   (setq TxH (assoc 40 (tblsearch "style" "Jaga-Style-L")))
    (Jaga01LyCk "Jaga-Text" "CONTINUOUS" 2 "P")
  
	(while (< Cnt ObjNum)
		(setq Ent (entget (ssname OBJs Cnt)))
	  	(setq Ent (subst (cons '7 "Jaga-Style-L")(assoc 7 Ent) Ent))
   	    (if (/= 0 (cdr TxH)) (setq Ent (subst TxH (assoc '40 Ent) Ent)))
   	      (setq Ent (subst (cons '8 "Jaga-Text")(assoc 8 Ent) Ent))
		(entmod Ent)

		(setq Cnt (+ Cnt 1))
	);while

  (princ))

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(defun Jaga00StlJagaL ()

  (if (null (tblsearch "style" "Jaga-Style-L"))
    (command-s "._STYLE"
            "Jaga-Style-L"  ;文字スタイル名
            "romans" ;フォント名
            "0" ;文字高さもしくは異尺度
            "1" ;幅係数
            "0" ;傾斜角度
            "N" ;左右反転
            "N" ;上下反転
            "N" ;縦書き 
    ) ;command-s
  );if    
(princ));defun

;------------------------------------------------

(defun Jaga00TxSs ( / OBJs ObjNum Lst)

	(setq OBJs (ssget "_I" '((0 . "TEXT,MTEXT"))))
	(if (null OBJs)
		(setq OBJs (ssget '((0 . "TEXT,MTEXT"))))
  );if
Objs
);defun

;=========================================================
(defun Jaga01LyCk (LyNm Lt Col Pl / LyInfo Ly62 Ly70)
         
(if (null (tblsearch "layer" LyNm )) 
    (progn
      (command-s ".-layer" 
                  "_N" LyNm 
		              "_L" Lt LyNm 
		              "_C" Col LyNm 
                  "_P" Pl LyNm 
      "") ;
       
  (alert (strcat " \n 画層 < " LyNm " > 作成しました\n")) 
  
  )) ;if progn
;----------------------------------------------------
;----------------------------------------------------
  (setq LyInfo (tblsearch "layer" LyNm)) ;
		  
   (if LyInfo 
   (progn
      (setq 
          Ly62 (cdr(assoc 62 LyInfo)) 
          Ly70 (cdr(assoc 70 LyInfo))
      ) ;setq 
;----------------------------------------------------  
     (if (> 0 Ly62) 
      (progn
            (command-s "._LAYER" "ON" LyNm "") 
            (alert (strcat " \n 画層 < " LyNm " > 非表示だったので表示にしました\n")) 
      ));if progn
;----------------------------------------------------      
      (if (= 1 (logand 1 Ly70)) 
         (progn
         (command-s "._LAYER" "T" LyNm "") 
            (alert (strcat " \n 画層 < " LyNm " > フリーズ解除しました")) 
      ));if progn
      ));if progn
;----------------------------------------------------
);defun

参考記事

テキストだけを選択する方法

文字だけ選択、テキストスタイル作成、画層の準備など自作関数にしてコマンドとは別に定義しています。

文字スタイルを作る

文字スタイルを変更

画層が無かったりフリーズ/非表示していた時の対策

図形の画層変更

Comments