SolidWorks 부품 재료 수정 방법

SolidWorks가 열린 상태가 아닐 때 실행하는 매크로입니다. 지정된 파일을 열고 재료를 변경한 후 저장 및 닫습니다.

Option Explicit

Sub execute()
    Dim filePath As String
    filePath = "e0501-P0504"
    Dim materialName As String
    materialName = "PPH"
    Call updateMaterial(filePath, materialName)
End Sub

Sub updateMaterial(filePath As String, materialName As String)
    Const dirPath As String = "D:\ExamplePath\"
    Const matDB As String = "C:/ProgramData/SolidWorks/SOLIDWORKS 2022/자체_재료/예시.sldmat"
    
    Dim fullPath As String
    fullPath = dirPath & filePath & ".SLDPRT"
    
    Dim swApp As SldWorks.SldWorks
    Set swApp = Application.SldWorks
    
    Dim swPart As SldWorks.PartDoc
    Dim status As Long, warnings As Long
    Set swPart = swApp.OpenDoc6(fullPath, 1, 0, "", status, warnings)
    
    ' 모든 구성 요소 재료 업데이트
    Dim configs() As String
    configs = swPart.GetConfigurationNames
    
    Dim i As Long
    Dim configName As String
    
    For i = 0 To UBound(configs)
        configName = configs(i)
        swPart.SetMaterialPropertyName2 configName, matDB, materialName
    Next i
    
    ' 결과 출력
    Dim currentMat As String
    For i = 0 To UBound(configs)
        currentMat = swPart.GetMaterialPropertyName2(configs(i), matDB)
        Debug.Print "재료: " & currentMat & " (" & configs(i) & ")"
    Next i
    
    ' 문서 저장 및 닫기
    Dim saveStatus As Boolean
    saveStatus = swPart.Save3(1, status, warnings)
    swApp.CloseDoc swPart.GetPathName
    
    Set swPart = Nothing
    Set swApp = Nothing
End Sub

구성 요소 목록 조회

열린 문서에 구성 요소가 포함되어 있을 경우 실행하는 매크로입니다. 현재 파일의 모든 구성 정보를 즉시 창에 출력합니다.

Option Explicit
Sub execute()
    Dim swApp As SldWorks.SldWorks
    Dim swModel As SldWorks.ModelDoc2
    Set swApp = Application.SldWorks
    Set swModel = swApp.ActiveDoc
    
    Dim configNames() As String
    configNames = swModel.GetConfigurationNames
    
    Dim i As Long
    Dim configName As String
    Dim isVisible As Boolean
    
    For i = 0 To UBound(configNames)
        configName = configNames(i)
        isVisible = swModel.ShowConfiguration2(configName)
        Debug.Print "구성: " & configName
        Debug.Print "  표시 여부: " & isVisible
    Next i
End Sub

재료 수정 개선

파일이 열려있지 않은 상태에서 실행하는 매크로입니다. 지정된 파일을 열고 재료를 변경한 후 저장하고 수정된 재료 정보를 출력합니다.

Option Explicit

Sub execute()
    Dim filePath As String
    filePath = "e0501-P0504"
    Dim materialName As String
    materialName = "PPH"
    Call updateMaterial(filePath, materialName)
End Sub

Sub updateMaterial(filePath As String, materialName As String)
    Const dirPath As String = "D:\ExamplePath\"
    Const matDB As String = "C:/ProgramData/SolidWorks/SOLIDWORKS 2022/자체_재료/예시.sldmat"
    
    Dim fullPath As String
    fullPath = dirPath & filePath & ".SLDPRT"
    
    Dim swApp As SldWorks.SldWorks
    Set swApp = Application.SldWorks
    
    Dim swPart As SldWorks.PartDoc
    Dim status As Long, warnings As Long
    Set swPart = swApp.OpenDoc6(fullPath, 1, 0, "", status, warnings)
    
    ' 모든 구성 재료 설정
    Dim configs() As String
    configs = swPart.GetConfigurationNames
    
    Dim i As Long
    Dim configName As String
    
    For i = 0 To UBound(configs)
        configName = configs(i)
        swPart.SetMaterialPropertyName2 configName, matDB, materialName
    Next i
    
    ' 저장 및 결과 출력
    Dim saveStatus As Boolean
    saveStatus = swPart.Save3(1, status, warnings)
    
    Dim currentMat As String
    For i = 0 To UBound(configs)
        currentMat = swPart.GetMaterialPropertyName2(configs(i), matDB)
        Debug.Print "재료: " & currentMat & " (" & configs(i) & ")"
    Next i
    
    swApp.CloseDoc swPart.GetPathName
    
    Set swPart = Nothing
    Set swApp = Nothing
End Sub

즉시 창 내용 정리 시, 커서를 즉시 창에 위치시키고 Ctrl+A를 누르면 전체 텍스트를 선택한 후 Delete를 누르면 빠르게 초기화할 수 있습니다.

태그: SolidWorks VBA 재료관리 구성관리

6월 21일 22:44에 게시됨