본문 바로가기
AutoCAD/AutoLisp

vla-GetBoundingBox함수와 원과의 관계에 대하여 ...

by Crony 2011. 11. 15.

vla-GetBoundingBox함수를 사용중에 재미있는 사항을 발견하여서 글을 올립니다.

이미 알고있는 내용이거나 중복글이면 그냥 패스하시면 됩니다^^

 

Z값이 없는 객체를 사용하면 당연히  vla-GetBoundingBox함수를 사용하여서 리턴이 되는 좌하단값과 우상단값이 Z값이 없어야 정상적입니다.

 

라인 폴리라인 스플라인등..은

X = ...     Y = ...     Z = 0.00000000 이렇게 값이 0의 값을 리턴하지만

객체가 원 호 타원일 경우는 좀 달라집니다.

X = ...     Y = ...     Z = -0.00000001 이렇게 소수점 8자리에서 1값을 리턴하네요

 

블럭일 경우도 테스트를 해보았습니다.

라인으로 구성된 블럭은 0의 값이지만 원이 들어가면 위의 결과와 마찬가지로 Z = -0.00000001이 나옵니다.

블럭안에 포함된 원의 갯수와는 상관이 없지만 블럭이 가지는 스케일하고 관련이 있습니다.

원이 포함된 블럭의 스케일을 400배 확대하면 Z = -0.00000400 값이 이렇게 나옵니다.

축소를 하여보니 0.5배까지는 Z = -0.00000001 0.4배부터 Z = 0.00000000으로 아옵니다.

 

테스트는 윈도우7에 오토캐드2008에서 해보았습니다.

다른분은 어떠신지 궁금하네요.

해결방법이 있을까요?

만약 캐드오차이면 vla-GetBoundingBox함수의 사용시 원이 포함된 블럭을 1억배의 스케일값을 주면 Z값이 1의 오차를 가지게 된다는 것입니다.