<HTML>
<HEAD>

<TITLE>ActiveX @</TITLE>


<SCRIPT language="JavaScript">
<!--

	if (navigator.appVersion.charAt(0)>=3){
		var img= new Array()
		img[0] = new Image(); img[0] .src = "home2.gif"
		img[1] = new Image(); img[1] .src = "home1.gif"
	}
    
	function setimg(i,p){
	if(navigator.appVersion.charAt(0) >= 3 ){
        	document.images[i].src=img[p].src;
	}}

//-->
</SCRIPT>
</HEAD>



<BODY bgcolor="#ffffff" text="#000000" link="#663333" vlink="#663333">
<CENTER>
<DIV align="right"><A href="../../index.html" target="_top" onmouseover="setimg('home',1)" onmouseout="setimg('home',0)"><IMG src="home2.gif" alt="Home"  border="0" name="home"></A></DIV>
</CENTER>


<HR size=1><BR>
<h2>AutoCAD 2000 ActiveX によるカスタマイズ　@</h2>
<A href="#step1">■はじめに</A><BR>
<A href="#step2">■なぜＡｃｔｉｖｅＸ（ＶＢ）によるカスタマイズか？</A><BR>
<A href="#step3">■ＡｃｔｉｖｅＸ（ＶＢ）とＶＢＡ</A><BR>
<A href="#step4">■線を描くには？</A><BR>
<A href="#step5">■VBAを使ってみる</A><BR>
<A href="#step6">■AddLineのサンプルに付いて説明</A><BR>

<HR size=1><BR>

<A name="step1"></A>
<B>■はじめに</B><BR>
<BLOCKQUOTE>
私とAutoCADとの付合いは実はまだ浅くR14からです。社内でUNIXのCADのリプレースでVBによるカスタマイズが可能なCADを探している時、当時の最新版のAutoCAD R14が可能であることを知り、付合いが始まりました。私の場合はチョット特殊かもしれません。VBでCADを操作することから始めたのですから（^_^;）

</BLOCKQUOTE><BR>

<A name="step2"></A>
<B>■なぜＡｃｔｉｖｅＸ（ＶＢ）によるカスタマイズか？</B><BR>
<BLOCKQUOTE>
AutoCADのカスタマイズでメジャーなのがLISPのようで、LISPは簡単と言われる方もいらっしゃるようですが、私にしてみれば良くわからない言語です。（もし覚えても他に使い道が無い？）多くの方がそうだと思いますが、MicrosoftのWordやExcelを仕事の中で利用されてると思います。私はAutoCADもWordやExcelと同じ位置付けで使っています。当然これらのソフトの連携も多く、同じレベルでカスタマイズできるほうが良いと思います。こんな事でＡｃｔｉｖｅＸ（ＶＢ）を使ってます。

</BLOCKQUOTE><BR>




<A name="step3"></A>
<B>■ＡｃｔｉｖｅＸ（ＶＢ）とＶＢＡ</B><BR>
<BLOCKQUOTE>
ＡｃｔｉｖｅＸ（ＶＢ）とＶＢＡによるカスタマイズは非常によく似ています。CADだけのカスタマイズであれば、VBAでも事足りると思いますが、VBAにはやはり制限事項も少なくありません。今からカスタマイズを始める方も、先々、結局行きつくとかはＶｉｓｕａｌＢａｓｉｃではないかと思います。
</BLOCKQUOTE><BR>


<A name="step4"></A>
<B>■線を描くには？</B><BR>
<BLOCKQUOTE>
まずは、線を描いてみましょう。２つの点を通る線分を作成するには、AddLineメソッドを使います。
AutoCADヘルプでActiveX/VBAリファレンスを開き、AddLineメソッドの使い方を見てみると<p>
<table border="1"><td>
2 つの点を通る線分を作成します。<p>

構文と要素<p>

RetVal = object.AddLine(StartPoint, EndPoint)<BR>

Object	ModelSpace コレクション, PaperSpace コレクション, Block<BR>
このメソッドが適用されるオブジェクト<BR>
StartPoint	バリアント型 (3 要素の倍精度浮動小数点数型配列); 入力のみ<BR>
線分の始点を示す 3D WCS 座標<BR>
EndPoint	バリアント型 (3 要素の倍精度浮動小数点数型配列); 入力のみ<BR>
線分の終点を示す 3D WCS 座標<BR>
RetVal	Line オブジェクト<BR>
新しく作成される線分オブジェクト<BR>

