お知らせ

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

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

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

2013年5月8日水曜日

vl-load-com ってなに?


おはようございいます。

今日は、vl-load-com についてです。

先日以下のコードで線分を描くことができるっていう話をしたと思います。

(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)))

ここにある最初の (vl-load-com) です。


これって何やってるんでしょうね???


ヘルプを見ると、こう書いてあります。
AutoLISP で ActiveX 関数を使用できるようにする前に、これらの関数を使用できるようにする ActiveX サポート コードをロードしておく必要があります。
つまり、『(vl-load-com) を実行することによって ActiveX 関数を使用できるようになる。』 ということのようです。

なので、Visual LISP で ActiveX を使うときは必ず実行する必要があるってことですね。


具体的には、これを実行しておかないと 2 行目以降の (setq acadObject (vlax-get-acad-object)) とかが実行できないってことですね。


と思って AutoCAD 2014 を起動して (vl-load-com) を実行しない状態で (setq acadObject (vlax-get-acad-object)) を実行してみました。

すると、何の問題もなく実行することができました。
どういうことなんでしょう(?_?;)


ひょっとしてと思って古いバージョンでも試してみました。
すると、AutoCAD 2012 以前のバージョンで (vl-load-com) を実行しない状態で (setq acadObject (vlax-get-acad-object)) を実行すると、以下のエラーとなりました。
エラー : no function definition: VLAX-GET-ACAD-OBJECT
で、AutoCAD 2013 以降では実行しなくてもよさそうです。


でも、AutoCAD 2013 以降を使っていても実行しておいたほうがいいんじゃないかと思います。
というのは、Visual LISP は昔のバージョンでも使えるので、いつか昔のバージョンで使うってこともあるかも知れないですからね。

そのとき (vl-load-com) がないとエラーになっちゃって なんで(?o?) ってことになるかもしれないですし。

0 件のコメント:

コメントを投稿