@@ -360,40 +360,67 @@ void QgsDwgImportDialog::createGroup( QgsLayerTreeGroup *group, const QString &n
360
360
pls.dataDefinedProperties ().setProperty ( QgsPalLayerSettings::MultiLineHeight, QgsProperty::fromExpression ( QStringLiteral ( " CASE WHEN interlin<0 THEN 1 ELSE interlin*1.5 END" ) ) );
361
361
pls.dataDefinedProperties ().setProperty ( QgsPalLayerSettings::PositionX, QgsProperty::fromExpression ( QStringLiteral ( " $x" ) ) );
362
362
pls.dataDefinedProperties ().setProperty ( QgsPalLayerSettings::PositionY, QgsProperty::fromExpression ( QStringLiteral ( " $y" ) ) );
363
- pls.dataDefinedProperties ().setProperty ( QgsPalLayerSettings::Hali, QgsProperty::fromExpression ( QStringLiteral ( " CASE"
364
- " WHEN etype=%1 THEN"
365
- " CASE"
366
- " WHEN alignv IN (1,4,7) THEN 'Left'"
367
- " WHEN alignv IN (2,5,6) THEN 'Center'"
368
- " ELSE 'Right'"
369
- " END"
370
- " ELSE"
371
- " CASE"
372
- " WHEN alignh=0 THEN 'Left'"
373
- " WHEN alignh=1 THEN 'Center'"
374
- " WHEN alignh=2 THEN 'Right'"
375
- " WHEN alignh=3 THEN 'Left'"
376
- " WHEN alignh=4 THEN 'Left'"
377
- " END "
378
- " END" ).arg ( DRW::MTEXT ) ) );
379
- pls.dataDefinedProperties ().setProperty ( QgsPalLayerSettings::Vali, QgsProperty::fromExpression ( QStringLiteral ( " CASE"
380
- " WHEN etype=%1 THEN"
381
- " CASE"
382
- " WHEN alignv < 4 THEN 'Top'"
383
- " WHEN alignv < 7 THEN 'Half'"
384
- " ELSE 'Bottom'"
385
- " END"
386
- " ELSE"
387
- " CASE"
388
- " WHEN alignv=0 THEN 'Base'"
389
- " WHEN alignv=1 THEN 'Bottom'"
390
- " WHEN alignv=2 THEN 'Half'"
391
- " WHEN alignv=3 THEN 'Top'"
392
- " END"
393
- " END" ).arg ( DRW::MTEXT ) ) );
394
- pls.dataDefinedProperties ().setProperty ( QgsPalLayerSettings::LabelRotation, QgsProperty::fromExpression ( QStringLiteral ( " 360-angle*180.0/pi()" ) ) );
395
-
396
- pls.placement = QgsPalLayerSettings::OrderedPositionsAroundPoint;
363
+
364
+ // DXF TEXT
365
+ // vertical: 0 = Base, 1 = Bottom, 2 = Middle, 3 = Top, default Base
366
+ // horizontal: 0 = Left, 1 = Center, 2 = Right, 3 = Aligned (if Base), 4 = Middle (if Base), default Left
367
+
368
+ // DXF MTEXT
369
+ // 1 = Top left; 2 = Top center; 3 = Top right
370
+ // 4 = Middle left; 5 = Middle center; 6 = Middle right
371
+ // 7 = Bottom left; 8 = Bottom center; 9 = Bottom right
372
+
373
+ // QGIS Quadrant
374
+ // 0 QuadrantAboveLeft, 1 QuadrantAbove, 2 QuadrantAboveRight,
375
+ // 3 QuadrantLeft, 4 QuadrantOver, 5 QuadrantRight,
376
+ // 6 QuadrantBelowLeft, 7 QuadrantBelow, 8 QuadrantBelowRight,
377
+
378
+ pls.dataDefinedProperties ().setProperty (
379
+ QgsPalLayerSettings::Hali,
380
+ QgsProperty::fromExpression ( QStringLiteral (
381
+ " CASE"
382
+ " WHEN etype=%1 THEN"
383
+ " CASE"
384
+ " WHEN textgen % 3=2 THEN 'Center'"
385
+ " WHEN textgen % 3=0 THEN 'Right'"
386
+ " ELSE 'Left'"
387
+ " END"
388
+ " ELSE"
389
+ " CASE"
390
+ " WHEN alignh=1 THEN 'Center'"
391
+ " WHEN alignh=2 THEN 'Right'"
392
+ " ELSE 'Left'"
393
+ " END"
394
+ " END"
395
+ ).arg ( DRW::MTEXT )
396
+ )
397
+ );
398
+
399
+ pls.dataDefinedProperties ().setProperty (
400
+ QgsPalLayerSettings::Vali,
401
+ QgsProperty::fromExpression ( QStringLiteral (
402
+ " CASE"
403
+ " WHEN etype=%1 THEN"
404
+ " CASE"
405
+ " WHEN textgen<4 THEN 'Top'"
406
+ " WHEN textgen<7 THEN 'Half'"
407
+ " ELSE 'Bottom'"
408
+ " END"
409
+ " ELSE"
410
+ " CASE"
411
+ " WHEN alignv=1 THEN 'Bottom'"
412
+ " WHEN alignv=2 THEN 'Half'"
413
+ " WHEN alignv=3 THEN 'Top'"
414
+ " ELSE 'Base'"
415
+ " END"
416
+ " END"
417
+ ).arg ( DRW::MTEXT )
418
+ )
419
+ );
420
+
421
+ pls.dataDefinedProperties ().setProperty ( QgsPalLayerSettings::LabelRotation, QgsProperty::fromExpression ( QStringLiteral ( " 360-angle" ) ) );
422
+ pls.dataDefinedProperties ().setProperty ( QgsPalLayerSettings::AlwaysShow, QgsProperty::fromExpression ( QStringLiteral ( " 1" ) ) );
423
+
397
424
l->setLabeling ( new QgsVectorLayerSimpleLabeling ( pls ) );
398
425
l->setLabelsEnabled ( true );
399
426
}
0 commit comments