AutoCAD LTをExcelでコントロール

横断図作成





Private Sub CommandButton1_Click()

Dim Col_1, i As String '整数型の変数宣言
Dim Sname, Siten, Moji, x, y As String '文字列型の変数宣言

'scr(スクリプトファイル)の場所を[C:\ExAcad\CadData\]に指定しています。
'CadDataのフォルダの中身は、[ExAcad2.zip]から取得して下さい。
'他のフォルダ(例:MyData)にするときは、[C:\MyData\]と指定します。

Sname = "C:\ExAcad\CadData\oudan.scr"

'scr(スクリプトファイル<rosen.scr>)を事前に作成しておきます。
'ファイルが読み書き出来るモードで開きます。

Open Sname For Output As 1
Print #1, "zoom a"
Print #1, "line 0,0 0,200 "
Print #1, "select l "
Print #1, "zoom e"
Print #1, "line -120,0 -100,0 "


'1/100図面でメートルでの表現になるので値に10をかけます。
y = Range("C2")
y = CInt(y) * 10
'整数を文字に変換します。
y = str(y)
'LTrim関数は指定した文字列から先頭のスペースを削除した文字列を返します。
Siten = "0," & LTrim(y)

Col_1 = 1
'Excelの行番号変数<i>に初期値を<6>にセットします。
i = 6
Moji = " "
'行が13でなかったら、以下の処理をします。
While Col_1 <> 13
x = Cells(i, Col_1)
y = Cells(i, Col_1 + 2)
If "" <> x Then
'列が4より小さかったら、以下の処理を行います。
If Col_1 < 4 Then
x = CInt(x) * -10
x = str(x)
y = CInt(y) * 10
y = str(y)
Moji = Moji + x & "," & LTrim(y) & Chr(13)
Else
x = CInt(x) * 10
x = str(x)
y = CInt(y) * 10
y = str(y)
Moji = Moji + x & "," & LTrim(y)
End If


i = i + 1
Else
'MOVEコマンドを使うときに、描いた図形がすべて選択できるように、あらかじめ選択セットを作ります。
Print #1, "select l P "
'ポリラインで線分を作成します。
Print #1, "Pline " & Siten & Moji
'行に6を加えます。
i = 6
Moji = ""
Col_1 = Col_1 + 6
End If
Wend

Print #1, " filedia 1"
Print #1, "zoom a"
'MOVEコマンドを使います。
Print #1, "move l p 0,0"
'ファイルを閉じます。
Close #1

'AutoCAD をアクティブにします。
'[SetAcadCtrl]はExcelからAutoCAD LTをコントロールする標準モジュールです。
'SendKeysは不安定ですが、これはLTへ確実にコマンドを送信できます。
SetAcadActive
'AutoCAD のコマンドラインに、スクリプトを送ります。
SendAcadCommand ("filedia 0" + Chr(13) + "script" + Chr(13) + Sname + Chr(13))
SendAcadCommand ("filedia 1" + vbCr)

End Sub