SOLIDWORKS 매크로 또는 애드인을 개발하기 위해서는 API 개체 모델에 대한 깊이 있는 이해가 필수적입니다. API 개체 모델은 SOLIDWORKS의 다양한 기능과 요소들을 객체로 표현하여 프로그래밍 방식으로 제어할 수 있도록 하는 구조입니다.
□ 주요 개체 간의 상호 작용
- SOLIDWORKS API 개체 모델에서 가장 중요한 몇 가지 개체와 그들의 상호 작용
- SldWorks:
전체 SOLIDWORKS 응용 프로그램을 나타내는 최상위 객체입니다. 다른 모든 객체에 대한 접근점을 제공합니다. - ModelDoc2: 하나의 SOLIDWORKS 문서(파트, 어셈블리, 도면 등)를 나타냅니다.
- Feature: 모델의 특징(스케치, 돌출, 구멍 등)을 나타냅니다.
- Component: 어셈블리 환경에서 부품을 나타냅니다.
- Sketch: 스케치 엔티티(선, 원, 호 등)를 나타냅니다.
▷ 개체와 그들의 상호 작용 예시:
- 새로운 파트 문서 생성:
- SldWorks 객체를 통해 새로운 ModelDoc2 객체를 생성합니다.
- 생성된 ModelDoc2 객체를 활성화합니다. - 스케치 생성:
- 활성화된 ModelDoc2 객체를 통해 새로운 Sketch 객체를 생성합니다.
- Sketch 객체를 이용하여 선, 원 등을 그립니다. - 돌출 피처 생성:
- Sketch 객체를 기반으로 새로운 Feature 객체(돌출 피처)를 생성합니다.
▷ 개체 간의 관계
- 계층 구조: SldWorks는 최상위에 위치하며, 그 아래에 ModelDoc2, Feature, Component 등이 계층적으로 구성됩니다
- 포함 관계: ModelDoc2는 여러 개의 Feature를 포함할 수 있습니다.
- 연관 관계: Feature는 생성 시 참조하는 Sketch 객체와 연관되어 있습니다.
▷ the basics – SldWorks, ModelDoc2
▷ the basics – SldWorks, ModelDoc2
▷주요 코드
swModel.Extension.SelectByID2(dimensionNames(i), "DIMENSION", 0, 0, 0, False, 0, Nothing, 0)
메서드는 SolidWorks API에서 특정 객체(피처, 치수 등)를 이름, 유형, 위치를 기반으로 선택하는 데 사용됩니다.
이 메서드의 기본 문법과 주요 매개변수를 아래와 같이 설명하겠습니다.
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swDim As SldWorks.Dimension
Dim boolstatus As Boolean
Set swApp = GetObject(, "SldWorks.Application")
Set swModel = swApp.ActiveDoc
Msgbox swModel.GetTitle '// 현재 활성화된 문서 가져오기 (part01)
'// 치수 선택
boolstatus = swModel.Extension.SelectByID2(dimensionNames(i), "DIMENSION", 0, 0, 0, False, 0, Nothing, 0)
▷ 매개변수 설명
매개변수 | 설명 | 데이터 유형 | 예시 |
Name | 선택하려는 객체의 이름 (예: 피처 이름, 치수 이름). |
String | "Boss-Extrude1", "D1@Sketch1" |
Type | 선택하려는 객체의 유형 (예: 피처, 스케치, 치수 등) |
String | "FEATURE", "DIMENSION" |
X, Y, Z | 선택할 객체의 위치(모델의 좌표값, 선택하지 않을 경우 0 사용). | Double | 0, 0, 0 |
Append | 선택한 객체를 기존 선택에 추가할지 여부(True = 추가, False = 대체). | Boolean | True, False |
Mark | 선택된 객체의 마크 번호. 일반적으로 0을 사용. | Integer | 0 |
Callout | 선택된 객체에 대한 사용자 정의 데이터. 일반적으로 Nothing을 사용. | Variant | Nothing |
Options | 선택 옵션(보통 0 사용). | Integer | 0 |
▷ 사용 예시
1. 피처 선택 예시
Dim boolstatus As Boolean
boolstatus = swModel.Extension.SelectByID2("Boss-Extrude1", "FEATURE", 0, 0, 0, False, 0, Nothing, 0)
If boolstatus Then
MsgBox "피처 선택 성공!"
Else
MsgBox "피처를 선택할 수 없습니다."
End If
"Boss-Extrude1": 선택하려는 피처 이름.
"FEATURE": 피처 유형.
"False": 기존 선택을 대체.
2. 치수 선택 예시
Dim boolstatus As Boolean
boolstatus = swModel.Extension.SelectByID2("D1@Sketch1", "DIMENSION", 0, 0, 0, False, 0, Nothing, 0)
If boolstatus Then
MsgBox "치수 선택 성공!"
Else
MsgBox "치수를 선택할 수 없습니다."
End If
"D1@Sketch1": 스케치에서 치수 이름.
"DIMENSION": 치수 유형.
3. 스케치 선택 예시
Dim boolstatus As Boolean
boolstatus = swModel.Extension.SelectByID2("Sketch1", "SKETCH", 0, 0, 0, False, 0, Nothing, 0)
If boolstatus Then
MsgBox "스케치 선택 성공!"
Else
MsgBox "스케치를 선택할 수 없습니다."
End If
"Sketch1": 선택하려는 스케치의 이름.
"SKETCH": 스케치 유형.
4. 위치 기반 선택 예시
Dim boolstatus As Boolean
boolstatus = swModel.Extension.SelectByID2("", "VERTEX", 0.05, 0.1, 0.2, False, 0, Nothing, 0)
If boolstatus Then
MsgBox "위치 기반 객체 선택 성공!"
Else
MsgBox "위치에 객체가 없습니다."
End If
"VERTEX": 선택하려는 객체가 점(vertex)일 때 사용.
X, Y, Z: 모델에서 점의 위치 좌표.
5. 기존 선택에 추가
Dim boolstatus As Boolean
boolstatus = swModel.Extension.SelectByID2("Boss-Extrude2", "FEATURE", 0, 0, 0, True, 0, Nothing, 0)
If boolstatus Then
MsgBox "피처가 기존 선택에 추가되었습니다!"
Else
MsgBox "피처를 추가할 수 없습니다."
End If
True: 기존 선택에 추가.
기존 선택한 객체를 유지하면서 새로운 객체를 선택.
▷ 주의 사항
1. 정확한 이름 사용:
Name 값은 SolidWorks 모델 내에서 정확히 일치해야 합니다. (예: "D1@Sketch1", "Boss-Extrude1")
이름이 다르면 선택에 실패합니다.
2. 객체 유형 확인:
Type 값은 객체의 유형과 정확히 일치해야 합니다.
잘못된 유형을 사용하면 선택에 실패합니다.
3. 좌표 기반 선택:
X, Y, Z 값은 선택할 객체가 존재하는 정확한 좌표여야 합니다.
좌표가 맞지 않으면 객체를 찾지 못합니다.
4.SolidWorks 환경 설정:
swModel 객체는 활성 문서를 나타냅니다. 활성 문서가 없는 경우 GetObject를 사용해 가져와야 합니다.
'VBA SOLIDWORK' 카테고리의 다른 글
2. SldWorks.ModelDoc2 개념 (0) | 2024.12.24 |
---|---|
1. SldWorks.SldWorks 개념 (0) | 2024.12.24 |
BOM 컨셉 코드 (1) | 2024.12.20 |
독립 프로그램 개발을 위한 VB.NET 개발 환경 설정 (1) | 2024.12.20 |
어셈블리 구조를 가져 오는 코드 - 컨셉 (0) | 2024.12.19 |