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_WORKING_DIR$$$, $$$TASK_FILE_TYPE$$$, $$$TASK_FILEPATH_NAME$$$$$$TASK_FILE_NAME$$$입니다.
    Dim swApp As Object Dim swModel As Object Dim ret As Boolean Dim dummyRet As Long Dim longstatus As Long Dim errorFilePath As String Dim nErrors As Long Dim nWarnings as Long Sub main() errorFilePath = $$$TASK_WORKING_DIR$$$ + "\" + "swTaskScheduler.error" ErrorOut "Start logging any errors...", errorFilePath Set swApp = CreateObject("SldWorks.Application") swApp.SetCurrentWorkingDirectory $$$TASK_WORKING_DIR$$$ ' Determine type of document longstatus = 0 ' $$$TASK_FILE_TYPE$$$ is case-sensitive! You must enter SW_DRAWING_TYPE or SW_DRAWING_TYPE_OLD If ($$$TASK_FILE_TYPE$$$ = "SW_DRAWING_TYPE" OR $$$TASK_FILE_TYPE$$$ = "SW_DRAWING_TYPE_OLD") Then Set swModel = swApp.OpenDoc6 ($$$TASK_FILE_PATHNAME$$$, 3, 1, "", dummyRet, longstatus) ErrorOut "File is a drawing document.", errorFilePath Else ErrorOut "File is not a drawing document.", errorFilePath End If ret = True ' If document is read-only, locked, or view-only, then log an error If (longstatus And 2) Then ErrorOut "File is read-only.", errorFilePath ret = False ElseIf (longstatus And 4) Then ErrorOut "File is locked by another user.", errorFilePath ret = False ElseIf (longstatus And 512) Then ErrorOut "File is view-only.", errorFilePath ret = False End If ' Close the document if read-only, locked, or view-only If (ret = False) Then Set swModel = Nothing swApp.CloseDoc $$$TASK_FILE_NAME$$$ End If Set swModel = swApp.ActivateDoc ($$$TASK_FILE_NAME$$$) If Not swModel Is Nothing Then ' If document is a drawing, then... If ($$$TASK_FILE_TYPE$$$ = "SW_DRAWING_TYPE" OR $$$TASK_FILE_TYPE$$$ = "SW_DRAWING_TYPE_OLD") Then ' Strip off SOLIDWORKS drawing file extension (.slddrw) ' and add DXF file extension (.dxf) sPathName = swModel.GetPathName sPathName = Left(sPathName, Len(sPathName) - 6) sPathName = sPathName + "dxf" ' Save as file as DXF bRet = swModel.SaveAs4(sPathName, swSaveAsCurrentVersion, swSaveAsOptions_Silent, nErrors, nWarnings) End If Else ErrorOut "Document was not or could not be opened.", errorFilePath End If ' 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