Sponsored links

【AutoLISP コマンド操作】文字スタイルを作るコマンド

Sponsored links
基礎編
Sponsored links

文字スタイルを作るAutoLISPコマンドを作成します。

通常、文字スタイルはダイアログボックスを利用して管理しますが、AutoLISPでも画層を作ったり設定を変更したりできます。

Sponsored links

コマンド -STYLE [文字スタイル管理]

STYLE[文字スタイル管理]は、文字スタイル管理ダイアログボックスを出すコマンドですが、実はもう一つ、先頭に-(ハイフン)がついた -STYLE[文字スタイル管理] というコマンドがあります。

このハイフンがついた-STYLE[文字スタイル管理] では、ダイアログボックスは出てこなくて、コマンドラインを使って文字スタイルを作成したり変更したりできます。

詳しくはヘルプページで確認するか、コマンド実行時に出てくるプロンプト(AutoCADがユーザーに選択などを促すメッセージ)で確認してください。

AutoLISPで操作するときは、STYLE、-STYLE、どちらのコマンドを使ってもダイアログボックスは出てきません。

  • 文字スタイル名
  • フォント名
  • 文字の高さ
  • 幅係数
  • 傾斜角度
  • 左右反転
  • 上下反転
  • 縦書き

これらのオプションを入力して設定します。

AutoLISPプログラム

コマンド名はtest です。

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

(princ));defun

AutoLISPの解説

STYLE[文字スタイル管理] コマンドを実行して、作りたい文字スタイルの形式に沿って値を入力していきます。

このコマンドでは

  • 文字スタイル名 Jaga-Style-L
  • フォント名 romans
  • 文字の高さ 5
  • 幅係数 1
  • 傾斜角度 0
  • 左右反転 しない
  • 上下反転 しない
  • 縦書き しない

という文字スタイルが作成されます。

カスタマイズ例

テキスト/マルチテキストを特定の文字スタイルを変更するコマンドや、特定の文字スタイルでテキスト/マルチテキストを作成するコマンドなどを作った時に、その文字スタイルが無かったときを想定して、今回の”文字スタイルを作成する” と言うルーティーンが入っていた方が便利です。

もし、すでに同じ名前の文字スタイルがあれば上書きされてしまうので、もし、文字スタイルがあれば何もしない、無ければ作成する。というのを加えた方がいいと思います。後日記事にします。

まとめ

  • STYLE[文字スタイル管理]は、ハイフンを付けて-STYLEにするとコマンドラインで編集できる。
  • 文字スタイル名、フォント名、文字の高さ、幅係数、傾斜角度、左右反転、上下反転、縦書き を入力することで文字スタイルを定義できる。

関連記事

選択した文字のテキスト/マルチテキストを特定の文字スタイルと画層に変更するサンプルコマンドです。
この記事にあるように。「もし特定の文字スタイルが無ければ作る」処理も入れています。

画層を作る処理についての記事です。

Comments

  1. 堂込 澄生 より:

    お世話になります。
    拝見し勉強しております。重宝しております。ありがとうございます。
    誠に申し訳ありませんが、
    [図面上の選択した文字の幅係数のみを1に変更する]LISPをご教授いただけないでしょうか。
    よろしくお願い申し上げます。

  2. Jagaimo より:

    つたないブログですが、参考にしていただけて幸いです。

    テキストの幅係数はDXF図形情報の書き換えで変更できます。幅係数のグループコードは41です。(参考記事 https://jagaimolisp.com/subst-entmod/)
    マルチテキストの場合は違う処理になります。

    (defun c:test (/ Ent)

      (setq Ent (entget (car (entsel "テキストを選択:"))))

    (setq Ent
    (subst
    (cons 41 1)
    (assoc 41 Ent)
    Ent)
    )
    (entmod Ent)

    (princ))

  3. 堂込 澄生 より:

    お世話になります。
    ありがとうございました
    返事が遅くなりまして申し訳ありません。
    テキスト及びマルチテキストで希望通りのことが出来ました。
    テキストの「参考記事 https://jagaimolisp.com/subst-entmod/)」も分かりやすく丁寧に記載してありまして助かりました。
    勉強をしていきたいと考えます。
    今後ともよろしくお願い申し上げます。

  4. Jagaimo より:

    マルチテキストでも出来たのですね。よかった。