お知らせ

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

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

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

2013年5月13日月曜日

線分の作成(VLISP ActiveX)



おはようございます。

今日はいよいよ線分を描くところについてです。(以下のコードの最後の行)

(vl-load-com)
(setq acadObject (vlax-get-acad-object))
(setq acadDocument (vla-get-ActiveDocument acadObject))
(setq mSpace (vla-get-ModelSpace acadDocument))
(setq myLine (vlax-invoke-method mSpace 'AddLine (vlax-3D-point 100.0 100.0 0.0)  (vlax-3D-point 200.0 200.0 0.0)))

ここでは vlax-invoke-method という関数を使用しています。
vlax-invoke-method 関数の使い方は以下のようになります。
(vlax-invoke-method obj method arg [arg...])
最初の引数 obj は VLA オブジェクトです。
この場合は、線分をモデル空間に作成するのでモデル空間の VLA オブジェクトを代入した mSpace を指定しています。

2 番目の引数 method は実行したい ActiveX メソッドの最初に ' を付けたものです。

3 番目以降の引数は、ActiveX メソッドの引数です。


AddLine メソッドの引数に始点 (100,100,0) と終点 (200,200,0) を指定して線分を描いてるってことです。

ここで、始点と終点を指定するのに vlax-3D-point って関数を使ってますが、この関数は ActiveX 互換(バリアント型)の 3 次元の点データを作成するのもです。

AddLine メソッドの引数の始点と終点はこのバリアント型っていう決まりがあるので、こうやっています。
AutoLISP の entmake 関数で線分を作成するときみたいに (list 10 100.0 100.0 0.0) とか (list 11 200.0 200.0 0.0) のように始点と終点を指定しちゃダメなんです。



ところで、この AcviveX メソッドってなんのことでしょうか???


AutoLISP では setq とか entsel とか entget を関数って言ってますよね。
ActiveX でも関数のようなものがあって、これを関数ではなくてメソッドって言ってます。
なので、ActiveX の関数なんだなって思えば分かりやすいかもしれません。


で、今回は線分を作成する ActiveX メソッドの AddLine っていうものを使ってます。


へ~っていう感じですが、線分を作成するときに AddLine メソッドを使うってどうやったら分かるんでしょうか???

例えば、じゃあ今度は円を作成してみようってときはどんなメソッドを使えばいいの???っで思っちゃいますよね。


それを調べるには、『AutoCAD ActiveX/VBA リファレンス』 っていうヘルプを見るんですがそれについては次回紹介しようと思います。


0 件のコメント:

コメントを投稿