2021.05.03 11:11
드림플러스 질문은 아래에 남기는 것이 답변이 빠릅니다.
홈페이지 : http://www.dreamcad.net/support/qna/
메일 : email72@nate.com
vba intersectwith를 이용하여 교차되는 object를 찾는데...
대상 객체 수량이 10,000개정도 되다보니 찾는 시간이 오래걸리거나 팅겨지는 현상이 생깁니다.
코딩은 아래와 같습니다.
조언 부탁드리겠습니다.
for each entry in sobj
-
-
ip = rLine.intersectwith(vLine, acExtendnone)
if Ubound(ip) = 2 then
-
-
end if
next
안녕하세요.
VBA를 손 뗀지 너무 오래되어 (7년전?) 사실 잘 기억은 안 납니다.
VBA는 한줄 읽어 처리하는 방식입니다. 같은 한 줄씩 읽는 리습 보다는 빨라도 속도는 유리하지 않습니다.
(기회되면 .NET으로 해보세요)
그리고 1만개 교차를 각각 교차 검색이라면 실제 수행은 1만*1만 = 1억번 수행입니다.
교차 검색이라면 검색 끝난 것을 리스트에서 빼내서 다음 번 교차 검색 안 되도록 순환 횟수를 줄이는 것이 나을 것 같습니다.
아니면 객체를 조금씩 검색하던가 해야겠죠.
그냥 1만개 한번 검색하고 마는 일방향 검색이라면 순환 회수 줄일 수는 없을 것 같습니다.
ip 변수에 값이 없으면 Ubound 에러날테니
ip 변수를 Variant 형으로 하고 If IsEmpty(ip) Then 해서 값이 없으면 건너 뛰게 하는 것이 나을 것 같습니다.
문법이 잘 기억 안 나서 상세 답변은 못드릴 것 같습니다.