Erstellen Sie eine 2D-CAD-Datei ".dxf" mit Python [ezdxf]

.dxf??

Im CAD werden verschiedene Dateiformate verwendet (Software zum Zeichnen von Konstruktionszeichnungen von Maschinen usw.). ".Dxf" ist einer von ihnen.

Es gibt andere Dateiformate, aber die häufig verwendete ".dwg" kann nur von einer bestimmten Software wie Auto CAD gelesen werden.

Da die Spezifikationen von ".dxf" für die Öffentlichkeit zugänglich sind, kann sie nicht nur von einer bestimmten Software, sondern auch von verschiedenen Softwareprogrammen gelesen und geschrieben werden. (Sie können den Inhalt lesen, indem Sie ihn mit einem Texteditor öffnen.)

Daher handelt es sich um ein Dateiformat wie den Industriestandard, der für den Austausch von Zeichnungen zwischen verschiedenen Unternehmen verwendet wird (möglicherweise ...).

ezdxf?? Eine Bibliothek, die DXF-Dateien mit Python erstellt und liest. https://ezdxf.readthedocs.io/en/stable/

Wenn Sie beispielsweise AutoCAD verwenden (was ziemlich teuer ist), können Sie mit VBA ein Programm für sich selbst bewegende Bilder erstellen. https://www.youtube.com/watch?v=cL7vAIFjsmQ Wenn Sie über AutoCAD verfügen, ist dies häufig bequemer.

jedoch Wenn Sie Python verwenden möchten, um ein CAD-Autogramm zu erstellen, oder wenn Sie kein AutoCAD haben, möchten Sie ein CAD-Auto-Image erstellen ... (Vielleicht). In solchen Fällen kann "Ezdxf" verwendet werden.

Die Installation ist auch mit Anaconda einfach! conda install -c conda-forge ezdxf

Versuchen Sie, eine gerade Linie zu zeichnen

Verwenden Sie ezdxf, um eine gerade Linie zu zeichnen und zu speichern (wie im Tutorial beschrieben). Sie können eine DXF-Datei mit einer Anweisung von 5 Zeilen erstellen.

#python 3.85
import ezdxf #'0.13.1'

#DXF-Versionsspezifikation
doc = ezdxf.new("R2010")

#Erstellen Sie eine neue Entität im Modellbereich
msp = doc.modelspace() 

#Erstellen Sie eine gerade Linie
msp.add_line(start=[0, 0], end=[100, 0])

#sparen
doc.saveas('line.dxf')

Wenn ich die erstellte .dxf-Datei öffne, sehe ich eine gerade Linie wie diese (einsam). line.png

Apropos Zuerst habe ich jwcad heruntergeladen, einen kostenlosen CAD mit einer hohen Penetrationsrate. Ich wusste überhaupt nicht, wie ich es benutzen sollte (ich kann die Figur nicht bewegen!), Also Diese CAD-Datei wurde in Libre Office Draw geöffnet.

Wenn Sie sich daran gewöhnt haben, scheint jwcad ein wunderbarer CAD zu sein, aber es scheint, dass sich die Operationsmethode von anderen CAD unterscheidet. Es scheint, dass es Hamar-Punkte gibt, wenn Leute, die anderes CAD verwendet haben, es so verwenden, wie es ist. (Da das Lernen von JWCAD mühsam ist, schneide ich Ecken)

Es scheint also andere freie CAD zu geben Für diejenigen, die es normalerweise für bezahlte CAD-Arbeit verwenden, um zu Hause zu spielen, Möglicherweise möchten Sie einen anderen CAD ausprobieren.

Wenn es sich um eine Zeile handelt, ist dies umständlich. Daher werde ich die Anzahl der Zeilen etwas erhöhen und ein Quadrat erstellen.

import ezdxf #'0.13.1'
doc = ezdxf.new("R2010")  #DXF-Versionsspezifikation

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')  #sparen

Versuchen Sie, die erstellte Datei zu öffnen.

shikaku.png

Ich konnte ein Quadrat richtig zeichnen.

Ebeneneinstellungen

In 2d CAD wie .dxf muss die Ebeneneinstellung berücksichtigt werden. Eine Ebene ist eine Sammlung desselben Linientyps, und der Linientyp (Punkte usw.) und die Farbe sind für jede Ebene unterschiedlich.

Definieren Sie die Ebenen vor und geben Sie die Ebenen an, wenn Sie eine gerade Linie oder einen Kreis zeichnen (Argument: dxfattribs).

import ezdxf #'0.13.1'
#Geben Sie die Version mit dxf an
doc = ezdxf.new("R2010", setup=True)

#Ebenendefinition
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() 

#Fügen Sie eine gerade Linie hinzu
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'})

