counter

2015/08/24

(続)エクセルからAutoCAD LT2000 へ

みなさんもご存知と思いますが、素晴らしいサイトです。自作マクロの質の高さはいまだに健在です。10年以上も昔のWebです。
http://www.geocities.jp/sugawarass/sndexcel.html

処理速度の高い最新のPCでは、AutoCAD LT 2000のように旧いソフトをエクセルのマクロで動かそうとすると変換時にPCの画面がAutoCAD上でとまってしまいます。その場合、上の画像中のコードを引用して下記の変更を行う必要があります。

追記)2015.08.26
下記コードは標準モジュールに設定してください。sheet1のコードは削除してください。このようにしないとタイマーが動作せずソフトが機能しません。面倒な方は下記リンクをクリックしてください。当方で修正したファイルが導入できます。
http://m-sudo.sakura.ne.jp/soft_data/kikaisekkei_data/acadout3A.zip

引用:
Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)  ’<<追加 最上段に追加。32bit機であれば2007以降の版でもOKと思われる。

Private Sub CommandButton1_Click()

    Dim x As Double, y As Double
    
    On Error GoTo ErrorHand
    
    'エクセルのセルデータのAutoCAD LT2000 への送信
    
    fnb = "C:\My Documents\op.scr"
    Close
    Open fnb For Output As #1
    
    jj = 0
    
    Do
        If Worksheets("Sheet1").Cells(1, jj + 1).Value = "" Then Exit Do
        Print #1, "filedia 1"
 Print #1, "PLINE"
        ii = 0
        Do
            ii = ii + 1
            cc = 0
            For j = jj + 1 To jj + 2
                If Worksheets("Sheet1").Cells(ii, j).Value = "" Then cc = 1: Exit For
                If j = jj + 1 Then x = Worksheets("Sheet1").Cells(ii, j).Value
                If j = jj + 2 Then y = Worksheets("Sheet1").Cells(ii, j).Value
            Next j
            If cc = 1 Then Exit Do
            Print #1, "none "; Trim(Str(x)); ","; Trim(Str(y))
            
        Loop Until ii > 1000
        
        Print #1, ""
        jj = jj + 2
        
    Loop Until jj > 1000
    
    Print #1, "filedia 1"
    Close
        
    AppActivate "AutoCAD"  ' アクティブにします。

  Call Sleep(Tm * 10)                   ’<<追加 Tm の単位はミリ秒だが、タイマーは当てにしないほうが良い。PCの機種によってはタイム差が大きい。

                               ' Tm の代わりに数値を記載

    SendKeys "filedia 0 " & "script" & Chr$(13) & fnb & Chr$(13), True
    
    Exit Sub

ErrorHand:
    Close
    Exit Sub

End Sub

このコードを走らせるとポリラインが AutoCAD LT に描かれます。
訂正)
以下の記述はCADで操作するスプラインとは異なる図形になります。この差異は追って 項を改めて、新規に説明します。下記コードの操作で得られたスプラインはポリラインの端を通過しません。

AutoCAD LT 上で描かれたポリラインを マウスで選択 => 離れたところで右ボタンクリック
=> ポリライン編集 の表示 をクリック  => コマンドラインに S を入力 この操作でポリラインがスプラインに変わります。お試しください。
ただ、私はこのスプラインの品質にちょっと不安があるので、当方自作のソフトを使用します。

0 件のコメント: