티스토리 뷰

반응형

Python ezdxf로 AutoCAD처럼 치수선 꾸미기 - 초보자 가이드

AutoCAD에서 치수선을 만들 때, 실제 측정값 앞에 문구를 추가해 꾸미는 기능을 사용해본 적 있으신가요? 예를 들어 "직선거리 1000"처럼 말이죠. 오늘은 Python의 ezdxf 라이브러리를 이용해 AutoCAD와 동일한 기능을 구현하는 방법을 초보자도 쉽게 이해할 수 있도록 설명드리겠습니다.


ezdxf란?

ezdxf는 Python으로 DXF(Drawing Exchange Format) 파일을 생성하고 수정할 수 있는 라이브러리입니다. DXF는 AutoCAD에서 사용하는 도면 파일 형식으로, 이 라이브러리를 사용하면 CAD 소프트웨어 없이도 도면 작업을 자동화할 수 있습니다.

설치하기

ezdxf는 Python 패키지로 간단히 설치할 수 있습니다: ```bash pip install ezdxf

 


치수선 만들기

목표

"직선거리 1000"과 같은 고정 문구가변 거리 값이 포함된 살아있는 치수선을 만들어 봅시다. 거리는 선의 위치를 변경하면 자동으로 업데이트되도록 설정합니다.


기본 코드

아래는 "직선거리" 문구와 함께 치수선을 만드는 예제입니다:

import ezdxf

# 새로운 DXF 파일 생성
doc = ezdxf.new()

# 모델 공간 가져오기
msp = doc.modelspace()

# 치수선 생성
dim = msp.add_linear_dim(
    base=(0, 0),  # 치수선의 기준점
    p1=(0, 0),    # 첫 번째 점
    p2=(1000, 0), # 두 번째 점 (1000 단위 거리)
    override={
        "dimpost": "직선거리 <>",  # "직선거리" + 측정값
    }
)

# 치수선 렌더링
dim.render()

# DXF 파일 저장
doc.saveas("linear_dimension_with_text.dxf")

코드 설명

  1. 기본 치수선 설정:
    • p1과 p2는 치수선의 시작점과 끝점입니다.
    • dimpost는 치수선에 표시될 텍스트를 정의합니다. 여기서 <>는 실제 측정값이 들어갈 자리입니다.
  2. "직선거리" 문구 추가:
    • "dimpost": "직선거리 <>"는 치수선 텍스트 앞에 "직선거리"라는 고정 문구를 추가합니다.
  3. 렌더링과 저장:
    • dim.render()는 치수선을 도면에 렌더링합니다.
    • doc.saveas()로 파일을 저장합니다.

결과

  • 생성된 DXF 파일을 AutoCAD로 열면, 치수선에 "직선거리 1000"이 표시됩니다.
  • 선을 스트레치하면, 거리 값(숫자)이 자동으로 업데이트되며 "직선거리"는 고정됩니다.

스타일 커스터마이징

더 세련된 치수선을 만들고 싶다면 색상, 선 스타일, 두께를 추가로 설정할 수 있습니다:

dim = msp.add_linear_dim(
    base=(0, 0),
    p1=(0, 0),
    p2=(1000, 0),
    override={
        "dimpost": "직선거리 <>",
        "dimclrd": 1,  # 빨간색 치수선
        "dimltype": "DASHED",  # 점선 스타일
        "dimlwd": 35,  # 선 두께 (0.35mm)
    }
)
dim.render()

ezdxf를 사용하여 문구를 포함한 가변적인 치수선을 생성할 수 있습니다. 치수선에 "직선거리"와 같은 고정 문구를 추가하고, 치수선의 실제 측정값(거리가 변경될 경우 자동 갱신)과 함께 표시하는 방법은 아래와 같습니다.

주요 아이디어

  1. 치수선 텍스트 템플릿(dimpost)을 사용하여 문구를 추가합니다.
  2. 텍스트에서 측정값(<>)을 고정 문구와 결합해 표시합니다.
  3. 선형 치수선을 생성하고, AutoCAD에서 사용하는 것처럼 가변적으로 치수선을 업데이트할 수 있도록 설정합니다.

예제 코드

아래 코드는 "직선거리"라는 고정 문구와 측정값이 포함된 치수선을 생성합니다.

import ezdxf

# 새로운 DXF 파일 생성
doc = ezdxf.new()

# 모델 공간 가져오기
msp = doc.modelspace()

# 치수선 생성
dim = msp.add_linear_dim(
    base=(0, 0),  # 치수선의 기준점
    p1=(0, 0),    # 첫 번째 점
    p2=(1000, 0), # 두 번째 점 (1000 단위 거리)
    override={
        "dimpost": "직선거리 <>",  # "직선거리" + 측정값
    }
)

# 치수선 렌더링
dim.render()

# DXF 파일 저장
doc.saveas("linear_dimension_with_text.dxf")

설명

  1. dimpost 속성:
    • "직선거리 <>"는 dimpost의 템플릿입니다.
    • <>는 치수선의 실제 측정값이 표시되는 자리입니다.
    • "직선거리"는 고정된 텍스트입니다.
  2. 가변 치수선:
    • ezdxf의 치수선은 렌더링(render) 후, AutoCAD와 같은 뷰어에서 선의 위치가 변경되면 측정값이 자동으로 갱신됩니다.
    • 예를 들어, p1과 p2의 위치를 변경하면 치수선의 값도 업데이트됩니다.

결과

위 코드로 생성된 DXF 파일은:

  • 치수선 텍스트: "직선거리 1000" (기본 거리 1000)
  • 선을 스트레치하면 측정값(숫자)은 자동으로 갱신됩니다.
  • "직선거리"는 고정된 문구로 유지됩니다.

추가 설정 (선 색상 및 스타일)

override 속성을 사용하여 치수선의 스타일을 더욱 세부적으로 조정할 수 있습니다:

dim = msp.add_linear_dim(
    base=(0, 0),
    p1=(0, 0),
    p2=(1000, 0),
    override={
        "dimpost": "직선거리 <>",
        "dimclrd": 1,  # 빨간색 치수선
        "dimltype": "DASHED",  # 점선 스타일
        "dimlwd": 35,  # 선 두께
    }
)
dim.render()

요약

ezdxf를 사용하면 치수선 텍스트 템플릿(dimpost)을 통해 고정 문구와 측정값을 조합할 수 있습니다. AutoCAD와 호환되며, 선의 길이가 변경되더라도 측정값이 자동으로 갱신되는 살아있는 치수선을 만들 수 있습니다. 추가적으로, dimclrd, dimltype, dimlwd를 활용하여 치수선의 색상과 스타일을 커스터마이징할 수도 있습니다.

 

마무리

ezdxf를 사용하면 AutoCAD와 같은 고급 기능을 Python으로 쉽게 구현할 수 있습니다. 특히 치수선 텍스트 템플릿(dimpost)을 사용하면 문구와 측정값을 조합하여 더욱 직관적인 도면을 만들 수 있습니다. AutoCAD를 자주 사용하거나 DXF 자동화를 고려하고 계신다면, 오늘 배운 내용을 활용해 보세요!


더 궁금한 점이 있다면 댓글로 남겨주세요. DXF 자동화의 세계는 정말 흥미롭습니다!

반응형
댓글