0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

EXCELで5ミリ方眼旋盤CAD(準備)

Last updated at Posted at 2020-02-08

描写する前に全図形を削除

何度でも試行できるように、TESTマクロを実行する前にアクティブシートの全図形を削除します。

Sub 全図形削除()
    For Each S In ActiveSheet.Shapes
        S.Delete
    Next S
End Sub

EXCEL方眼の1枡を5mmにする

1枡の四角をB2に作成します。B2の高さ、幅を変更すると
つられて四角形も形を変えるので、5mm四角になるように調整します。
図形の書式設定をみると、縦横19ピクセルで5mm方眼ができることがわかりました。

Sub TEST()
    Call 全図形削除
    Call 方形("B2")
End Sub

Sub 方形(R, Optional T = 1)
    Set R = Range(R)
    With ActiveSheet.Shapes.AddShape(T, R.Left, R.Top, R.Width, R.Height)
        .Line.ForeColor.RGB = vbBlack
              .Fill.Visible = False
    End With
End Sub

方眼に図形を合わせる比率

20枡x20枡の方形と100x100の図形を比較します。 
方形が10.05cm x 10.05cm
方形が 3.53cm x 3.53cm
比率 2.847 ≒ 10.05 / 3.53
なので、関数RF_で補正をかけます。

Sub TEST()
    Call 全図形削除
    Call 方形("B2")
    Call 方形("B2:U21")
    Call 図形("B2", 1, 100, 100)
End Sub

'Function RF_(L, Optional 倍率 = 1)
'   RF_ = L
'End Function
 
Function RF_(L, Optional 倍率 = 1)
    RF_ = L * 2.847 * 倍率
End Function

Sub 図形(R, Optional T = 1, Optional RH = 100, Optional RW = 100, Optional B = 1)
    With ActiveSheet.Shapes.AddShape(T, Range(R).Left, Range(R).Top, RF_(RW, B), RF_(RH, B))
        .Line.ForeColor.RGB = RGB(0, 0, 0)
        .Fill.Visible = False
    End With
End Sub

XZ軸を表示する。

旋盤の場合は、縦方向がX軸。横方向がZ軸になるため、D10が原点になるようにXZ軸を表示させます。
セル幅、セル高さの変更時に図形が変形、移動しないように図形のplacement を xlFreeFloating
とします。


Sub TEST()
   
    Call 全図形削除
    Call 方形("B2")
    Call 方形("B2:U21")
    Call 図形("B2", 1, 100, 100)

    Call XZ_AXIS("D10")
    
    For Each S In ActiveSheet.Shapes
        S.Placement = xlFreeFloating
    Next S
End Sub

Sub XZ_AXIS(Optional R = "D10", Optional X = 60, Optional Z = 80, Optional B = 1)

    GX = Range(R).Top
    GZ = Range(R).Left
    RZ = Range(R).Width
    
    X = RF_(X, B)
    Z = RF_(Z, B)
    
    With ActiveSheet.Shapes.AddLine(GZ - RZ, GX, GZ + Z, GX).Line
        .ForeColor.RGB = vbRed
        .Weight = 1.2
        .DashStyle = msoLineDashDot
    End With
        
    With ActiveSheet.Shapes.AddLine(GZ, GX - X / 2, GZ, GX + X / 2).Line
        .ForeColor.RGB = vbBlue
        .Weight = 1.2
        .DashStyle = msoLineDashDot
    End With
End Sub

色々付け加えて、下図のようになります。

image.png

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?