お知らせ

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

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

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

2013年5月5日日曜日

Visual LISP の ActiveX をはじめました


先日のブログでも書きましたが、Visual LISP の ActiveX についてこれからいろいろ調べていこうと思います。


ところで、最初に言っておかなければならないのですが、私はプログラム言語の専門家ではないので、私なりに独自に理解した内容について書いていこうと思っています。

なので、専門家から見れば正しくないこともあるかも知れませんが^^;、これから Visual LISP の ActiveX をやってみたいと思っている人と同じ目線で見ていけるのではないかと思っています。


『専門家から見れば違った理解だったとしても、自分がやりたいことができればいいや( ー`дー´)』 といった感じでやっていこうと思っています。


ということで、早速見ていこうと思うのですが、何か新しい言語を勉強するときって最初は 『Hello world!』 ですよね。

でも今回は 『Visual LISP の』 ということなので、ActiveX とは関係なく Visual LISP で 『Hello world!』 って表示できちゃいますよね。(参考までに、コマンド ラインに (alert "Hello world!") って入力すると、AutoCAD メッセージのウィンドウに 『Hello word!』 って表示されます。)


なので、まずはオブジェクトの作成からやってみたいと思います。


とりあえず線分を描いてみましょう。
線分は以下のコードで描くことができるようです。
(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)))


線分を 1 本描くだけなのに、いろいろコードを書かなきゃいけないんですね。
ActiveX でなければ以下のコードで描けますよね。

(entmake (list '(0 . "LINE") '(10 100.0 100.0 0.0) '(11 200.0 200.0 0.0)))



ActiveX だとなんだか難しそう???

でも、そんなことないみたいです。
実際に線分を描いているのは、赤色で書いた一行だけのようです。

それより上の 4 行は、最初にやっておかなければならないことです。
なので、一回やっておけばその後に他のオブジェクトを描くときはやらなくていいってことです。


entmake 関数では DXF のグループコードってやつを知っておかなきゃいけないですよね。
例えば 0 は図形タイプ、10 は始点、11 は端点 といった感じで。

私は昔から AutoLISP をやっていたので違和感はないのですが、DXF のグループ コードも理解しなきゃいけないってことが面倒でよく分からないってことがあるみたいです。


それに比べて ActiveX の場合は DXF のグループ コードのことを知らなくてもいいので、簡単だっていうことのようです。


次回からは、この線分を作成するコードについてひとつずつ見ていこうと思います。

0 件のコメント:

コメントを投稿