Skip to content

Commit

Permalink
dxf export: support reprojection
Browse files Browse the repository at this point in the history
  • Loading branch information
jef-n committed Sep 21, 2016
1 parent 1d09d7a commit 39afdbc
Show file tree
Hide file tree
Showing 11 changed files with 199 additions and 123 deletions.
4 changes: 3 additions & 1 deletion src/app/qgisapp.cpp
Expand Up @@ -5068,13 +5068,15 @@ void QgisApp::dxfExport()
dxfExport.setSymbologyScaleDenominator( d.symbologyScale() );
dxfExport.setSymbologyExport( d.symbologyMode() );
dxfExport.setLayerTitleAsName( d.layerTitleAsName() );
dxfExport.setDestinationCrs( d.crs() );
if ( mapCanvas() )
{
dxfExport.setMapUnits( mapCanvas()->mapUnits() );
//extent
if ( d.exportMapExtent() )
{
dxfExport.setExtent( mapCanvas()->extent() );
QgsCoordinateTransform t( mapCanvas()->mapSettings().destinationCrs(), QgsCoordinateReferenceSystem( d.crs(), QgsCoordinateReferenceSystem::InternalCrsId ) );
dxfExport.setExtent( t.transformBoundingBox( mapCanvas()->extent() ) );
}
}

Expand Down
27 changes: 26 additions & 1 deletion src/app/qgsdxfexportdialog.cpp
Expand Up @@ -28,6 +28,8 @@
#include "qgslayertreemapcanvasbridge.h"
#include "qgsvisibilitypresetcollection.h"
#include "qgsmapcanvas.h"
#include "qgsgenericprojectionselector.h"
#include "qgscrscache.h"

#include <QFileDialog>
#include <QPushButton>
Expand Down Expand Up @@ -453,10 +455,21 @@ QgsDxfExportDialog::QgsDxfExportDialog( QWidget *parent, Qt::WindowFlags f )
QStringList ids = QgsProject::instance()->visibilityPresetCollection()->presets();
ids.prepend( "" );
mVisibilityPresets->addItems( ids );
mVisibilityPresets->setCurrentIndex( mVisibilityPresets->findText( QgsProject::instance()->readEntry( "dxf", "/lastVisibilityPreset", "" ) ) );
mVisibilityPresets->setCurrentIndex( mVisibilityPresets->findText( QgsProject::instance()->readEntry( "dxf", "/lastVisibliltyPreset", "" ) ) );

buttonBox->button( QDialogButtonBox::Ok )->setEnabled( false );
restoreGeometry( s.value( "/Windows/DxfExport/geometry" ).toByteArray() );

mCRS = QgsProject::instance()->readEntry( "dxf", "/lastDxfCrs",
s.value( "qgis/lastDxfCrs", QString::number( QgisApp::instance()->mapCanvas()->mapSettings().destinationCrs().srsid() ) ).toString()
).toLong();

QgsCoordinateReferenceSystem crs = QgsCRSCache::instance()->crsBySrsId( mCRS );
mCrsSelector->setCrs( crs );
mCrsSelector->setLayerCrs( crs );
mCrsSelector->dialog()->setMessage( tr( "Select the coordinate reference system for the dxf file. "
"The data points will be transformed from the layer coordinate reference system." ) );

mEncoding->addItems( QgsDxfExport::encodings() );
mEncoding->setCurrentIndex( mEncoding->findText( QgsProject::instance()->readEntry( "dxf", "/lastDxfEncoding", s.value( "qgis/lastDxfEncoding", "CP1252" ).toString() ) ) );
}
Expand Down Expand Up @@ -600,17 +613,29 @@ void QgsDxfExportDialog::saveSettings()
s.setValue( "qgis/lastDxfMapRectangle", mMapExtentCheckBox->isChecked() );
s.setValue( "qgis/lastDxfLayerTitleAsName", mLayerTitleAsName->isChecked() );
s.setValue( "qgis/lastDxfEncoding", mEncoding->currentText() );
s.setValue( "qgis/lastDxfCrs", QString::number( mCRS ) );

QgsProject::instance()->writeEntry( "dxf", "/lastDxfSymbologyMode", mSymbologyModeComboBox->currentIndex() );
QgsProject::instance()->writeEntry( "dxf", "/lastSymbologyExportScale", mScaleWidget->scale() );
QgsProject::instance()->writeEntry( "dxf", "/lastDxfLayerTitleAsName", mLayerTitleAsName->isChecked() );
QgsProject::instance()->writeEntry( "dxf", "/lastDxfMapRectangle", mMapExtentCheckBox->isChecked() );
QgsProject::instance()->writeEntry( "dxf", "/lastDxfEncoding", mEncoding->currentText() );
QgsProject::instance()->writeEntry( "dxf", "/lastVisibilityPreset", mVisibilityPresets->currentText() );
QgsProject::instance()->writeEntry( "dxf", "/lastDxfCrs", QString::number( mCRS ) );
}


QString QgsDxfExportDialog::encoding() const
{
return mEncoding->currentText();
}

void QgsDxfExportDialog::on_mCrsSelector_crsChanged( const QgsCoordinateReferenceSystem &crs )
{
mCRS = crs.srsid();
}

long QgsDxfExportDialog::crs() const
{
return mCRS;
}
4 changes: 4 additions & 0 deletions src/app/qgsdxfexportdialog.h
Expand Up @@ -88,6 +88,7 @@ class QgsDxfExportDialog : public QDialog, private Ui::QgsDxfExportDialogBase
bool exportMapExtent() const;
bool layerTitleAsName() const;
QString encoding() const;
long crs() const;

public slots:
/** Change the selection of layers in the list */
Expand All @@ -99,11 +100,14 @@ class QgsDxfExportDialog : public QDialog, private Ui::QgsDxfExportDialogBase
void setOkEnabled();
void saveSettings();
void on_mVisibilityPresets_currentIndexChanged( int index );
void on_mCrsSelector_crsChanged( const QgsCoordinateReferenceSystem &crs );

private:
void cleanGroup( QgsLayerTreeNode *node );
QgsLayerTreeGroup *mLayerTreeGroup;
FieldSelectorDelegate *mFieldSelectorDelegate;

long mCRS;
};

#endif // QGSDXFEXPORTDIALOG_H

0 comments on commit 39afdbc

Please sign in to comment.