お知らせ

--------------------------------------------------

プログラム作成/コンサルティングの申し込みはこちら

--------------------------------------------------

2013年5月29日水曜日

モデル空間にあるすべてのオブジェクトに対して処理を行う(VLISP ActiveX)


おはようございます。

前回は vlax-for という関数を使って図面にあるすべての画層の情報を取得しました。


vlax-for 関数は、コレクションに含まれる個々のオブジェクトに対して繰り返し処理を行うものでしたよね。

画層の情報を取得したときは vla-get-Layers 関数で Layers コレクションを取得して、それ対して vlax-for 関数を使用しました。


ここで、以前 vla-get-ModelSpace 関数でモデル空間を取得するということをお話したのを覚えてます?
モデル空間と言っていたのですが、正確に言うと ModelSpace コレクション というものを取得しているんです。

なので、これもコレクションなんです。モデル空間にあるオブジェクト(線分とか円など)の集まりってことですね。


そこで、vlax-for 関数を使ってモデル空間にあるそれぞれのオブジェクトに対して処理を実行することもできるんです。


例えば、モデル空間にあるすべてのオブジェクトの色を ByLayer にしたいってときは、以下のような感じになります。


(vl-load-com)
(setq acadObject (vlax-get-acad-object))
(setq acadDocument (vla-get-ActiveDocument acadObject))

(setq mSpace (vla-get-ModelSpace acadDocument))

(vlax-for vlaobj mSpace
  (vla-put-Color vlaobj 256)
)

結構簡単ですよね。


0 件のコメント:

コメントを投稿