• 회원가입
  • |
  • 로그인
  • |
  • 장바구니
  • News
    뉴스 신제품 신간 Culture & Life
  • 강좌/특집
    특집 강좌 자료창고 갤러리
  • 리뷰
    리뷰
  • 매거진
    목차 및 부록보기 잡지 세션별 성격 뉴스레터 정기구독안내 정기구독하기 단행본 및 기타 구입
  • 행사/이벤트
    행사 전체보기 캐드앤그래픽스 행사
  • CNG TV
    방송리스트 방송 다시보기 공지사항
  • 커뮤니티
    업체홍보 공지사항 설문조사 자유게시판 Q&A게시판 구인구직/학원소식
  • 디렉토리
    디렉토리 전체보기 소프트웨어 공급업체 하드웨어 공급업체 기계관련 서비스 건축관련 업체 및 서비스 교육기관/학원 관련DB 추천 사이트
  • 회사소개
    회사소개 회사연혁 출판사업부 광고안내 제휴 및 협력제안 회사조직 및 연락처 오시는길
  • 고객지원센터
    고객지원 Q&A 이메일 문의 기사제보 및 기고 개인정보 취급방침 기타 결제 업체등록결제
  • 쇼핑몰
[무료다운로드]파이썬 기반 오토캐드 설계 자동화 도구 개발
2023-10-05 2,688 18

BIM 칼럼니스트 강태욱의 이슈 & 토크 

 

이번 호에서는 파이썬(Python) 기반의 오토캐드 설계 모델링 자동화 및 코딩 방법을 예제를 통해 소개한다. 

■ 강태욱
건설환경 공학을 전공하였고 소프트웨어 공학을 융합하여 세상이 돌아가는 원리를 분석하거나 성찰하기를 좋아한다. 건설과 소프트웨어 공학의 조화로운 융합을 추구하고 있다. 팟캐스트 방송을 통해 이와 관련된 작은 메시지를 만들어 나가고 있다. 현재 한국건설기술연구원에서 BIM/GIS/FM/BEMS/역설계 등과 관련해 연구를 하고 있으며, 연구위원으로 근무하고 있다.
이메일 | laputa99999@gmail.com
페이스북 | www.facebook.com/laputa999
홈페이지 | https://dxbim.blogspot.com
팟캐스트 | http://www.facebook.com/groups/digestpodcast

 


그림 1. CAD 디자인 자동화 예시

 

애드인 기반 설계 자동화 도구 개발

오토캐드는 매우 대중적인 모델링 프로그램이다. 필자도 설계를 처음 접할 때 오토캐드를 사용했다. 오토캐드는 장점이 많은 디자인 도구이지만 단점도 많다. 그 중 하나가 단순 반복적인 도면 작성 ‘노가다’인데, 이를 줄여주는 방법이 애드인 개발을 통한 디자인 자동화이다. 이를 이용하면 몇 번의 파라미터 입력만으로 단순 반복 설계를 자동화할 수 있다. 
애드인 개발 방법은 다음과 같이 다양하다.

  • 리스프(LISP) 기반 개발 : 도면 작도 유틸리티 개발이 가능
  • 닷넷(.NET) COM 기반 개발 : 비주얼 베이직(VB), C# 등을 이용해 코딩. 사용자 이벤트를 받아 처리하는 등의 개발 가능
  • ARX 기반 개발 : C++를 이용해 코딩. 시빌3D(Civil3D)와 같은 복잡한 프로그램 개발이 가능함

이번 호에서는 앞에서 소개한 방법 외에 개발이 편리한 pyautocad 라이브러리 기반의 애드인 개발 방법을 정리한다. 이 라이브러리는 실행된 오토캐드와 연결되어, CAD 기능 API를 호출할 수 있다. 참고로, 이외에도 pywin32 라이브러리를 통해 .NET COM이 지원되는 오토캐드를 포함한 모든 윈도우 프로그램을 파이썬으로 조작할 수 있다. 

 

개발 환경

오토캐드 파이썬 기반 개발을 위해 다음과 같이 프로그램을 설치한다.

 

1. 파이썬을 설치한다. 

 

2. 명령창을 실행한 후 다음과 같이 pyautocad 라이브러리를 설치한다.

pip install --upgrade pyautocad

 


그림 2

 

옵션으로 비주얼 스튜디오 코드(VS Code)를 설치하면 개발이 편리하다.

 

코딩 따라하기

현재 실행된 오토캐드 도면 창에 간단한 텍스트 심벌을 가진 선과 원을 100개 생성해 본다. 파이썬 파일을 만들고, 다음을 코딩해 실행해 본다. 

from pyautocad import Autocad, APoint
import numpy as np
acad = Autocad(create_if_not_exists=True)
acad.prompt("Hello pyautocad ")
print(acad.doc.Name)
no = 0
for i in range(10):
    for j in range(10):
        p1 = APoint(i * 35, j * 25)
        p2 = APoint(i * 35, j * 25 + 10)
        text = acad.model.AddText(u'Symbol-%s' % no, p1 - 1.0, 2.5)
        no += 1
        acad.model.AddLine(p1, p2)
        radius = np.random.randint(5, 10)
        acad.model.AddCircle(p1, radius)
 
for obj in acad.iter_objects():
    print(obj.ObjectName)

 

실행 결과는 <그림 3>과 같다. 자동으로 도형이 생성된다. 

 


그림 3

 

 

■ 기사 상세 내용은 PDF로 제공됩니다.

이 기사는 한시적으로 무료로 제공됩니다.(12/15까지)

강태욱 laputa99999@gmail.com


출처 : 캐드앤그래픽스 2023년 10월호

포인트 : 무료

© 캐드앤그래픽스 무단전재 및 재배포금지, 기사 게재 희망시 당사 문의
  • kakao

댓글 0

로그인 후 댓글을 달수있습니다
등록된 코멘트가 없습니다.