Graebert Japan ヘルプセンター

9/17開催 | 無料オンラインイベント「Graebert neXt Japan 2026」

  1. Home
  2. /
  3. FAQ
  4. /
  5. 開発者向け情報
  6. /
  7. LISP リアクター関数の応用

LISP リアクター関数の応用

画層毎に線種尺度を設定することが可能です。

ソースコード

;;; ----------------------------------------------------------
;;; LayLScale.lsp
;;; 画層毎に線種尺度を設定する
;;; (C) Copyrights 2024 Graebert Japan LLC.
;;; ----------------------------------------------------------

;; 画層名と線種尺度のペアを設定(いくらでも追加可能)
(setq #LayLScale '(
    ("MODEL" . 1.0)
    ("MODEL2" . 2.0)
    ("MODEL4" . 4.0)
    ("MODEL8" . 8.0)
    ))

;; 線種尺度を書き換えるコールバック関数
(defun layLscaleReactor( cb data / obj item )
    ; 図形名をVLAオブジェクトに変換
    (if (setq obj (vlax-ename->vla-object (last data)))
        ; VLAオブジェクトは画層と線種尺度が使用できるか
        (if (and (vlax-property-available-p obj 'Layer)
            (vlax-property-available-p obj 'LinetypeScale T))
            ; 図形の画層から線種尺度のペアを取得できるか
            (if (setq item (assoc (vla-get-Layer obj) #LayLScale))
                ; 線種尺度がペアの設定値と一致していないとき
                (if (/= (cdr item) (vla-get-LinetypeScale obj))
                    ; 線種尺度を修正する
                    (vla-put-LinetypeScale obj (cdr item))
                )
            )
        )
    )
    ; VLAオブジェクトを解放する
    (setq obj nil)
)

;; Visual LISP データベース リアクターを設定
(vlr-acdb-reactor nil '(
    (:vlr-objectappended . layLscaleReactor)
    (:vlr-objectmodified . layLscaleReactor)
))

使い方

  1. 上記のコードを LayLScale.lsp というファイル名で保存します。
  2. LOADAPPLICATION コマンドで LayLScale.lsp ファイルをロードします。
  3. アクティブな画層を MODEL2, MODEL4 などに切り替えて図形を描くと、指定された線種尺度に変わります。
  4. 図形を選んで、プロパティパレットで MODEL2, MODEL4 画層に変更すると、指定された線種尺度に変わります。

変数 #LayLScale の値を変更すれば、任意の図面での利用が可能です。

短縮URL: https://jp-help.graebert.com/?p=38868

ARES CAD 活用リソース

ARES Commander 2027 リリース

ARES の最新バージョン ARES 2027 がリリースされました。ARES 2027 は、AI・自 動化・BIM・クラウドという、CADの各領域を強化した最新版です。

DWG図面をリンク1つで共有

表示専用リンクを使えば、DWG図面をリンクだけで安全に共有できます。
CADソフトを持っていない相手でもブラウザから閲覧し、コメントやマークアップを追加できます。

DWG図面を無料でオンライン表示

ARES Kudoの無料ビューアーを使えば、DWG図面をブラウザから簡単に表示できます。
インストール不要で図面の確認や計測ができ、コメントやマークアップで共同作業も可能です。