본문 바로가기
  • Welcome!
VBA For Creo

#4 IpfcBaseSession - 지정된 디렉토리의 파일 목록 찾기

by ToolBOX01 2021. 1. 12.
반응형

지정된 디렉토리의 파일 목록을 반환합니다.

Parameters - Function 프로시져의 인수를 정의 하는곳. 인수는 변수 입니다.
1) Filter  - 변수 이름은 "Filter" 입니다. String 타입의 변수를 정의합니다.
            - A filename filter, such as "*.prt"

2) Version  - 모든 버전 또는 최신 버전을 찾아야하는지 여부를 나타내는 플래그입니다. 또한 반환 된 목록을 
                  알파벳순으로 정렬 할 수 있습니다.

               -  IpfcFileList은 -> Enum EpfcFileListOpt  클래스 입니다
                  이 열거 유형은 디렉토리에 파일을 나열 할 때 반환되어야하는 파일을 나타냅니다.

              - 아래의 값 중 하나를 선택 합니다            

Values
EpfcFILE_LIST_ALL
List all files (including multiple versions of the same file).

EpfcFILE_LIST_LATEST
List only the latest version of each file.

EpfcFILE_LIST_ALL_INST
Same as FILE_LIST_ALL, to show instances for PDM locations.

EpfcFILE_LIST_LATEST_INST
Same as FILE_LIST_LATEST, to show instances for PDM locations.

EpfcFileListOpt_nil
Use this enumerated value to represent "null" passed to optional properties or method arguments.


3) Path
  The directory

함수 정의는 아래와 같이 하면 됩니다.
IpfcBaseSession.ListFiles("*.prt",  EpfcFILE_LIST_LATEST, "d:\idt")


함수의 변수 타입 정의

as  Istringseq

문자열의 순서를 정의 합니다.
사용자는 목록에서 정수 인덱스 (위치)로 요소에 액세스 할 수 있습니다. Sequence는 요소에 대한 위치 (인덱싱 된) 액세스 방법을 제공합니다. 시퀀스는 0부터 시작합니다. 폴더 아래의 파일 이름들에 인덱스 번호를 붙입니다. 

Sub file_list()

    Dim asynconn As New pfcls.CCpfcAsyncConnection
    Dim conn As pfcls.IpfcAsyncConnection
    Set conn = asynconn.Connect("", "", ".", 5)
    Dim oSession As pfcls.IpfcBaseSession
    Set oSession = conn.session
      
    Dim FileList As Istringseq
    Set FileList = oSession.ListFiles("*.prt", EpfcFILE_LIST_LATEST, "D:\ElectricMotor-models")

    For i = O To FileList.Count - 1
        Cells(i + 1, 1) = FileList.Item(i)
    Next i
    
'Disconnect with Creo
    conn.Disconnect (2)
    
End Sub

 

프로시져 실행 결과

 


선택된 폴더의 하위에 있는 폴더 이름 찾기

Function  ListSubdirectories 

Sub folder_list()

    Dim asynconn As New pfcls.CCpfcAsyncConnection
    Dim conn As pfcls.IpfcAsyncConnection
    Set conn = asynconn.Connect("", "", ".", 5)
    Dim session As pfcls.IpfcBaseSession
    Set session = conn.session
      
    Dim oSequence As Istringseq
    Set oSequence = session.ListSubdirectories("D:\TECH_MODEL")
   
    For i = 0 To oSequence.Count - 1
        Cells(i + 1, 1) = oSequence.Item(i)
        
    Next i
        
'Disconnect with Creo
    conn.Disconnect (2)
    
End Sub

 

"Istringseq" 개체는 문자열의 시퀀스 (순서를 가지고 나열되어 있는 어떤 객체)

사용자는 목록에서 정수 인덱스(위치)로 요소에 액세스할 수 있습니다. Sequence는 해당 요소에 대한 위치(인덱싱된) 액세스를 위한 메서드를 제공합니다. 시퀀스는 0을 기준으로 합니다.