[Automation/DxD] DxDesigner에서 현재 열려 있는 project와 연결된 pcb path 확인

Version 1

    DxDesigner의 Automation에서 Application.GetProjectData로 얻을 수 있는 ProjectData Object를 통해 project와 관련된 다양한 정보에 접근할 수 있습니다.

     

    한 가지 고려해야 할 점은, DxDesigner에서는 하나의 project에 여러 개의 board를 구성하여 각각 pcb data를 별도로 연결할 수 있습니다. (아래 그림 참조)

     

     

    multi_board.jpg

     

     

    이 때에 각각의 board들의 이름은 Application.GetProjectData.GetiCDBDesigns 으로 얻을 수 있습니다.

    -> 위의 캡춰 이미지와 같은 project에서는 결과로 ("Board1", "Board2", "Board3") 이렇게 세 개의 문자열로 이루어진 배열이 return됩니다.

     

    이 각각의 board에 연결된 .pcb 의 이름은 Application.GetProjectData.GetPCBDesignPath("board의 이름", True) 로 알아냅니다.

    만약 연결된 .pcb가 없다면 결과가 "" 으로 return됩니다.


    단, .pcb의 이름은 full_path가 아닌, project 가 존재하는 path 아래의 위치만을 나타내므로, full_path를 얻어내려면 Application.GetProjectData.GetProjectPath 의 결과를 함께 활용하면 됩니다.

     

    아래의 예제는 project path와 그 아래의 각각의 Board에 대한 .pcb 파일을 MsgBox로 출력해 보도록 구성해 본 것입니다.

     

     


    Set oProjectData = Application.GetProjectData

    MSgBox oProjectData.GetProjectPath, , "Project Path"

    For Each sDesignName In oProjectData.GetiCDBDesigns   ' collection of design names by StringList
        sPcbPath = Application.GetProjectData.GetPCBDesignPath(sDesignName, True)
        If sPcbPath = "" Then
          MsgBox sDesignName & " : " & "No associated PCB", , "PCB Path"
        Else
          MsgBox sDesignName & " : " & sPcbPath, , "PCB Path"
        End If
        'If sPcbPath <> "" Then Exit For
    Next

     

     

    예제에서 사용된 ProjectData object에 대해서는 DxDesigner Automation Reference Manual (dxdesigner_auto.pdf) 에서 자세한 내용을 찾아보실 수 있습니다.

     

     

    //==========================================================================

    // DISCLAIMER OF WARRANTY: Unless otherwise agreed in writing,

    // Mentor Graphics software and associated files are provided "as is"

    // and without warranty. Mentor Graphics has no obligation to support

    // or otherwise maintain software. Mentor Graphics makes no warranties,

    // express or implied with respect to software including any warranty

    // of merchantability or fitness for a particular purpose.

    //

    // LIMITATION OF LIABILITY: Mentor Graphics is not liable for any property

    // damage, personal injury, loss of profits, interruption of business, or for

    // any other special, consequential or incidental damages, however caused,

    // whether for breach of warranty, contract, tort (including negligence),

    // strict liability or otherwise. In no event shall Mentor Graphics'

    // liability exceed the amount paid for the product giving rise to the claim.

    //==========================================================================