横断図作成 |
---|
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 |