본문 바로가기
<설계프로그램>/솔리드웍스 API (VBA)

[솔리드웍스 VBA] 2-2. 원그리기 예제 코드 뜯어보기 (2) Sub 는 꼭 필요한가?

by bigpicture 2025. 3. 26.
반응형

우리가 예제로 사용하고 있는 원그리기 코드는 아래와 같습니다 .

 

Dim swApp As SldWorks.SldWorks
Dim swModel As ModelDoc2
Dim swSketchMgr As SketchManager

Sub main()
    ' 솔리드웍스 연결
    Set swApp = Application.SldWorks
    
    ' 새 파트 파일 생성
    Set swModel = swApp.NewPart
    
    ' 앞면 선택
    swModel.Extension.SelectByID2 "Front Plane", "PLANE", 0, 0, 0, False, 0, Nothing, 0
    
    ' 스케치 시작
    Set swSketchMgr = swModel.SketchManager
    swSketchMgr.InsertSketch True
    
    ' 원 그리기 (중심: 0,0 / 반지름: 0.05미터)
    swSketchMgr.CreateCircle 0, 0, 0, 0.05, 0, 0
    
    ' 스케치 종료
    swSketchMgr.InsertSketch True
    
    ' 화면 줌 맞춤
    swModel.ViewZoomtofit2
End Sub

 

 

지난시간에는 Dim 선언문들을 배워보았습니다. 이번시간에는 main 함수 앞에 있는 Sub에 대해 배워봅시다. 

 

먼저 Sub 가 무엇인지 알아봅시다. Sub는 Subroutine 의 줄임말입니다. 서브루틴은 함수와 비슷하면서 다릅니다. 함수는 반환값이 있는 반면 서브루틴은 반환값이 없습니다. 단순히 실행만 합니다. 

 

"Sub main( ) 없이 main 서브루틴 안에 있는 코드만 쓰면 안되냐"는 질문이 생길 수 있습니다. 우리가 사용하고 있는 VBA 에서는 서브루틴이나 함수 안에 있어야 코드가 동작합니다. Dim 과 같은 변수 선언은 예외적으로 sub 밖에 둘 수 있습니다. 

 

C++이나 C#에서는 main 함수가 항상 있어야 하고, 이 함수 진입점이됩니다. VBA에서는 그렇지 않습니다. subroutine 이름은 아무거나 붙여도 됩니다. 여러개의 subroutine이 있을 경우 실행하면 어떤 서브루틴 먼저? 라는 창이 뜨고 먼저 실행할 subroutine 을 선택할 수 있습니다. 

 

Sub 를 주석처리하고(주석처리 키워드는 ' 작은따옴표) 실행하면 아래와 같은 창이 뜹니다. 

 

 

실행할 수 있는 매크로가 없습니다. 여기서 매크로는 서브루틴을 말합니다. 

 

이번에는 주석을 풀고 다시 실행해봅시다. main 이라는 매크로 이름이 보입니다.

 

 

이번에는 main 서브루틴의 이름을 한번 바꿔봅시다. circle 로 바꾸면 아래와 같은 오류가 뜹니다. circle이 내부적으로 정의된 식별자라서 그렇습니다. 

 

 

DrawCircle 이라고 이름을 바꾸면 정상작동합니다. 

 

 

서브루틴을 여러개 정의하면, 위 매크로 창에 서브루틴이 여러개 뜨게 되고 원하는 것을 선택해주면 됩니다. 

 

다음시간에는 나머지 코드들을 배워봅시다. 

반응형