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

#2 IpfcBaseSession 이해 - Function 이해

by ToolBOX01 2021. 1. 11.
반응형

■ Function 사용 하기  -  Config.pro 옵션 값 가져오기

Function 프로시져는 프로그램을 실행 하고 Return  값을 줍니다.  

IpfcBaseSession [Function] : GetConfigOption (Name as String) as String [optional]

지정된 구성 파일 옵션에 대한 현재 값을 검색합니다. 이 함수가 반환하는 구성 옵션 값의 최대 길이는 80 자입니다.
Return값은 구성 요소 값 입니다. 타입은 스트링 입니다.

예제) Config.pro 파일에서 "tol_display" 값을 스트링 타입으로 가져오고, 메세지 박스로 출력 합니다.

Sub config()

    Dim asynconn As New pfcls.CCpfcAsyncConnection
    Dim conn As pfcls.IpfcAsyncConnection
    Dim session As pfcls.IpfcBaseSession
    Dim oValue As String
    
    Set conn = asynconn.Connect("", "", ".", 5)
    Set session = conn.session
    oValue = session.GetConfigOption("tol_display")
    
    msgbox oValue
        
    'Disconnect with Creo
    conn.Disconnect (2)
    
    'Cleanup
    Set asynconn = Nothing
    Set conn = Nothing
    Set session = Nothing
    Set model = Nothing

End Sub

 

 Function 사용 하기 - 지정된 폴더 안에 있는 "*.drw" 파일 카운트

IpfcBaseSession [Function] : ListFiles (Filter as String, Version as IpfcFileListOpt, Path as String [optional]) as Istringseq

예제) 지정된 폴더에 포함돤 "Drawing" 파일 개수를 표시 합니다

Sub drwcount()
On Error GoTo RunError
        Dim asynconn As New pfcls.CCpfcAsyncConnection
        Dim conn As pfcls.IpfcAsyncConnection      
        Dim oSession As pfcls.IpfcBaseSession
        Dim oCstringseq As Cstringseq
        
        Set conn = asynconn.Connect("", "", ".", 5)
        Set oSession = conn.session
        Set oCstringseq = oSession.ListFiles("*.drw", EpfcFILE_LIST_LATEST, "C:\idt\backup")
        
        ' 폴더 안에 있는 파일 개수를 표시 합니다
        MsgBox oCstringseq.count           
       
        conn.Disconnect (2)
        
        'Cleanup
        Set asynconn = Nothing
        Set conn = Nothing
        Set oSession = Nothing
        Set oModel = Nothing
    

RunError:

    If Err.Number <> 0 Then
        MsgBox "Process Failed : Unknown error occurred." + Chr(13) + _
                "Error No: " + CStr(Err.Number) + Chr(13) + _
                "Error: " + Err.Description, vbCritical, "Error"

        If Not conn Is Nothing Then
            If conn.IsRunning Then
                conn.Disconnect (2)
            End If
        End If
    End If

End Sub

▷ CStringSeq 함수

CStringSeq은 PTC Creo Parametric의 VBA API에서 사용되는 클래스 중 하나입니다. 이 클래스는 문자열 시퀀스를 나타내며, 일련의 문자열을 저장하고 관리하는 데 사용됩니다.
이 클래스는 예를 들어 특정 작업을 수행하거나 데이터를 저장하기 위해 여러 문자열을 관리하려는 경우에 유용합니다.

Set oCstringseq = oSession.ListFiles("*.drw", EpfcFILE_LIST_LATEST, "C:\idt\backup")
- 지정된 폴더에서 드로잉 파일의 정보를 가져 옵니다

"EpfcFILE_LIST_LATEST"은   이 열거 유형은 디렉토리에 파일을 나열할 때 반환되어야 하는 파일을 나타냅니다.

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

2. EpfcFILE_LIST_LATEST
   - List only the latest version of each file.

 

특정 폴더에 있는 파일들 이름을 가져  오는 코드 

 

Sub FileCount()

        Dim asynconn As New pfcls.CCpfcAsyncConnection
        Dim conn As pfcls.IpfcAsyncConnection:
        Dim oSession As pfcls.IpfcBaseSession
        Dim oPath As String
        Dim oCstringseq As Cstringseq

On Error GoTo RunError

        Set conn = asynconn.Connect("", "", ".", 5)        
        Set oSession = conn.session
        oPath = "C:\idt\backup"
        Set oCstringseq = oSession.ListFiles("*.*", EpfcFILE_LIST_LATEST, oPath)
                   
        Dim i As Long
        For i = 0 To oCstringseq.count - 1
        
            Cells(i + 1, "A") = oCstringseq.Item(i)
            
        Next i
                  
        conn.Disconnect (2)
        
        'Cleanup
        Set asynconn = Nothing
        Set conn = Nothing
        Set oSession = Nothing
        Set oModel = Nothing
    
RunError:

    If Err.Number <> 0 Then
        MsgBox "Process Failed : Unknown error occurred." + Chr(13) + _
                "Error No: " + CStr(Err.Number) + Chr(13) + _
                "Error: " + Err.Description, vbCritical, "Error"

        If Not conn Is Nothing Then
            If conn.IsRunning Then
                conn.Disconnect (2)
            End If
        End If
    End If

End Sub


영업 문의 : lionkk@idt21c.com