본문 바로가기
  • You find inspiration to create your own path !
업무 자동화/VBA, VB.NET For Creo

IpfcBaseSession : Method (Sub CopyFileToWS)

by ToolBOX01 2025. 11. 1.
반응형

◎ Sub CopyFileToWS(SourceFile As String, TargetWorkspace As String, PrimaryContent As String [optional])

기능

  • 로컬 디스크 상의 파일을 Windchill 워크스페이스(서버)로 복사합니다. 
  • 복사 방식은 두 가지로 사용할 수 있습니다:
    1. 새 문서로 워크스페이스에 파일을 업로드
    2. 기존 문서에 “보조 콘텐츠(secondary content)”로 첨부하여 업로드 → 이 경우 PrimaryContent 인자에 기존 문서명이 들어감.

매개변수 설명

  • SourceFile : 로컬에 있는 파일 경로 (예: "C:\Temp\example.pdf").
  • TargetWorkspace : 복사 대상 워크스페이스 경로/이름. (예: 서버의 워크스페이스 식별자)
  • PrimaryContent : (선택) 이 파일을 첨부할 “기존 문서”의 이름. 예: "box7.prt". 만약 새 업로드만 할 거면 Nothing 또는 빈 문자열로 전달합니다. 위 예시에서는 null을 전달하라 안내되어 있습니다.
1. PrimaryContent를 생략하거나 Nothing으로 지정하면 → 새 파일로 업로드됨
   즉, Windchill에서 “새 문서로 추가됨”  
   파일 이름은 Windchill이 자동 생성(혹은 Creo 설정에 따라 이름 매칭)

2. 기존 문서에 보조 콘텐츠(Secondary Content)로 첨부
   PrimaryContent에는 반드시 워크스페이스에 이미 존재하는 문서 이름을 입력해야 합니다.
   파일은 Windchill에서 해당 문서의 Secondary Content (부속 첨부파일) 로 등록됩니다.
   
sample 코드

    Dim baseSession As IpfcBaseSession
    Dim sourceFile As String
    Dim targetWS As String
    Dim primaryDoc As String
    
    sourceFile = "C:\Temp\manual.pdf"
    targetWS = "My_Workspace"
    primaryDoc = "box7.prt"
    
    baseSession.CopyFileToWS (sourceFile, targetWS, primaryDoc)
    MsgBox "manual.pdf가 box7.prt 문서의 보조 콘텐츠로 첨부되었습니다."

예외 사항

아래 예외들이 발생할 수 있음 (대표적으로)

  • IpfcXToolkitInvalidFile : 입력한 파일이 존재하지 않거나 잘못된 경로/형식일 때.
  • IpfcXToolkitBadContext : PrimaryContent나 워크스페이스 컨텍스트 설정이 잘못됐을 때.
  • IpfcXToolkitCantWrite : 대상 워크스페이스에 쓰기 권한이 없거나 파일을 생성할 수 없을 때.

Sample Code

Dim baseSession As IpfcBaseSession
Dim sourcePath As String
Dim targetWS As String

sourcePath = "C:\Users\myUser\Documents\Specs\MySpec.pdf"
targetWS = "WTWorkspace://MyCompany/Engineering/Specs"

'// 파일 복사 호출 //'
baseSession.CopyFileToWS (sourcePath, targetWS, Nothing)

MsgBox "파일 업로드가 완료되었습니다.", vbInformation

 

주의사항

  • 워크스페이스 경로(TargetWorkspace)가 정확해야 하며, Windchill 서버에서 해당 경로에 써넣기 권한이 있는지 확인하세요.
  • 파일이 두꺼운(큰) 경우 네트워크/서버 응답 시간이 길 수 있으므로 타임아웃 또는 진행 상태 표시를 고려하는 것이 좋습니다.
  • 보조 콘텐츠로 첨부 시 해당 문서가 이미 체크아웃 상태이거나 동시 접근 중이면 오류가 발생할 수 있으므로, 문서 상태를 미리 확인하는 로직을 추가하면 좋습니다.
  • 복사되는 파일이 Creo 모델, 어셈블리, 드로잉 등 참조가 많은 경우에는 이 메서드만으로는 참조 전체를 보장하지 않습니다. 
  • 예외 처리(Exception) 종류가 여러 가지이므로 VBA에서도 Err.Number 또는 해당 API 리턴값을 통해 세부 에러를 처리하도록 구현하면 유지보수에 유리합니다.
  • 대량 파일 업로드나 자동화 스크립트에서는 로그를 남기고 실패 혹은 성공 건을 별도로 기록해 두면 나중에 문제 추적할 때 도움이 됩니다.

참고사이트

파일 한개를 windchill 작업공간에 복사 하는 기능입니다. 만일 엑셀 파일에 1억개의 파일 이름이 있다면, 사람이 " 작업공간에 복사 하는 것은 불가능 합니다. 위 코드와 "반복 코드"를 사용하다면, 사람의 개입 없이 자동으로 수행 할 수있습니다.

by korealionkk@gmail.com


반응형