Skip to content

Commit 5a8e86b

Browse files
committed
dxf import:
* fix text positions and orientation when importing DXF (fixes #16000; cherry-picked from 567f920) * disable DWG/DXF import with GDAL <2
1 parent e1af071 commit 5a8e86b

3 files changed

Lines changed: 12 additions & 8 deletions

File tree

‎src/app/dwg/libdxfrw/drw_entities.cpp‎

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1224,8 +1224,7 @@ void DRW_Insert::parseCode( int code, dxfReader *reader )
12241224
zscale = reader->getDouble();
12251225
break;
12261226
case 50:
1227-
angle = reader->getDouble();
1228-
angle = angle / ARAD; //convert to radian
1227+
angle = reader->getDouble() / ARAD;
12291228
break;
12301229
case 70:
12311230
colcount = reader->getInt32();
@@ -1590,7 +1589,7 @@ void DRW_Text::parseCode( int code, dxfReader *reader )
15901589
widthscale = reader->getDouble();
15911590
break;
15921591
case 50:
1593-
angle = reader->getDouble();
1592+
angle = reader->getDouble() / ARAD;
15941593
break;
15951594
case 51:
15961595
oblique = reader->getDouble();
@@ -1630,7 +1629,7 @@ bool DRW_Text::parseDwg( DRW::Version version, dwgBuffer *buf, duint32 bs )
16301629

16311630
QgsDebugMsg( "***************************** parsing text *********************************************" );
16321631

1633-
// DataFlags RC Used to determine presence of subsquent data, set to 0xFF for R14-
1632+
// DataFlags RC Used to determine presence of subsequent data, set to 0xFF for R14-
16341633
duint8 data_flags = 0x00;
16351634
if ( version > DRW::AC1014 ) //2000+
16361635
{

‎src/app/dwg/qgsdwgimporter.cpp‎

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -623,7 +623,7 @@ bool QgsDwgImporter::import( const QString &drawing, QString &error, bool doExpa
623623
if ( fi.suffix().toLower() == "dxf" )
624624
{
625625
//loads dxf
626-
QSharedPointer<dxfRW> dxf( new dxfRW( drawing.toUtf8() ) );
626+
QScopedPointer<dxfRW> dxf( new dxfRW( drawing.toUtf8() ) );
627627
if ( !dxf->read( this, false ) )
628628
{
629629
result = DRW::BAD_UNKNOWN;
@@ -632,7 +632,7 @@ bool QgsDwgImporter::import( const QString &drawing, QString &error, bool doExpa
632632
else if ( fi.suffix().toLower() == "dwg" )
633633
{
634634
//loads dwg
635-
QSharedPointer<dwgR> dwg( new dwgR( drawing.toUtf8() ) );
635+
QScopedPointer<dwgR> dwg( new dwgR( drawing.toUtf8() ) );
636636
if ( !dwg->read( this, false ) )
637637
{
638638
result = dwg->getError();
@@ -2209,7 +2209,10 @@ void QgsDwgImporter::addText( const DRW_Text &data )
22092209

22102210
setPoint( dfn, f, "ext", data.extPoint );
22112211

2212-
QgsPointV2 p( QgsWKBTypes::PointZ, data.secPoint.x, data.secPoint.y, data.secPoint.z );
2212+
QgsPointV2 p( QgsWKBTypes::PointZ,
2213+
( data.alignH > 0 || data.alignV > 0 ) ? data.secPoint.x : data.basePoint.x,
2214+
( data.alignH > 0 || data.alignV > 0 ) ? data.secPoint.y : data.basePoint.y,
2215+
( data.alignH > 0 || data.alignV > 0 ) ? data.secPoint.z : data.basePoint.z );
22132216

22142217
if ( !createFeature( layer, f, p ) )
22152218
{

‎src/app/qgisapp.cpp‎

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1902,8 +1902,10 @@ void QgisApp::createMenus()
19021902
*/
19031903

19041904
// Layer menu
1905-
#ifndef SUPPORT_GEOPACKAGE
1905+
#if !defined(GDAL_COMPUTE_VERSION) || GDAL_VERSION_NUM < GDAL_COMPUTE_VERSION(2,0,0)
19061906
mProjectMenu->removeAction( mActionDwgImport );
1907+
#endif
1908+
#ifndef SUPPORT_GEOPACKAGE
19071909
mNewLayerMenu->removeAction( mActionNewGeoPackageLayer );
19081910
#endif
19091911

0 commit comments

Comments
 (0)