pythn에서 2d CAD 파일 ".dxf"작성

13520 단어 DXFezdxfPythonCAD

.dxf??


CAD(기계 등 설계도를 그리는 소프트웨어)에는 다양한 파일 형식이 사용됩니다.'.dxf'가 그 중의 하나다.
기타 파일 형식도 있는데 자주 사용하는.dwg이면 Auto CAD 등 특정 소프트웨어로만 읽을 수 있습니다.
한편,'.dxf'의 규격이 공개되었기 때문에 특정한 소프트웨어를 사용할 수 있을 뿐만 아니라 다양한 소프트웨어를 사용하여 읽기와 쓰기를 할 수 있다.(텍스트 편집기에서 읽을 수 있는 내용을 엽니다.)
이 때문에 다양한 업체 간에 도면을 교환할 때 사용해 업계 표준과 같은 파일 형식(대략...)이 됐다.

ezdxf??


이것은pythn에서 dxf 파일을 만들거나 읽을 수 있는 프로그램 라이브러리입니다.
https://ezdxf.readthedocs.io/en/stable/
예를 들어 AutoCAD를 사용하면 VBA를 사용하여 자동으로 그림을 그리는 프로그램을 만들 수 있습니다.
https://www.youtube.com/watch?v=cL7vAIFjsmQ
AutoCAD가 있으면 이쪽도 편한 경우가 많죠.
그러나
python을 사용하여 자동으로 그림을 그리고 싶다면 AutoCAD가 없어도 자동으로 그림을 그리고 싶다는 수요도 있겠지...(대략).
이럴 때 사용할 수 있는 것은'ezdxf'다.
Anaconda에 설치해도 간단합니다!
conda install -c conda-forge ezdxf

일직선을 긋다


ezdxf를 사용하여 직선을 그려서 저장해 보세요.
실질적으로 오행 명령.dxf 파일을 만들 수 있습니다.
#python 3.85
import ezdxf #'0.13.1'

#dxfのversion指定
doc = ezdxf.new("R2010")

#モデル空間に新しいエンティティを作成
msp = doc.modelspace() 

#直線を作成
msp.add_line(start=[0, 0], end=[100, 0])

#保存
doc.saveas('line.dxf')
해냈어.dxf 파일을 열면 이런 직선이 나타납니다.

주제 밖의 말을 하다.
최초에 보급률이 높은 무료 CAD의 jwcad를 다운로드해 보았다
사용법을 전혀 모르기 때문이다(도형 동작은 없지만 간단하다)
이 CAD 파일은 Libre Office Draw로 열립니다.
익숙해지면 jwcad는 좋은 CAD인 것 같지만, 조작 방법은 다른 CAD와 다른 것 같아요.
다른 CAD를 사용하는 사람이 그대로 사용하면 hamaru point가 있을 것 같습니다.
(jwcad의 학습이 매우 번거롭기 때문에 노동력과 재료를 줄인다)
다른 공짜 CAD도 있는 것 같아요.
평소에 유료 CAD 일을 하시는 분들이 집에서 놀면...
다른 CAD를 시도해 볼 수도 있습니다.
한 줄의 선이라면 그것이니 선의 수를 조금 더 늘려 사각형으로 만들어라.
import ezdxf #'0.13.1'
doc = ezdxf.new("R2010")  #dxfのversion指定

msp = doc.modelspace() #add new entities to the modelspace
msp.add_line([0, 0], [100, 0])
msp.add_line([100, 0], [100, 100])
msp.add_line([100, 100], [0, 100])
msp.add_line([0, 100], [0, 0])
doc.saveas('tetra.dxf')  #保存
생성된 파일을 엽니다.

사각형을 잘 그렸다.

이미지 레이어 설정


.dxf 등 2d CAD는 이미지 레이어(레이어)의 설정을 고려해야 합니다.
화층이란 같은 일선종의 집합으로 화층마다 선종(점 등)과 색깔 등이 다르다.
선이나 원을 그릴 때 그림층을 지정합니다. (파라미터: dxfattribs)
import ezdxf #'0.13.1'
#dxfでversion指定
doc = ezdxf.new("R2010", setup=True)

#画層の定義
doc.layers.new(name="MyLine1", dxfattribs={'linetype': 'DASHED', 'color': 7})
doc.layers.new(name="MyLine2", dxfattribs={'linetype': 'CONTINUOUS', 'color': 1})
doc.layers.new(name="MyLine3", dxfattribs={'linetype': 'CENTER', 'color': 2})

#add new entities to the modelspace
msp = doc.modelspace() 

#直線の追加
msp.add_line([0, 0], [100, 0], dxfattribs={'layer': 'MyLine1'})
msp.add_line([100, 0], [100, 100], dxfattribs={'layer': 'MyLine1'})
msp.add_line([100, 100], [0, 100], dxfattribs={'layer': 'MyLine1'})
msp.add_line([0, 100], [0, 0], dxfattribs={'layer': 'MyLine1'})

#中心[50, 50],半径50の円の追加
msp.add_circle(center=[50, 50], radius=50, dxfattribs={'layer': 'MyLine2'})

#円弧の追加
msp.add_arc(center=[50, 50], radius=40, 
            start_angle=0, end_angle=90, dxfattribs={'layer': 'MyLine2'})
msp.add_arc(center=[50, 50], radius=40,
            start_angle=90, end_angle=360, dxfattribs={'layer': 'MyLine3'})

#[50, 50]の位置に点を追加
msp.add_point([50, 50], dxfattribs={'layer': 'MyLine1'})

#画像の保存
doc.saveas('sample.dxf')

제작된 파일을 열면 다음과 같습니다.

처음에 [505050]의 위치점이 너무 작아서 액정 모니터의 쓰레기로 착각했다.

좋은 웹페이지 즐겨찾기