Créer un fichier CAO 2D ".dxf" avec python [ezdxf]

.dxf??

Différents formats de fichiers sont utilisés en CAO (logiciel pour dessiner des dessins de conception de machines, etc.). ".Dxf" en fait partie.

Il existe d'autres formats de fichiers, mais le ".dwg" couramment utilisé ne peut être lu que par un logiciel spécifique tel que Auto CAD.

D'autre part, comme les spécifications de ".dxf" sont ouvertes au public, il peut être lu et écrit non seulement par un logiciel spécifique mais également par divers logiciels. (Vous pouvez lire le contenu en l'ouvrant avec un éditeur de texte.)

Par conséquent, il s'agit d'un format de fichier comme le standard de l'industrie utilisé pour l'échange de dessins entre différentes entreprises (peut-être ...).

ezdxf?? Une bibliothèque qui crée et lit des fichiers dxf avec python. https://ezdxf.readthedocs.io/en/stable/

Par exemple, si vous utilisez AutoCAD (qui coûte assez cher), vous pouvez créer un programme d'images auto-mobiles à l'aide de VBA. https://www.youtube.com/watch?v=cL7vAIFjsmQ Si vous disposez d'AutoCAD, c'est souvent plus pratique.

pourtant Si vous souhaitez utiliser python pour créer un autographe CAO, ou si vous n'avez pas AutoCAD, vous souhaitez créer une image automatique CAO ... "Ezdxf" peut être utilisé dans de tels cas.

L'installation est également facile avec Anaconda! conda install -c conda-forge ezdxf

Essayez de tracer une ligne droite

Utilisez ezdxf pour dessiner une ligne droite et enregistrez-la (comme dans le tutoriel). Vous pouvez créer un fichier .dxf avec une instruction de 5 lignes.

#python 3.85
import ezdxf #'0.13.1'

#spécification de la version dxf
doc = ezdxf.new("R2010")

#Créer une nouvelle entité dans l'espace objet
msp = doc.modelspace() 

#Créer une ligne droite
msp.add_line(start=[0, 0], end=[100, 0])

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

Lorsque j'ouvre le fichier .dxf créé, je vois une ligne droite comme celle-ci (solitaire). line.png

Au fait Au début, j'ai téléchargé jwcad, un CAD gratuit avec un taux de pénétration élevé. Je ne savais pas du tout comment m'en servir (je ne peux pas déplacer la figurine!), Donc Ce fichier CAO a été ouvert dans Libre Office Draw.

Si vous vous y habituez, jwcad semble être une merveilleuse CAO, mais il semble que la méthode de fonctionnement soit différente des autres CAO, Il semble qu'il y ait des points Hamar lorsque les personnes qui ont utilisé d'autres CAO l'utilisent tel quel. (Puisque étudier jwcad est gênant, je coupe les coins)

Il semble y avoir d'autres CAO gratuits, donc Pour ceux qui l'utilisent habituellement pour des travaux CAO rémunérés pour jouer à la maison Vous voudrez peut-être essayer un autre CAD.

Si c'est une ligne, ce sera gênant, alors je vais augmenter un peu plus le nombre de lignes et faire un carré.

import ezdxf #'0.13.1'
doc = ezdxf.new("R2010")  #spécification de la version dxf

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

Essayez d'ouvrir le fichier créé.

shikaku.png

J'ai pu dessiner correctement un carré.

Paramètres de calque

Dans la CAO 2D comme .dxf, il est nécessaire de prendre en compte le paramètre de calque. Un calque est une collection du même type de ligne, et le type de ligne (points, etc.) et la couleur sont différents pour chaque calque.

Prédéfinissez les calques et spécifiez les calques lors du dessin d'une ligne droite ou d'un cercle (argument: dxfattribs).

import ezdxf #'0.13.1'
#Spécifiez la version avec dxf
doc = ezdxf.new("R2010", setup=True)

