@@ -548,6 +548,7 @@ void QgsDxfExport::writeEntities()
548
548
}
549
549
550
550
QgsRenderContext ctx;
551
+ ctx.setRendererScale ( mSymbologyScaleDenominator );
551
552
QgsFeatureRendererV2* renderer = vl->rendererV2 ();
552
553
renderer->startRender ( ctx, vl );
553
554
@@ -558,15 +559,8 @@ void QgsDxfExport::writeEntities()
558
559
continue ;
559
560
}
560
561
561
- QgsVectorDataProvider* dp = vl->dataProvider ();
562
- if ( !dp )
563
- {
564
- continue ;
565
- renderer->stopRender ( ctx );
566
- }
567
-
568
562
QgsFeatureRequest freq = QgsFeatureRequest ().setSubsetOfAttributes (
569
- renderer->usedAttributes (), dp-> fields () );
563
+ renderer->usedAttributes (), vl-> pendingFields () );
570
564
if ( !mExtent .isEmpty () )
571
565
{
572
566
freq.setFilterRect ( mExtent );
@@ -591,13 +585,28 @@ void QgsDxfExport::writeEntities()
591
585
continue ;
592
586
}
593
587
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
597
589
{
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 );
599
609
}
600
- addFeature ( fet, dxfLayerName ( vl->name () ), s->symbolLayer ( 0 ), s );
601
610
}
602
611
}
603
612
renderer->stopRender ( ctx );
@@ -879,7 +888,7 @@ void QgsDxfExport::addFeature( const QgsFeature& fet, const QString& layer, cons
879
888
QString lineStyleName = " CONTINUOUS" ;
880
889
if ( mSymbologyExport != NoSymbology )
881
890
{
882
- lineStyleFromSymbolLayer ( symbolLayer );
891
+ lineStyleName = lineStyleFromSymbolLayer ( symbolLayer );
883
892
}
884
893
QGis::WkbType geometryType = geom->wkbType ();
885
894
0 commit comments