Skip to content

Commit 7e0b59f

Browse files
committed
Fix bugs in dxf symbology export
1 parent 6dff9e4 commit 7e0b59f

File tree

1 file changed

+23
-14
lines changed

1 file changed

+23
-14
lines changed

src/core/dxf/qgsdxfexport.cpp

Lines changed: 23 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -548,6 +548,7 @@ void QgsDxfExport::writeEntities()
548548
}
549549

550550
QgsRenderContext ctx;
551+
ctx.setRendererScale( mSymbologyScaleDenominator );
551552
QgsFeatureRendererV2* renderer = vl->rendererV2();
552553
renderer->startRender( ctx, vl );
553554

@@ -558,15 +559,8 @@ void QgsDxfExport::writeEntities()
558559
continue;
559560
}
560561

561-
QgsVectorDataProvider* dp = vl->dataProvider();
562-
if ( !dp )
563-
{
564-
continue;
565-
renderer->stopRender( ctx );
566-
}
567-
568562
QgsFeatureRequest freq = QgsFeatureRequest().setSubsetOfAttributes(
569-
renderer->usedAttributes(), dp->fields() );
563+
renderer->usedAttributes(), vl->pendingFields() );
570564
if ( !mExtent.isEmpty() )
571565
{
572566
freq.setFilterRect( mExtent );
@@ -591,13 +585,28 @@ void QgsDxfExport::writeEntities()
591585
continue;
592586
}
593587

594-
//take first symbollayer from first symbol
595-
QgsSymbolV2* s = symbolList.first();
596-
if ( !s || s->symbolLayerCount() < 1 )
588+
if ( mSymbologyExport == QgsDxfExport::SymbolLayerSymbology ) //symbol layer symbology, but layer does not use symbol levels
597589
{
598-
continue;
590+
QgsSymbolV2List::iterator symbolIt = symbolList.begin();
591+
for ( ; symbolIt != symbolList.end(); ++symbolIt )
592+
{
593+
int nSymbolLayers = ( *symbolIt )->symbolLayerCount();
594+
for ( int i = 0; i < nSymbolLayers; ++i )
595+
{
596+
addFeature( fet, dxfLayerName( vl->name() ), ( *symbolIt )->symbolLayer( i ), *symbolIt );
597+
}
598+
}
599+
}
600+
else
601+
{
602+
//take first symbollayer from first symbol
603+
QgsSymbolV2* s = symbolList.first();
604+
if ( !s || s->symbolLayerCount() < 1 )
605+
{
606+
continue;
607+
}
608+
addFeature( fet, dxfLayerName( vl->name() ), s->symbolLayer( 0 ), s );
599609
}
600-
addFeature( fet, dxfLayerName( vl->name() ), s->symbolLayer( 0 ), s );
601610
}
602611
}
603612
renderer->stopRender( ctx );
@@ -879,7 +888,7 @@ void QgsDxfExport::addFeature( const QgsFeature& fet, const QString& layer, cons
879888
QString lineStyleName = "CONTINUOUS";
880889
if ( mSymbologyExport != NoSymbology )
881890
{
882-
lineStyleFromSymbolLayer( symbolLayer );
891+
lineStyleName = lineStyleFromSymbolLayer( symbolLayer );
883892
}
884893
QGis::WkbType geometryType = geom->wkbType();
885894

0 commit comments

Comments
 (0)