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의 오차를 가지게 된다는 것입니다.
'AutoCAD > AutoLisp' 카테고리의 다른 글
(list x y z) x y 좌표로 변경 (0) | 2012.03.17 |
---|---|
OpenDCL 튜토리얼 첫번째 (0) | 2012.02.24 |
LayerState에 관한 설명 - 캐드에서 레이어 셋팅을 관리가능 (0) | 2011.11.09 |
리습에 대한 생각 (0) | 2011.05.25 |
[XREF] Xref파일 Bind후에 Xref에서 off된 레이어 삭제 (0) | 2011.05.15 |