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를 누르면 빠르게 초기화할 수 있습니다.