</td></table><p>
と書いてあり、例（サンプルコード）を見てみると<p>
<table border="1"><td>
Sub Example_AddLine()
<BLOCKQUOTE>
<FONT COLOR="#00ff00">' This example adds a line in model space</FONT><BR>
<BR>
Dim lineObj As AcadLine<BR>
Dim startPoint(0 To 2) As Double<BR>
Dim endPoint(0 To 2) As Double<BR>
<BR>
<FONT COLOR="#00ff00">' Define the start and end points for the line</FONT><BR>
startPoint(0) = 1#: startPoint(1) = 1#: startPoint(2) = 0#<BR>
endPoint(0) = 5#: endPoint(1) = 5#: endPoint(2) = 0#<BR>
<BR>
<FONT COLOR="#00ff00">' Create the line in model space</FONT><BR>
Set lineObj = ThisDrawing.ModelSpace.AddLine(startPoint, endPoint)<BR>
ZoomAll<BR>
</BLOCKQUOTE>
End Sub<BR>
</td></table><p>
となっています。ここまで見ても何のこっちゃ？よく解らん？と言うのが正直な気持ちだと思います。私自身もこの辺の事は不親切だといつも思っています。大体サンプルが全部英語ですし、説明も英語の直訳みたいで．．．




</BLOCKQUOTE><BR>


<A name="step5"></A>
<B>■VBAを使ってみる</B><BR>
<BLOCKQUOTE>
VBAを使うには、AutoCADメニューより「ツール」→「マクロ」→「Visual Basic エディタ」を選ぶと、Microsoft Visial Basic が起動します。AddLineのサンプルをカット＆ペーストで貼り付けてみましょう。<P>

<IMG src="vba1.gif" alt="vba1"  border="0" name="vba1"><p>

こんな感じになります。後は実行してみて下さい。AutoCAD上に線が引ければ成功です。

</BLOCKQUOTE><BR>


<A name="step6"></A>
<B>■AddLineのサンプルに付いて説明</B><BR>
<BLOCKQUOTE>

Sub Example_AddLine()
<BLOCKQUOTE>
<FONT COLOR="#00ff00">' This example adds a line in model space</FONT><BR>
<BR>
Dim lineObj As AcadLine　<FONT COLOR="#00ff00">'ラインオブジェクト変数を宣言</FONT><BR>
Dim startPoint(0 To 2) As Double　<FONT COLOR="#00ff00">'始点をDouble型配列変数で宣言</FONT><BR>
Dim endPoint(0 To 2) As Double　<FONT COLOR="#00ff00">'終点をDouble型配列変数で宣言</FONT><BR>
<BR>
<FONT COLOR="#00ff00">' Define the start and end points for the line</FONT><BR>
startPoint(0) = 1#　<FONT COLOR="#00ff00">'始点のX座標（絶対座標）を代入（#は倍精度浮動少数点を表す）</FONT><BR>
startPoint(1) = 1#　<FONT COLOR="#00ff00">'　〃　　Y座標</FONT><BR>
startPoint(2) = 0#　<FONT COLOR="#00ff00">'　〃　　Z座標</FONT><BR>
<BR>
endPoint(0) = 1#　<FONT COLOR="#00ff00">'終点のX座標（絶対座標）を代入（#は倍精度浮動少数点を表す）</FONT><BR>
endPoint(1) = 1#　<FONT COLOR="#00ff00">'　〃　　Y座標</FONT><BR>
endPoint(2) = 0#　<FONT COLOR="#00ff00">'　〃　　Z座標</FONT><BR>
<BR>
<FONT COLOR="#00ff00">' Create the line in model space</FONT><BR>
Set lineObj = ThisDrawing.ModelSpace.AddLine(startPoint, endPoint)<BR>
<FONT COLOR="#00ff00">'現在アクティブな図面（ThisDrawing.）のモデル空間（ModelSpace.）に線を追加(AddLine）</FONT><BR>
ZoomAll　<FONT COLOR="#00ff00">'現在のビューポートを図面全体に表示。</FONT><BR>
</BLOCKQUOTE>
End Sub<BR>



</BLOCKQUOTE><BR>



</BODY>
</HTML>
