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

Document created by nick_hong on Dec 20, 2013
Version 1Show Document
  • View in full screen mode

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


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






이 때에 각각의 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"
      MsgBox sDesignName & " : " & sPcbPath, , "PCB Path"
    End If
    'If sPcbPath <> "" Then Exit For



예제에서 사용된 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.