chapter70 自動作図の基本

前回のおさらいをします。
直線のデータを読み込みます。
必要なデータは、図形タイプ(直線)、線種、色、始点よ終点の座標です。
今回は、直線1本のデータなので、サブプロシージャに入れました。
その後、Entitiesの後に、データを挿入していきます。

複数ある場合は(実際はいつも複数ありますが)、ワークシートに設定しとくと便利です。
ちなみに、複数の図形を書く場合は、Entitiesの後に挿入するより、
ENDSECを検索して、この手前に挿入するようなコードを書くほうが簡単です

それでは、続きを解説します。
今回はDXFファイルを作成し、ワークシートのデータを書き込むところです。
⑥名前をmyDXF.dxfで、DXFファイル(テキストデータ)を作成します。
FileSystemObjectを利用しています。

テキストデータを開いて読み書きする承認をWindowsに命令します。

⑧セルのデータをテキストデータに書き込みます。
最終行番号をEndRowに代入していますので、カウンター変数が最終行番号を超えたら、
終了します。


Option Explicit
Sub test1()
    Dim i As Long, j As Long, k As Long
    Dim cnt As Long
    Dim EndRow As Long
    Dim ENTITIES_Row As Long
    Dim EntitiesTyp, LineTyp, LineCol, Xcod_S, Ycod_S, Xcod_E, Ycod_E
    Dim myDATA(20)
    
    With Worksheets("TEST")    <---①
        .Cells.Delete
        Worksheets("ENTITIES前(編集禁止)").Cells.copy .Range("A1") <---②
        EndRow = .Range("A1").End(xlDown).Row
        For i = 1 To EndRow
            If .Cells(i, 1).Value = "ENTITIES" Then               <---③
                ENTITIES_Row = i
                '直線 -------------------------------------
                Call 直線データ(EntitiesTyp, LineTyp, LineCol, Xcod_S, Ycod_S, Xcod_E, Ycod_E) <---④
                myDATA(1) = 0
                myDATA(2) = EntitiesTyp
                myDATA(3) = 8
                myDATA(4) = "_0-0_"
                myDATA(5) = 6
                myDATA(6) = LineTyp
                myDATA(7) = 62
                myDATA(8) = LineCol
                myDATA(9) = 10
                myDATA(10) = Xcod_S
                myDATA(11) = 20
                myDATA(12) = Ycod_S
                myDATA(13) = 11
                myDATA(14) = Xcod_E
                myDATA(15) = 21
                myDATA(16) = Ycod_E      
  
 
       cnt = 1
                For k = 1 To 16                                           <---⑤
                       .Cells(ENTITIES_Row + cnt, 1).EntireRow.Insert
                       .Cells(ENTITIES_Row + cnt, 1).Value = myDATA(k)
                       cnt = cnt + 1
                Next k
                Exit For
            End If
        Next i
        'DXFファイル作成
        With CreateObject("scripting.filesystemobject")   <---⑥
            .createtextfile ThisWorkbook.Path & "\myDXF.dxf", True
        End With
        'データをコピペ
        EndRow = .Range("A1").End(xlDown).Row
        Open ThisWorkbook.Path & "\myDXF.dxf" For Output As #1   <---⑦
        cnt = 1
        Do Until cnt > EndRow
           Print #1, .Cells(cnt, 1).Value   <---⑧
           cnt = cnt + 1
        Loop
        Close #1
    End With
End Sub
 ------------------------------------------------------------------------------------------------------------------------------------
Sub 直線データ(EntitiesTyp, LineTyp, LineCol, Xcod_S, Ycod_S, Xcod_E, Ycod_E)
    EntitiesTyp = "LINE"
    LineTyp = "CONTINUOUS"  <---実線
    LineCol = 7           '黒     <---線の色は黒
    Xcod_S = 100          <---始点X座標
    Ycod_S = 100          <---   Y座標
    Xcod_E = 200          <---終点X座標
    Ycod_E = 200          <---   Y座標
End Sub

どうだったでしょうか。

このあたりで、自動作図の講座は一旦、終わります。
代わりに、Jwcadユーザーの初心者向けにJwcadの使い方講座を始めます。
それではまた。