EXCEL로 5밀리 방안 선반 CAD(준비)

묘사하기 전에 모든 도형 삭제



여러 번 시도할 수 있도록 TEST 매크로를 실행하기 전에 활성 시트의 모든 셰이프를 삭제합니다.
Sub 全図形削除()
    For Each S In ActiveSheet.Shapes
        S.Delete
    Next S
End Sub

EXCEL 방안의 1마리를 5mm로 한다



1칸의 사각형을 B2에 작성합니다. B2의 높이, 폭을 변경하면
붙어 사각형도 모양을 바꾸므로 5mm 사각형이 되도록 조정합니다.
도형의 서식 설정을 보면, 종횡 19 픽셀로 5 mm방안을 할 수 있는 것을 알았습니다.
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

여러가지 덧붙여, 아래 그림과 같이 됩니다.

좋은 웹페이지 즐겨찾기