티스토리 뷰

반응형

dim_angular(doc, 30091.217969999998, 287.5, 30991.217969999998, 287.5, 30091.217969999998, 287.5, 30019.217969999998, 729.5, 100, direction='right') 위와 같은 치수로 전송이 되었는데, 각도가 표시는 된다. 하지만, 각을 표시하는 치수선과 글씨가 반대쪽으로 나오는 현상이 있다. 예를 들어 45도를 표시하는데, 반대로 각을 표시하고 315도가 표시되는 것이다. 이를 해결하려면?

ezdxf에서 add_angular_dim_2l() 함수로 각도 치수를 표시할 때, 두 선분(line1, line2)의 방향(순서)에 따라 **‘작은 각(45°)’이 아닌 큰 각(315°)’**이 잡히는 현상이 발생할 수 있습니다.

결국 “어느 선을 먼저, 어느 선을 나중에 정의하느냐” 혹은 “선분의 시작점·끝점 순서” 에 의해 내부적으로 계산되는 각도가 달라집니다. 이 문제를 해결하는 대표적인 방법은 아래 두 가지 중 하나입니다.


1) 선분의 정의 순서를 바꾸거나, 시작점과 끝점을 뒤집는 방법

ezdxf는 add_angular_dim_2l(base, line1=(p1, p2), line2=(p3, p4), ...)에서
(p1, p2) → (p3, p4) 순서대로 각도를 계산합니다.

  • 만약 Line1Line1Line2Line2 순서가 반대로 되면 원하는 작은 각 대신 큰 각(315°)을 표시할 수 있습니다.
  • 대칭하거나 직교(수직)한 선분이면, 두 점의 정의를 뒤집어서 “45°”가 나오도록 해줄 수 있습니다.

예를 들어, 지금은

line1: (30091.2179, 287.5) → (30991.2179, 287.5)
line2: (30091.2179, 287.5) → (30019.2179, 729.5)

이렇게 되어 있는데, 이를

line1: (30991.2179, 287.5) → (30091.2179, 287.5)
line2: (30091.2179, 287.5) → (30019.2179, 729.5)

또는

line1: (30019.2179, 729.5) → (30091.2179, 287.5)
line2: (30091.2179, 287.5) → (30991.2179, 287.5)

처럼 순서를 바꾸거나, 선분의 시작/끝점을 바꿔 호출하면 결과적으로 “45°” 같은 작은 각도값이 표시됩니다.

  • 쉽게 말해, “지금 측정되는 각이 315°라면, 반대 방향으로 보면 45°”라는 개념입니다.
  • 선분들이 만나는 교차점이 같다면, 두 선분을 어떻게 정의하느냐(혹은 어느 것을 line1으로, 어느 것을 line2로 넣느냐)에 따라 ezdxf가 측정하는 각도가 달라집니다.

2) ‘3점 각도 치수’(add_angular_dim_3p)를 사용하는 방법

ezdxf에선 add_angular_dim_3p() 형태로, 세 점을 이용해 직접 원하는 각도를 지정하는 방식도 있습니다:

  • P1, P2, P3: 각도를 형성하는 3개의 지점
  • dimlocation: 치수선(각도 표시) 텍스트를 배치할 위치

이 방식을 쓰면 “어느 쪽 각도”를 측정할지 더 명확하게 지정할 수 있습니다.
다만, 두 라인에 대한 단순 호출이 아닌, 세 점(중심점 + 두 점) + 치수선 위치로 각을 지정해야 하므로 코드 구조가 조금 달라집니다.


요약

  • 가장 간단한 방법은 현재 선분 정의(순서)로 인해 큰 각(315°)이 잡히는 것이므로, line1과 line2(혹은 각각의 시작·끝점)를 반대로 지정하거나 뒤집는 식으로 “작은 각(45°)”이 잡히도록 조정하세요.
  • 더 확실하게 원하는 각을 표시하고 싶다면 3점 각도 치수(add_angular_dim_3p) 방식을 사용하는 것도 방법입니다.

이렇게 선분의 순서(또는 시작·끝점)를 적절히 수정하면, 315° 대신 45°가 표시되도록 쉽게 해결할 수 있습니다.

반응형
댓글