#Définition de la couche
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() 

#Ajouter une ligne droite
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'})

#centre[50, 50],Ajout d'un cercle d'un rayon de 50
msp.add_circle(center=[50, 50], radius=50, dxfattribs={'layer': 'MyLine2'})

#Ajouter un arc
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]Ajouter un point à la position de
msp.add_point([50, 50], dxfattribs={'layer': 'MyLine1'})

#Enregistrer l'image
doc.saveas('sample.dxf')

Lorsque j'ai ouvert le fichier créé, il est devenu comme suit.

sample.png

Au début, le point à [50, 50] était trop petit et je l'ai mal compris comme de la poussière sur l'écran LCD.

Recommended Posts

Créer un fichier CAO 2D ".dxf" avec python [ezdxf]
Créer un fichier au format Photoshop (.psd) avec python
Créer un gif 3D avec python3
Créer un répertoire avec python
[Python] Comment créer un histogramme bidimensionnel avec Matplotlib
Résoudre ABC166 A ~ D avec Python
Créez un environnement virtuel avec Python!
Créer un fichier binaire en Python
Créer un téléchargeur de fichiers avec Django
[Python] Créez un écran de spécification de chemin de fichier et de dossier avec tkinter
Créer un décorateur de fonction Python avec Class
Créer un fichier power simple avec Python
Créez une image factice avec Python + PIL.
[Python] Créez un environnement virtuel avec Anaconda
Créons un groupe gratuit avec Python
Créez rapidement un fichier Excel avec Python #python
Créer un gros fichier texte avec shellscript
Créer une machine virtuelle avec un fichier YAML (KVM)
Créer un fichier Excel avec Python + matrice de similarité
Résoudre AtCoder ABC168 avec python (A ~ D)
Créer un compteur de fréquence de mots avec Python 3.4
Créer un fichier deb à partir d'un package python
[GPS] Créer un fichier kml avec Python
J'ai créé un fichier de configuration avec Python
Créer un cadre avec un arrière-plan transparent avec tkinter [Python]
Comment lire un fichier CSV avec Python 2/3
Créer un fichier GIF en utilisant Pillow en Python
Créer un fichier exécutable GUI créé avec tkinter
Créer un LINE BOT avec Minette pour Python
Comment créer un fichier JSON en Python
Créer un fichier PDF avec une taille de page aléatoire
Créer un environnement virtuel avec conda avec Python
Créer une page qui se charge indéfiniment avec python
[Note] Créez une classe de fuseau horaire sur une ligne avec python
Vous pouvez facilement créer une interface graphique même avec Python
Créer un environnement de construction python3 avec Sublime Text3
Résolvez A ~ D du codeur yuki 247 avec python
Étapes pour créer un bot Twitter avec Python
Créer un arbre de décision à partir de 0 avec Python (1. Présentation)
Créer une nouvelle page en confluence avec Python
Créer un widget avec une couleur spécifiée avec Python + Qt (PySide)
Créer un diagramme de dispersion 3D avec SciPy + matplotlib (Python)
Créez un fichier MIDI en Python en utilisant pretty_midi
Facile à créer une application console Python avec Click
Lire ligne par ligne à partir d'un fichier avec Python
Je veux écrire dans un fichier avec Python
Ouvrir la boîte de dialogue de fichier avec l'interface graphique Python (tkinter.filedialog)
Créer un cylindre avec une sortie de fichier open3d + STL
Créer un module Python
Créer un environnement Python
Pourquoi ne pas créer facilement une table élégante avec Python?
Créez un environnement de développement python avec vagrant + ansible + fabric
Créer une couche pour AWS Lambda Python dans Docker
[python] Créez un tableau de dates avec des incréments arbitraires avec np.arange
Script Python qui crée un fichier JSON à partir d'un fichier CSV
Exécuter un fichier Python avec une importation relative dans PyCharm
Créez un faux serveur Minecraft en Python avec Quarry