본문 바로가기
  • Welcome!
VBA SOLIDWORK

모델의 Feature 이름 가져오기

by ToolBOX01 2024. 12. 15.
반응형

solidworks01.xlsm
0.03MB

□ 프로그램 기능

SolidWorks 환경에서 활성화된 문서의 모든 Feature 이름들을 가져와서 VBA 창의 SolidWorks 환경에서 활성화된 문서의 모든 Feature 이름을 가져와서 VBA 창의 Immediate 창에 출력하는 기능을 수행합니다. (작업 실행 창)에 출력하는 기능 입니다.

모델 Tree 프로그램 실행 (Immediate 창)

 

▷Code

Option Explicit
Sub GetFeatureNames()
    Dim swApp As SldWorks.SldWorks
    Dim swModel As SldWorks.ModelDoc2
    Dim swFeat As SldWorks.Feature
    
    '// 이미 실행 중인 SolidWorks 찾기
    Set swApp = GetObject(, "SldWorks.Application")
    Set swModel = swApp.IActiveDoc

    '// 활성화된 문서가 없는 경우 처리
    If swModel Is Nothing Then
        MsgBox "활성화된 문서가 없습니다.", vbExclamation, "Error"
        Exit Sub
    End If

    '// 첫 번째 Feature 가져오기
    Set swFeat = swModel.FirstFeature

    '// Feature 이름 순회 및 출력
    Do While Not swFeat Is Nothing
        Debug.Print "Feature Name: " & swFeat.Name

        '// 다음 Feature로 이동
        Set swFeat = swFeat.GetNextFeature
    Loop

    MsgBox "Feature 이름을 확인하려면 VBA 창의 Immediate 창(Debug.Print)에서 확인하세요.", vbInformation, "완료"
End Sub

 

▷Code 설명

Set swApp = GetObject(, "SldWorks.Application"): 현재 실행 중인 SolidWorks 애플리케이션 객체를 가져옵니다.
Set swModel = swApp.IActiveDoc: 활성화된 문서(ModelDoc2) 객체를 가져옵니다.

Set swFeat = swModel.FirstFeature: 문서의 첫 번째 Feature를 가져옵니다.
Set swFeat = swFeat.GetNextFeature: 다음 Feature로 이동합니다.

 


▷프로그램 응용

번호 Feature 이름, 유형을 가져오는 코드

Option Explicit
Sub GetFeatureNames()
    Dim swApp As SldWorks.SldWorks
    Dim swModel As SldWorks.ModelDoc2
    Dim swFeat As SldWorks.Feature
    
    '// 이미 실행 중인 SolidWorks 찾기
    Set swApp = GetObject(, "SldWorks.Application")
    Set swModel = swApp.IActiveDoc

    '// 활성화된 문서가 없는 경우 처리
    If swModel Is Nothing Then
        MsgBox "활성화된 문서가 없습니다.", vbExclamation, "Error"
        Exit Sub
    End If

    '// 첫 번째 Feature 가져오기
    Set swFeat = swModel.FirstFeature

    Dim i As Long
    i = 0
    
    '// Feature 이름 순회 및 출력
    Do While Not swFeat Is Nothing
    
        Worksheets("Program02").Cells(i + 5, "B") = i + 1
        Worksheets("Program02").Cells(i + 5, "C") = swFeat.Name
        Worksheets("Program02").Cells(i + 5, "D") = swFeat.GetTypeName
        Worksheets("Program02").Cells(i + 5, "E") = swFeat.GetID
        Worksheets("Program02").Cells(i + 5, "F") = swFeat.GetFaceCount

        '// 다음 Feature로 이동
        Set swFeat = swFeat.GetNextFeature
        i = i + 1
    Loop

    MsgBox "Feature 정보를 모두 표시 했습니다", vbInformation, "완료"
End Sub

 

[Feature 정보 가져오기]