はじめに
今回は、Excel VBAを使ってAutoCADにスプラインを描く方法をご紹介します。
スプラインは土木設計や人間工学的なもの、機器の外形など、使う機会は意外とありますね。
複雑な形状も、エクセルを使って自動作図させることができます。
初心者の方でもわかりやすいように、解説していきますので、ぜひ最後までお付き合いください。
スプラインを描くサンプルコード
早速ですが、以下はスプラインを描くサンプルコードです。
VB
Sub CreateSplineInAutoCAD()
Dim acadApp As Object
Dim acadDoc As Object
Dim spline As Object
Dim pointNum As Long 'スプラインの頂点の数
Dim points() As Double 'スプラインの頂点の座標を入れる配列
Dim startVector(2) As Double '始点のベルトルを入れる配列
Dim endVector(2) As Double '終点のベルトルを入れる配列
Dim handle As String 'ハンドルを格納する変数
'AutoCADを起動または取得
On Error Resume Next
Set acadApp = GetObject(,"AutoCAD.Application")
If acadApp Is Nothing Then
Set acadApp = CreateObject("AutoCAD.Application")
End If
On Error GoTo 0
'AutoCADを表示
acadApp.Visible = True
'AutoCADドキュメントを新規作成、または取得する。
On Error Resume Next
Set acadDoc = acadApp.ActiveDocument
If acadDoc Is Nothing Then
Set acadDoc = acadApp.Documents.Add
End If
On Error GoTo 0
'スプラインの頂点の数を設定
pointNum = 5
ReDim points((pointNum -1) * 3 + 2) 'points()配列の大きさを頂点の数に合わせる
'スプラインの頂点座標を設定(座標、Y座標、Z座標、次の点のX座標、Y座標、、の順で設定)
points(0) = 0 : points(1) = 5 : points(2) = 0
points(3) = -3 : points(4) = -4 : points(5) = 0
points(6) = 4.75 : points(7) = 1.5 : points(8) = 0
points(9) = -4.75 : points(10) = 1.5 : points(11) = 0
points(12) = 3 : points(13) = -4 : points(14) = 0
'スプラインの始点終点のベクトルの指定。今回は指定せずフリーとする。
startVector(0) = 0
startVector(1) = 0
startVector(2) = 0
endVector(0) = 0
endVector(1) = 0
endVector(2) = 0
'スプラインを作成
Set spline = acadDoc.ModelSpace.AddSpline(points, startVector, endVector)
'スプラインのハンドルを取得
handle = spline.Handle
'メッセージボックスを表示
MsgBox "スプラインを作成しました。スプラインのハンドル: " & handle
'AutoCADを表示
acadApp.Visible = True
End Sub
解説
- 13行目から19行目はAutoCADを起動していたらそれを取得、起動していなければ新規で起動するようにしています。
- 25行目から30行目はAutoCADでファイルを開いていれば取得、開いていなければ新規で開くようにしています。
- 33-34.行目でスプラインの頂点を格納する配列を作成しています。スプラインの頂点を指定するには配列が必要です。その配列の大きさは3の倍数である必要があります。
- 37行目から41行目で頂点の座標を入力しています。順に点1のX座標、点1のY座標、点1のZ座標、点2のX座標、点2のY座標、点2のZ座標と格納していきます。
- 51行目、acadDoc.ModelSpace.Spline(points)がポリラインを生成するコードです。引数は先ほど作成した頂点の座標配列です。
編集時の注意点
上記スプラインの作成コードを編集する際には、以下の点に注意してください。
pointNumにはスプラインの頂点の数を入れます。これによりpoints()の配列の大きさを変えるようにしています。
points配列の大きさは3の倍数である必要があります。
頂点の数と位置に合わせて、points()の数と中身を調整してください。points()には順に1つ目の点のX座標、Y座標、Z座標、2つ目の点のX座標、Y座標、Z座標、3つ目の点のX座標、、、と値を格納します。
おわりに
いかがでしたか? 今回は、Excel VBAを使ってAutoCADにスプラインを描く方法をご紹介しました。
VBAを活用することで、設計作業の効率化が図れますので、ぜひ試してみてください。
この記事が皆さんのお役に立てれば幸いです。楽しんでVBAとAutoCADを活用してくださいね!
スプラインの調整にはまると、線と一緒に時間間隔が歪むよね。
コメント