Sponsored links

【AutoLISP リスト】リストをデータベースとして使う

Sponsored links
AutoLISP
Sponsored links

複数の値をまとめて1つの変数に入れることができるリストは、データベースとしても活用できます。

図面ルールの変更があったとき、複数のスタンダードを使い分けたい時、コマンド用のコードを変更することなく、データベースを更新するだけで済むのでかなり便利ですよ!

Sponsored links

データベースリスト

複数のコマンドで使う情報は整理してリストにしておき、各コマンドで情報を得ることができるようにすると、変更があった時や別仕様で使いたいとき、コマンドプログラムは触ることなく、リストだけを書き換えるだで済むので便利です。

例えば

寸法情報として、寸法スタイル、寸法画層の、画層名、線種、色、印刷設定をひとまとめにして自作関数を作ります。

(defun DimInfo() 
   (list "JagaDimStyle" '("Jaga-DIM" "continuous" 2 "P"))
)

この自作関数があれば、

(car (DimInfo)) だけで寸法スタイル名を得ることができるし、
(cadr (DimInfo) だけで寸法用の画層情報がまとまったリストを得ることができます。

寸法画層を作成、現在の寸法スタイルを変更、選択した図形の画層変更、現在の画層を寸法画層に変更、寸法を寸法画層に作成、角度寸法を寸法画層に作成、、、などなど

寸法に関する自作コマンドを作った時に、寸法の情報を各コマンドに入れるのではなく、自作関数DimInfo を使って得るようにします。

そうすれば、もし、寸法スタイルの名前が変わったり画層情報が変わったというとき、寸法関係のプログラムをすべて見直して寸法情報に関するコードをすべて書き換えて、、、という必要がありません。

自作関数DimInfo を書き換えるだけで、それを参照にしているすべてのコマンドの更新ができます。

条件式との組み合わせ

いくつもの設定を使い分けたいというときは、条件式condを使って、その状況に合わせた寸法情報得るようにもできます。

(defun DimInfo (/ Lst) 

  (if (null Std) (setq Std (getint "スタンダード番号:")))
  
   (cond 
     ((= 1 Std) (setq Lst (list "JagaDimStyle" '("Jaga-DIM" "continuous" 2 "P"))))
     ((= 2 Std) (setq Lst (list "Standard2" '("standard2" "continuous" 3 "P"))))
     ((= 3 Std) (setq Lst (list "Jaga寸法" '("寸法" "continuous" 4 "P"))))     
   )
Lst
)

ドットペア

データベースとして置きたい情報が多いときは、ドットペアのリストを使った方が便利です。

まとめ

  • 情報をリストにして、複数のコマンドに出てくる情報をひとまとめに整理しておくと、変更があった時、複数の図面ルールを使い分けるときに便利。

Comments