#Center[50, 50],Hinzufügen eines Kreises mit einem Radius von 50
msp.add_circle(center=[50, 50], radius=50, dxfattribs={'layer': 'MyLine2'})

#Bogen hinzufügen
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]Fügen Sie einen Punkt an der Position von hinzu
msp.add_point([50, 50], dxfattribs={'layer': 'MyLine1'})

#Bild speichern
doc.saveas('sample.dxf')

Als ich die erstellte Datei öffnete, wurde sie wie folgt.

sample.png

Anfangs war der Punkt bei [50, 50] zu klein und ich habe ihn als Staub auf dem LCD-Monitor missverstanden.

Recommended Posts

Erstellen Sie eine 2D-CAD-Datei ".dxf" mit Python [ezdxf]
Erstellen Sie mit Python eine Datei im Photoshop-Format (.psd)
Erstellen Sie ein 3D-GIF mit Python3
Erstellen Sie ein Verzeichnis mit Python
[Python] So erstellen Sie mit Matplotlib ein zweidimensionales Histogramm
Löse ABC166 A ~ D mit Python
Erstellen Sie eine virtuelle Umgebung mit Python!
Erstellen Sie eine Binärdatei in Python
Erstellen Sie mit Django einen Datei-Uploader
[Python] Erstellen Sie mit tkinter einen Bildschirm zur Datei- und Ordnerpfadspezifikation
Erstellen Sie mit Class einen Python-Funktionsdekorator
Erstellen einer einfachen Power-Datei mit Python
Erstellen Sie mit Python + PIL ein Dummy-Image.
[Python] Erstellen Sie mit Anaconda eine virtuelle Umgebung
Erstellen wir mit Python eine kostenlose Gruppe
Erstellen Sie schnell eine Excel-Datei mit Python #python
Erstellen Sie eine große Textdatei mit Shellscript
VM mit YAML-Datei (KVM) erstellen
Erstellen Sie eine Excel-Datei mit Python + Ähnlichkeitsmatrix
Löse AtCoder ABC168 mit Python (A ~ D)
Erstellen Sie mit Python 3.4 einen Worthäufigkeitszähler
Erstellen Sie eine Deb-Datei aus einem Python-Paket
[GPS] Erstellen Sie eine kml-Datei mit Python
Ich habe mit Python eine Einstellungsdatei erstellt
Erstellen Sie mit tkinter [Python] einen Rahmen mit transparentem Hintergrund.
Lesen einer CSV-Datei mit Python 2/3
Erstellen Sie eine GIF-Datei mit Pillow in Python
Erstellen Sie eine mit tkinter erstellte ausführbare GUI-Datei
Erstellen Sie mit Minette für Python einen LINE BOT
So erstellen Sie eine JSON-Datei in Python
Erstellen Sie eine PDF-Datei mit einer zufälligen Seitengröße
Erstellen Sie eine virtuelle Umgebung mit conda in Python
Erstellen Sie eine Seite, die unbegrenzt mit Python geladen wird
[Hinweis] Erstellen Sie mit Python eine einzeilige Zeitzonenklasse
Sie können auch mit Python problemlos eine GUI erstellen
Erstellen Sie mit Sublime Text3 eine Python3-Build-Umgebung
Löse A ~ D des Yuki-Codierers 247 mit Python
Schritte zum Erstellen eines Twitter-Bots mit Python
Erstellen Sie mit Python einen Entscheidungsbaum von 0 (1. Übersicht)
Erstellen Sie eine neue Seite im Zusammenfluss mit Python
Erstellen Sie mit Python + Qt (PySide) ein farbspezifisches Widget.
Erstellen Sie ein 3D-Streudiagramm mit SciPy + matplotlib (Python)
Erstellen Sie eine MIDI-Datei in Python mit pretty_midi
Erstellen Sie einfach eine Python-Konsolenanwendung mit Click
Lesen Sie mit Python Zeile für Zeile aus der Datei
Ich möchte mit Python in eine Datei schreiben
Dateidialog mit Python-GUI öffnen (tkinter.filedialog)
Machen Sie einen Zylinder mit open3d + STL-Dateiausgabe
Erstellen Sie ein Python-Modul
Erstellen Sie eine Python-Umgebung
Warum nicht einfach mit Python eine stilvolle Tabelle erstellen?
Erstellen Sie eine Python-Entwicklungsumgebung mit Vagrant + Ansible + Fabric
Erstellen Sie in Docker eine Ebene für AWS Lambda Python
[Python] Erstellen Sie mit np.arange ein Datumsarray mit beliebigen Inkrementen
Python-Skript, das eine JSON-Datei aus einer CSV-Datei erstellt
Führen Sie eine Python-Datei mit relativem Import in PyCharm aus
Erstellen Sie mit Quarry einen gefälschten Minecraft-Server in Python