본문 바로가기

프로그래밍(Programing)/엑셀매크로_vba(Excel-Macro)

도형(Shape)의 통로(Lane) 체크하기_02

https://hingle.tistory.com/59

 

도형(Shape)의 통로(Lane) 체크하기_01

https://hingle.tistory.com/58 도형(Shape)의 통로(Lane) 체크하기_서론 회사에서 위의 제목같은 검사기를 만들 수 있냐고 했다. 프로그램에서 나온 데이터를 뽑아보니 될것 같다고 해서 만들기로 마음 먹

hingle.tistory.com

저번 글에서 알 수 있는정보를 배열에 넣는것까지 알아봤다.

이제 어떻게 할지 알아보자.

 

나는 검사기를 개발할때 눈을 통해서 들어오는 정보를 가지고 검사가 되면,  컴퓨터에 알 수있게(눈으로 본 정보 vba언어로) 바꾸어 추출하고, 다시 디자인분들이 보기 쉽게 표현하려고 한다.

 

그림을 다시 보자

그림1

우리 눈에는 이런식으로 보인다.

하지만 저번 글에서 도형을 백터로 만든다고했다.

그러면 위에사진에 백터로 바꾸면 아래 같이 보인다.

그림2

자, 우리는 통로의 길이를 알아야 한다.

net A 곳의 통로와 net B의 통로는 2개라고 가정한다.

그림 3

그럼 A통로 와 B통로의 길이는 어떻게 구하는가?

저 둘의 통로의 길이를 알려면 우선 통로를 구성하는 선이 필요하다.

하나의 통로를 만들려면 2개의 선이 있어야 하니 총4개의 선을 알아야한다.

그림 4. 2번6번이 A통로, 10번14번이 B통로

그림4번처럼 나온 자료의 모임(배열)을 Vec이라고 하자.

2번의 x 좌표와 6번의 x좌표로 A의 통로를 알수있다.

지금같은 도형은 백터없이도 할 수 있겠지만 

 

그림5. 빨간선이 2개중 어떤선으로 비교할지모름

 그림5 와 같이 도형은 눈으로 보면 빨간선이 어느쪽의 통로의 선인지 알 수 있지만

좌표로 보면 (예 1.(2 1) (2 2)

                       ...

                     9.(2 -1) (2 -2) 

이렇게 나오는데 1번 직선을 건너뛰고 9번으로 갈 수있을까? 

 

문1 물론 빨간선의 y의 오차범위로 잡으면 되지않나?

아래그림이 부정한다.

그림6. 빨간선 y의범위에 여러개

 

좀더 생각하면 백터안쓰고 만들 수 있다고 말할 수 있겠지만 나는 백터란 요소를 만들어서 조금이나마 편하게(편하지 않지만) 개발한다.

 

다시 그림4번을 보면 

그림7 

가로 통로를 구하는데 ↑ ↓ 이런식으로 있는것을 알 수있다.

그리고 → , ← 은 높이통로계산할때는 필요하지만 가로통로에서는 필요가없다.

그림8. 검은백터 노랑백터를 각각 2개 배열로생성

그림8 같이 나타낼 수 있다. 

이것을 배열에 넣으면 (실제 예시)

그림9. 컴퓨터는 x y가 전환됨

우리 눈으로 보기 쉽게 이렇게 나온다. 

즉 Vec배열을 한 과정을 거쳐  VecUp, VecDown 이렇게 새로운 배열을 만든다.

 

여기서 나는 한가지 과정을 더 거치는데 백터배열에서 가장 오른쪽 부터 시작되게 그다음 아래 마지막에 제일 왼쪽에 위치한 백터가 시작되게 정렬한다.

이것을 하는 이유는 다음에.

 

이제 pin배열 과 VecUp, VecDown 을 가지고 어떠한 과정을 거쳐 

그림10.  완성된배열 모습

이런식으로 만들고(이게 끝이면 좋겠지만....)

최종검사 프로그램에(함수) 넣고 나오면 끝이다.

다음장에서 알아보자.

감사합니다.

728x90