NGMsoftware

NGMsoftware
로그인 회원가입
  • 매뉴얼
  • 팁 앤 테크
  • 매뉴얼

    팁과 테크니컬 노하우를 확인하세요.

    팁 앤 테크

    팁과 테크니컬 노하우를 확인하세요.

    본 사이트의 컨텐츠는 저작권법의 보호를 받으므로 무단 복사, 게재, 배포 등을 금합니다.

    스크립트 ★필독★ 변수를 이용한 좌표계 연산에 대한 설명

    페이지 정보

    본문

    안녕하세요. 엔지엠소프트웨어입니다. 엔지엠 매크로의 활성/비활성/하드웨어 방식의 좌표계 연산에 대해 충분한 설명이 없다보니 많은 분들이 혼란스러워 하시는거 같습니다. 이 부분에 대해 일부 버그도 존재했었고, 충분히 테스트가 되지 못한 부분도 있었기에 제 잘못이 큽니다. 사실 저도 항상 시간에 쫒기면서 생활하고 있는데요^^; 설명이 부족하고 버그로 인해 소중한 시간을 뺏긴 부분에 대해 우선 사과드리고 싶습니다.

    img.gif 

     

     

    활성모드는 이미지 서치 또는 매치와 같은 좌표를 동적으로 처리하는 부분과 마우스 좌표에 대해 위치가 고정이기 때문에 특별한 계산이 없습니다. 하지만, 비활성(핸들 추가)인 경우에는 작업의 연속성을 위해 이전 윈도우의 상태를 내부에 저장하게 됩니다. 글로 설명하니 간단해 보이지만, 내부에 로직은 복잡하다보니 여러가지 이슈가 발생했었습니다. 테스트 케이스도 많아서 상당히 많은 시간이 소모되는 곳이기도 하구요^^;

    우선, 아래 그림을 보시면 속성의 데이터에 "매인 윈도우 정보"와 "콘트롤 윈도우 정보"가 대부분의 좌표 연산하는 액션에 추가되어 있는걸 알 수 있습니다.

    img.png 

     

     

    예들 들어서 좌측의 그림판에 주황색 좌표를 마우스 클릭으로 설정합니다. 활성 모드에서는 좌표 계산할 필요가 없습니다. 창이 이동되더라도 설정한 좌표를 클릭하면 되니까요. 하지만, 비활성의 경우 창이 이동되면~ 이동된 만큼 거리를 계산해서 마우스 좌표를 재설정 합니다. 마우스 좌표가 100, 100이라고 할때 창의 위치가 50, 50이었다고 합시다. 비활성 모드에서 좌표는 100, 100이지만 실제로는, 안쪽 콘트롤 윈도우의 위치값을 뺀 후 마우스 좌표를 설정해서 처리합니다. 아래 그림을 보시면 좀 더 쉽게 이해할 수 있을겁니다. 매인 윈도우 위치에서 찾고자 하는 콘트롤 윈도우 위치까지 거리를 계산해야 하기 때문입니다.

    img.png 

     

     

    이런 정보는 처음 만들때 저장되고 유지됩니다. 따라서 창의 위치가 바뀌더라도 해당 정보가 있기 때문에 동일한 위치를 찾거나 클릭이 가능해집니다. 처음 스크립트를 만들때 저장된 위치와 이동된 창 위치를 더하거나 빼준 값으로 마우스 위치를 보정해주는 방식입니다. 여기까지는 쉽게 이해하셨으리라 생각됩니다^^; 다시 정리하면, 이미지를 캡쳐해서 생성하거나 마우스 위치 트래킹 기능으로 좌표를 설정하면 항상 매인 윈도우 정보와 콘트롤 윈도우 정보가 자동으로 만들어집니다. 물론, 찾기 영역을 설정할때도 동일합니다. 비활성 상태에서는 찾기 영역도 동적으로 변화할 수 있기 때문에 영역의 좌표값을 보정해주는 작업이 필요하기 때문입니다.

     

    이제 좀 깊이있게 들어가서 설명을 드리면, 이미지 서치와 매치는 이미지(ngi)라는 이전 정보를 가진 오브젝트를 사용합니다. 엔지엠 전용 이미지는 내부에 찾을 이미지가 있었던 창의 정보 및 각종 이미지 필터 정보가 같이 포함되어 있습니다. (흑백, 투명, 외각, 임계, 밝기등등...) 중요한 부분은 이미지가 있었던 창의 위치 정보입니다. 이 정보를 바탕으로 현재의 상태를 판단하고, 이전 창의 위치와 현재 창의 위치가 다른경우 기준좌표로 더하거나 빼서 보정해줍니다. 이 보정된 값을 마우스 좌표로 넘겨주게 되는데요. 이 때 내부적으로 매인 윈도우 정보와 콘트롤 윈도우 정보도 같이 넘겨줍니다. 그래서 이미지 서치나 이미지 매치에 기본 포함되어 있는 마우스 클릭은 정상 동작하게 됩니다. 모든 정보가 다 있으니까요^^;

     

    그렇다면, 이미지 서치 또는 이미지 매치와 변수를 이용해서 찾기 영역을 추가하면 어떻게 될까요? 찾기 영역을 에디터 모드에서 하면 자동으로 창의 매인 윈도우와 콘트롤 윈도우 정보가 갱신됩니다. 하지만, 찾기 영역을 변수로 처리하면 찾기 영역의 값만 들어오고 어떤 윈도우에서 사용할지 알 수 없게됩니다. 하지만 문제가 되지는 않습니다. 이미지 서치 또는 이미지 매치는 이미지를 선택해야하기 때문에 이미지에 포함된 창의 정보와 스크립트가 실행될 때 핸들로 잡은 창의 위치를 계산해서 자동으로 처리해줍니다. 여하튼, 이미지 관련 조건들은 이미지라는 이전 상태를 가지고 있기 때문입니다. 그런데, 마우스 좌표를 변수로 처리할때는 어떻게 될까요? 이전 정보를 알 수 없기 때문에 비활성 모드에서 정상적으로 동작하지 않을겁니다. 단순히 예를 들어서, 이미지 서치로 찾은 위치를 변수에 넣고 마우스 클릭이 좌표 값만 받으면 매인 윈도우와 콘트롤 윈도우 정보가 비어 있게 됩니다.

    img.png 

     

     

    그렇다면, 이미지 서치 또는 이미지 매치로 찾은 위치에 어떤 수식을 처리해서 계산된 값으로 마우스를 클릭하게 하려면 어떻게 해야 할까요? 방법이 없을까요? 아닙니다. 비활성 모드에서 마우스 좌표를 사용자가 직접 에디터 모드로 하지 않고 변수로 좌표 값을 설정하면 매인 윈도우와 콘트롤 윈도우 정보도 변수로 넣어주면 됩니다. 이때는 기준이 되는 매인과 콘트롤 윈도우 정보여야 합니다.

    img.png 

     

     

    개발자에게 후원하기

    MGtdv7r.png

     

    추천, 구독, 홍보 꼭~ 부탁드립니다.

    여러분의 후원이 빠른 귀농을 가능하게 해줍니다~ 답답한 도시를 벗어나 귀농하고 싶은 개발자~

    감사합니다~

    • 네이버 공유하기
    • 페이스북 공유하기
    • 트위터 공유하기
    • 카카오스토리 공유하기
    추천0 비추천0

    댓글목록

    등록된 댓글이 없습니다.