우리가 예제로 사용하고 있는 원그리기 코드는 아래와 같습니다 .
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 이라고 이름을 바꾸면 정상작동합니다.

서브루틴을 여러개 정의하면, 위 매크로 창에 서브루틴이 여러개 뜨게 되고 원하는 것을 선택해주면 됩니다.
다음시간에는 나머지 코드들을 배워봅시다.
'<설계프로그램> > 솔리드웍스 API (VBA)' 카테고리의 다른 글
[솔리드웍스 VBA] 2-1. 원그리기 예제 코드 뜯어보기 (1) Dim 이란? (0) | 2025.03.24 |
---|---|
[솔리드웍스 VBA] 1. 솔리드웍스 VBA 간단히 살펴보기 (0) | 2025.03.21 |
댓글