I want to export a DXF file from a QGIS layer.
Sample code:
dialog = QtGui.QFileDialog()
dialog.setFileMode(QtGui.QFileDialog.Directory)
dialog.setOption(QtGui.QFileDialog.ShowDirsOnly)
DirectoryName = dialog.getExistingDirectory()
layers = self.iface.mapCanvas().layers()
for layer in layers:
filename = DirectoryName + "/" + layer.name() + ".dxf"
QgsVectorFileWriter.writeAsVectorFormat(layer, filename, "utf-8", layer.crs(), "DXF", 1)
Result DXF file is empty.
How can I export as DXF file using either QgsVectorFileWriter() or QgsDxfExport()?
Answer
You can take example on the code in qgisapp.cpp and transform it to python as follows (just replace the elements within underscores):
dxfExport = QgsDxfExport()
settings = iface.mapCanvas().mapSettings()
# settings.setLayerStyleOverrides( QgsProject.instance().mapThemeCollection().mapThemeStyleOverrides( _yourmaptheme_ ) )
dxfExport.setMapSettings( settings )
dxfExport.addLayers( _layers_ )
dxfExport.setSymbologyScale( _scale_ )
dxfExport.setSymbologyExport( _mode_ )
dxfExport.setLayerTitleAsName( _title_ )
dxfExport.setDestinationCrs( _crs_ )
dxfExport.setForce2d( _force2d_ )
# dxfExport.setFlags( _flags_ )
dxfExport.setExtent( _extent_ )
dxfFile = QFile( fileName )
dxfExport.writeToFile( dxfFile, _encoding_ )
addLayer was causing a crash in QGIS. It has been fixed in QGIS 2.18.17 and QGIS 3.0. _layers_ is now a list of QgsDxfExport.DxfLayer( layer )
Another interesting approach (although not in Python) is that you can run QGIS dxf export from the command line: qgis.exe --dxf-export file.dxf myproject.qgs
See the command line options in the QGIS documentation for a complete description.
No comments:
Post a Comment