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で操作するスプラインとは異なる図形になります。この差異は追って 項を改めて、新規に説明します。下記コードの操作で得られたスプラインはポリラインの端を通過しません。
0 件のコメント:
コメントを投稿