# 표시를 위해 VisionPro 레코드에 ViDi 그래픽 통합

Cognex ViDi Suite에서 VisionPro 이미지 작업 항목에서 설명된 바와 같이, ViDi 그래픽은 Image 좌표로 변환되고, VisionPro 그래픽 개체로 전환되고, 루트 좌표 공간에서 해석되어야 합니다. 이 그래픽을 표시하려면, 이들을 (입력 이미지와 함께) VisionPro Display에 의해 사용되는 VisionPro 레코드에 추가해야 합니다. 마지막으로, 이 레코드들은 다른 VisionPro 도구가 만든 레코드와 결합하여야 VisionPro 및 ViDi 그래픽을 모두 하나의 디스플레이에 표시할 수 있습니다.

## VisionPro 그래픽으로 전환

좌표 변환, ViDi 유형에서 VisionPro 유형으로의 전환, SelectedSpaceName의 설정은 모두 래퍼에 의해 자동으로 처리됩니다. 전환은 세 가지 인터페이스(ICreateBlueToolGraphics, ICreateRedToolGraphics, ICreateGreenToolGraphics)에 의해 수행되므로, 계획적인 사용자는 기본 그래픽의 색상이나 스타일을 변경하고자 할 경우 자신만의 전환을 정의할 수 있습니다. ViDi는 사각형 ROI만을 지원하므로, 보기를 나타내는 사각형 그래픽은 공개 API에서 재정의할 수 없습니다. 그래픽이 픽셀 값을 이용해 그려지므로, 기본 실행은 픽셀 공간에 대해 SelectedSpaceName를 "#"로 설정합니다.

참고 :

- DefaultBlueToolGraphicsCreator는 Blue 마스킹의 형상과 일치 대상을 동등한 ICogGraphic 유형으로 전환합니다.
- DefaultRedToolGraphicsCreator는 Markings 마스킹의 영역을 동등한 ICogGraphic 유형으로 전환하며, Heatmap 이미지도 생성합니다.
- DefaultGreenToolGraphicsCreator는 Green 마스킹의 태그를 동등한 ICogGraphic 유형으로 전환합니다.

## 레코드에 그래픽 추가

래퍼는 ViDi 마킹을 직접 VisionPro 레코드의 계층 구조로 전환하는 클래스도 제공합니다. 이 클래스들은 ViDi 이미지 및 ViDi 마킹으로 구축되며, 구축 과정에서 이 클래스들은 해당하는 ICreateToolGraphics 인터페이스를 이용해 내부의 그래픽을 전환합니다. 각 그래픽은 자체적인 레코드의 Content로 추가되며, 마킹 계층 구조를 미러링하는 계층 구조가 이 레코드들로부터 생성됩니다.

두 개의 부품을 이미지에서 찾는 Blue 도구의 경우, 마킹 계층 구조는 이렇게 보일 것입니다.

- BlueMarking
  - BlueView
    - 형상
  - BlueView
    - 형상

이 마킹이 BlueToolRecord를 생성하기 위해 이용되면, 결과적인 레코드의 계층 구조는 이렇게 보일 것입니다.

- BlueTool 레코드
  - Content = 입력 이미지
  - SubRecords
    - BlueViewRecord
      - Content = ROI 그래픽
      - SubRecords
        - FeatureRecord
          - Content = 형상 그래픽
    - BlueViewRecord
      - Content = ROI 그래픽
      - SubRecords
        - FeatureRecord
          - Content = 형상 그래픽

VisionPro Display에서, 이 레코드는 각 ROI 그래픽 내에 입력 이미지, 두 개의 ROI 그래픽, 하나의 형상 그래픽을 표시할 것입니다.

참고 :

- BlueToolRecord은 BlueMarking을 BlueViewRecords, FeatureRecords, ModelRecords의 계층 구조로 전환합니다.
- RedToolRecord는 RedMarking을 RedViewRecords, RegionRecords의 계층 구조로 전환하며, Heatmap 이미지를 노출합니다.
- GreenToolRecord는 GreenMarking을 GreenViewRecords 및 TagRecords의 계층 구조로 전환합니다.

## 레코드 결합

래퍼는 하나의 마킹을 하나의 레코드로 전환하는 클래스를 제공하지만, ViDi 응용 프로그램의 각 도구는 자체적인 마킹을 생성합니다. 마찬가지로, VisionPro 응용 프로그램의 각 도구도 자체적인 레코드를 생성합니다. ViDi 및/또는 VisionPro의 다수 도구 그래픽을 하나의 디스플레이에 표시하려면, 레코드들이 하나로 결합되어야 합니다.

레코드를 결합하는 절차는 다음과 같습니다.

1. 새로운 VisionPro 레코드를 생성합니다.
2. 표시할 이미지를 새로운 레코드의 Content 속성에 할당합니다.
3. 래퍼가 생성한 각 ViDi ToolRecord에 대해
   1. ToolRecord를 새로운 레코드의 SubRecords 컬렉션에 추가합니다.
4. 각 VisionPro 도구에 대해
   1. CreateLastRunRecord()를 통해 도구의 마지막 실행 레코드를 얻습니다.
   2. 마지막 실행 레코드를 새로운 레코드의 SubRecords 컬렉션에 추가합니다.
5. 새로운 레코드를 VisionPro Display로 넘깁니다.

결과적인 레코드 구조는 이렇게 보일 것입니다.

- NewRecord
  - Content = 표시할 이미지
  - SubRecords
    - RedToolRecord
      - ...
    - PMAlignTool.LastRun
      - ...

## 요약

ViDi 마킹의 결과는, 마킹 및 입력 이미지로 ToolRecord를 생성하여, VisionPro Display에 표시될 수 있습니다. 다수의 ToolRecords 및/또는 다수의 VisionPro 도구 레코드를 표시하려면, 레코드들은 표시할 이미지를 담고 있는 새로운 레코드의 SubRecords로 추가되어야 합니다.