@@ -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