본문 바로가기
  • Welcome!
VBA SOLIDWORK

모델 이름 Paramter 이름, 값, 유형 표시 하기 #1/2

by ToolBOX01 2024. 12. 13.
반응형

solidworks01.xlsm
0.02MB

 

[모델 정보]

▷CODE 

Sub ShowModelParameters()
    Dim swApp As SldWorks.SldWorks
    Dim swModel As SldWorks.ModelDoc2
    Dim swCustPropMgr As CustomPropertyManager
    Dim swConfig As Configuration
    Dim swConfigMgr As ConfigurationManager
    Dim status As Integer
    Dim vParamNames As Variant
    Dim i As Integer

    '// 이미 실행 중인 SolidWorks 찾기
    On Error Resume Next
    Set swApp = GetObject(, "SldWorks.Application")
    On Error GoTo 0

        If swApp Is Nothing Then
            MsgBox "SolidWorks가 실행 중이지 않습니다.", vbExclamation, "오류"
            Exit Sub
        End If

    '// 활성화된 문서 가져오기
    Set swModel = swApp.IActiveDoc

        If swModel Is Nothing Then
            MsgBox "활성화된 문서가 없습니다.", vbExclamation, "오류"
            Exit Sub 
        Else
           Worksheets("Program01").Cells(5, "E") = swModel.GetTitle
        End If

    '// 사용자 정의 속성 관리자 가져오기 (기본 설정)
    Set swConfigMgr = swModel.ConfigurationManager
    Set swConfig = swConfigMgr.ActiveConfiguration
    Set swCustPropMgr = swModel.Extension.CustomPropertyManager("")

    '// 매개변수 이름과 값을 가져오기
    vParamNames = swCustPropMgr.GetNames
   
        If Not IsEmpty(vParamNames) Then
            For i = LBound(vParamNames) To UBound(vParamNames)
                  
                Worksheets("Program01").Cells(i + 8, "B") = i + 1
                Worksheets("Program01").Cells(i + 8, "C") = vParamNames(i)
                Worksheets("Program01").Cells(i + 8, "D") = swCustPropMgr.Get(vParamNames(i))
                
                If swCustPropMgr.GetType2(vParamNames(i)) = 30 Then
                
                    Worksheets("Program01").Cells(i + 8, "E") = "string"
                
                End If
            Next i
    Else
        swApp.SendMsgToUser "이 모델에는 매개변수가 없습니다."
    End If
End Sub

▷ Dim swApp As SldWorks.SldWorks

SolidWorks 응용 프로그램 전체를 나타내는 객체를 선언합니다.
SldWorks.SldWorks는 SolidWorks API에서 제공하는 기본 객체입니다.
이 객체를 통해 SolidWorks의 다양한 기능(파일 열기, 문서 관리, 애드인 호출 등)에 액세스할 수 있습니다.

GetObject 함수: 기존에 실행 중인 객체를 가져오는 데 사용됩니다.

Dim swApp As SldWorks.SldWorks
Set swApp = GetObject(, "SldWorks.Application")

CreateObject 함수: 새로운 객체를 생성하는 데 사용됩니다. (Solidworks를 실행 합니다)

 Dim swApp As SldWorks.SldWorks
 Set swApp = CreateObject("SldWorks.Application")  '// SolidWorks 응용 프로그램 객체 생성
 swApp.Visible = True
 MsgBox "SolidWorks가 성공적으로 실행되었습니다!"

 

▷ Dim swModel As SldWorks.ModelDoc2

현재 활성화된 SolidWorks 문서(파트, 어셈블리, 도면 등)를 나타내는 객체를 선언합니다.
ModelDoc2는 SolidWorks에서 문서를 나타내는 객체의 기본 인터페이스입니다.
이를 통해 활성 문서의 속성이나 작업(스케치 추가, 치수 가져오기, 피처 생성 등)을 제어할 수 있습니다.

▷ 사용자 정의 속성 관리자 가져오기 (기본 설정)

Dim swCustPropMgr As CustomPropertyManager
Dim swConfig As Configuration
Dim swConfigMgr As ConfigurationManager


Set swConfigMgr = swModel.ConfigurationManager
Set swConfig = swConfigMgr.ActiveConfiguration
Set swCustPropMgr = swModel.Extension.CustomPropertyManager("")

 

참고

속성 유형:
swCustomInfoText = 30 (텍스트)
swCustomInfoDate = 64 (날짜)
swCustomInfoNumber = 3 (숫자)

Add3 메서드 결과 값:
swCustomInfoAddNew = 0 (새 속성 추가)
swCustomInfoReplaceValue = 1 (기존 값 대체)