SOLIDWORKS 매크로 템플릿 작성

SOLIDWORKS 매크로 템플릿은 SOLIDWORKS 작업 스케줄러에서 이를 사용자 정의 작업으로 예약할 때 매개변수 값을 지정할 수 있는 SOLIDWORKS 매크로입니다. SOLIDWORKS 매크로 템플릿은 보통 Visual Basic 코드, SOLIDWORKS API 호출, 토큰 이름이 포함된 텍스트 파일입니다. SOLIDWORKS 작업 스케줄러에서 사용자 정의 작업으로 실행할 SOLIDWORKS 매크로 템플릿을 예약할 때 토큰 이름을 대체할 파라미터 값을 지정합니다.

토큰 이름에는 텍스트 문자열이나 숫자를 사용할 수 있습니다. 형식은 다음과 같습니다.

매개변수 유형 토큰 이름 형식
문자열 $$$<토큰_이름>$$$
###<토큰_이름>###

SOLIDWORKS 매크로 템플릿 파일의 확장명은 .swb입니다.

매크로 템플릿 작성 방법

  1. Windows 메모장, Microsoft 워드패드, 또는 기타 텍스트 편집기를 사용하여 새 텍스트 파일을 엽니다.
  2. SOLIDWORKS 매크로를 텍스트 파일로 복사하여 붙여넣습니다.
    SOLIDWORKS 매크로 파일에 대한 내용은 SOLIDWORKS API 및 애드인 도움말을 참조하십시오.
  3. 값을 지정하려는 매개변수의 적절한 위치에 토큰 이름을 입력합니다. 예:
    원래 코드: swApp.SetCurrentWorkingDirectory "c:\temp"
    수정한 코드: swApp.SetCurrentWorkingDirectory $$$TASK_WORKING_DIR$$$
  4. 확장명을 .swb로 텍스트 파일을 저장합니다.
    작업을 예약하고 실행하기 전에 SOLIDWORKS 매크로 템플릿 파일의 백업본을 만들거나 SOLIDWORKS 매크로 템플릿 파일을 작업 디렉터리가 아닌 다른 위치에 저장합니다. 보기 > 옵션 > 작업 옵션 을(를) 클릭하여 작업 중인 디렉터리를 확인할 수 있습니다. SOLIDWORKS 매크로 템플릿을 사용하는 작업이 실행될 때 매크로 템플릿의 복사본이 만들어지고 작업을 예약했을 때 지정한 파라미터 값으로 토큰 이름이 대체됩니다. 이 파일은 원래 SOLIDWORKS 매크로 템플릿과 같은 이름으로 작업 디렉터리에 저장됩니다. 원래 SOLIDWORKS 매크로 템플릿이 작업 디렉터리에 저장되어 있을 경우 새 파일이 기존 파일을 덮어씁니다.
    다음 코드는 SOLIDWORKS 매크로 템플릿의 예제입니다. 이 매크로는 폴더에 있는 각 SOLIDWORKS 도면 문서를 열어 DXF 파일로 저장합니다. SOLIDWORKS 작업 스케줄러에서 사용자 정의 작업으로 실행할 SOLIDWORKS 매크로 템플릿을 예약할 때 토큰 이름을 대체할 파라미터 값을 지정합니다. $$$TASK_SOURCE_DIR$$$$$$TASK_DESTINATION_DIR$$$
    Dim swApp As Object
    Dim swModel As Object
    Dim ret As Boolean
    Dim openError As Long
    Dim openWarn As Long
    Dim errorFilePath As String
    Dim nErrors As Long
    Dim nWarnings As Long
    Dim destinationPath As String
    Dim sourcePath As String
    Dim modelTitle As String
    
    Sub main()
    
        sourcePath = $$$TASK_SOURCE_DIR$$$
        destinationPath = $$$TASK_DESTINATION_DIR$$$
         
        errorFilePath = destinationPath + "\" + "swTaskScheduler.error"
        ErrorOut "Start logging any errors...", errorFilePath
        
        Set swApp = CreateObject("SldWorks.Application")
        swApp.SetCurrentWorkingDirectory destinationPath
        
        ' Determine type of document
        
        openWarn = 0
        
        Dim fileName As String
        fileName = Dir(sourcePath + "\*.SLDDRW")
        
        Do While fileName <> ""
            modelTitle = ""
            Set swModel = swApp.OpenDoc6(sourcePath + "\" + fileName, 3, 1, "", openError, openWarn)
            
            
            If (openWarn And 2) Then
                ErrorOut "File is read-only.", errorFilePath
                ret = False
            ElseIf (openWarn And 4) Then
                ErrorOut "File is locked by another user.", errorFilePath
                ret = False
            ElseIf (openWarn And 512) Then
                ErrorOut "File is view-only.", errorFilePath
                ret = False
            Else
                ret = True
            End If
            
            If Not swModel Is Nothing Then
                modelTitle = swModel.GetTitle()
                If ret = True Then
                        ' Strip off SOLIDWORKS drawing file extension (.slddrw)
                        ' and add DXF file extension (.dxf)
                        Dim sPathName As String
                        sPathName = swModel.GetPathName
                        sPathName = Left(sPathName, Len(sPathName) - 6)
                        sPathName = sPathName + "dxf"
                        sPathName = Replace(sPathName, sourcePath, destinationPath)
                        ' Save as file as DXF
                        bRet = swModel.SaveAs4(sPathName, swSaveAsCurrentVersion, swSaveAsOptions_Silent, nErrors, nWarnings)
                End If
                
                Set swModel = Nothing
                swApp.CloseDoc modelTitle
            End If
    
            
            fileName = Dir
        Loop
              
        ' Exit the SOLIDWORKS software
        swApp.ExitApp
        Set swApp = Nothing
        
    End Sub
    
    Function ErrorOut(errorString As String, errorFilePath As String)
        Open errorFilePath For Append As #5
        Print #5, errorString
        Close #5
    End Function