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

학습 06) Open API, 엑셀 VBA - PTC Data Administration domain #1

by ToolBOX01 2024. 7. 9.
반응형

○  Windchill 유형의 모든 속성에 대한 모든 제약조건을 찾는 기능

Windchill의 속성과 제약조건
1. 속성(Attributes): 
Windchill에서 객체(Object)는 다양한 정보를 담고 있는 속성을 가지고 있습니다. 
예를 들어, 문서 객체는 제목, 작성자, 버전 등의 속성을 가질 수 있습니다.

2. 제약조건(Constraints): 
속성에는 다양한 제약조건이 부여될 수 있습니다. 예를 들어, 특정 속성은 필수 입력이어야 하거나, 
숫자 범위가 정해져 있거나, 특정 형식의 날짜를 입력해야 할 수 있습니다.

 

1. Request URL

http://WC 주소/Windchill/servlet/odata/v6/DataAdmin/
Containers('OR%3Awt.pdmlink.PDMLinkProduct%3A131308')/
PTC.DataAdmin.GetConstraints(EntityName='PTC.ProdMgmt.Part',DriverProperties=@DriverProperties)

 

1) Containers
     - 제품 (PDMLinkProduct)의 주소 입니다

3)  EntityName
     - Object 유형 입니다. "PTC.ProdMgmt.Part" 는 Wtpart 입니다.

2. WRS

 

3. VBA 코드

WTPart의 특성 값을 표시 합니다. 기본 값도 표시 합니다

Option Explicit
Sub wtpart_list01()

        '// 오류 발생 시 오류 메시지 출력
        On Error Resume Next
        
        Call MainGetToken.GetToken001
        
        Dim xmlhttp As Object
        Set xmlhttp = CreateObject("MSXML2.XMLHTTP.6.0")
        Dim Url As String
        Dim requestBody As String
        Dim GetresponseText As String
        Dim status As Integer
        Dim jsonObject As Object
        Dim jsonItem As Object
        Dim ProductType As String
        
        Dim i, j As Integer
            
        Url = "http://WC 주소 입력/Windchill/servlet/odata/v6/DataAdmin/Containers('OR%3Awt.pdmlink.PDMLinkProduct%3A131308')/" _
        & vbCrLf & "PTC.DataAdmin.GetConstraints(EntityName='PTC.ProdMgmt.Part',DriverProperties=@DriverProperties)"
         
         '// 서버와의 연결 열기
        xmlhttp.Open "GET", Url, False
        
        '//요청 헤더 설정
        xmlhttp.SetRequestHeader "Content-Type", "application/json"
        xmlhttp.SetRequestHeader "CSRF_NONCE", NonceTorken("NonceValue")
        
         '//요청 보내기
        xmlhttp.Send requestBody
        
         '// 오류 발생 시 디버그 창에 오류 메시지 출력
        If Err.Number <> 0 Then
            Debug.Print "Error " & Err.Number & ": " & Err.Description
            On Error GoTo 0
            Exit Sub
        End If
    
        '// 응답 상태 코드 가져오기
        status = xmlhttp.status
        
        '// 응답 텍스트 가져오기
        GetresponseText = xmlhttp.responseText
        
        '// JSON 파싱
        Set jsonObject = JsonConverter.ParseJson(GetresponseText)
        
           '// 데이터 엑셀에 출력
                i = 1
                j = 1
                For Each jsonItem In jsonObject("value")
                               
                               Worksheets("WTOBJECT_List").Cells(j + 4, "A") = j
                               Worksheets("WTOBJECT_List").Cells(j + 4, "B") = jsonItem("Container")
                               Worksheets("WTOBJECT_List").Cells(j + 4, "C") = jsonItem("Entity")
                               Worksheets("WTOBJECT_List").Cells(j + 4, "D") = jsonItem("Property")
                               Worksheets("WTOBJECT_List").Cells(j + 4, "E") = jsonItem("DefaultValue")
                               Worksheets("WTOBJECT_List").Cells(j + 4, "F") = jsonItem("LegalValues")
                               Worksheets("WTOBJECT_List").Cells(j + 4, "G") = jsonItem("Constraints")
                               Worksheets("WTOBJECT_List").Cells(j + 4, "H") = jsonItem("Visibility")
                               Worksheets("WTOBJECT_List").Cells(j + 4, "I") = jsonItem("DefaultUnits")
                               
                                j = j + 1
                            
                   i = i + 1
                Next jsonItem

        '// 응답 상태 및 텍스트 출력 (디버깅 용도)
        '// Debug.Print "Status: " & status
        '//Debug.Print "Response: " & GetresponseText
        
        '// 정리 작업
        Set xmlhttp = Nothing
End Sub

 

프로그램 실행 결과