2017-08-02 193 views
0

我正在开发GDAL库版本为1.11.4的CAD程序。使用GDAL将DXF块从一个文件导入另一个文件

我有两个DXF文件:a.dxfb.dxfa.dxf是一个模板文件。该文件有一个块层。它包含一些功能(符号信息)。 b.dxf包含一些点坐标。我应该使用符号(a.dxf)显示点(b.dxf)。

我的想法:从a.dxf导出块并将它们导入到b.dxf

但是b.dxf无法在CAD上打开。她是我的代码:

enter code here 
#include "stdafx.h" 
#include "gdal_priv.h" 
#include "ogrsf_frmts.h" 
#include "gdal.h" 
#include "stdio.h" 

int main() 
{ 
    const char *pszDriverName = "DXF"; 
    OGRSFDriver *poDriver = nullptr; 

    RegisterOGRDXF(); 

    CPLSetConfigOption("GDAL_DATA", "./debug/data"); 
    CPLSetConfigOption("DXF_INLINE_BLOCKS", "false"); 


    poDriver = OGRSFDriverRegistrar::GetRegistrar()->GetDriverByName("DXF"); 
    if (poDriver == NULL) 
    { 
     printf("%s driver not available.\n", pszDriverName); 
     exit(1); 
    } 

    OGRDataSource* poDS = OGRSFDriverRegistrar::Open("a.dxf", true, &poDriver); 
    //the block layer 
    OGRLayer* blockLayer = poDS->GetLayer(0); 
    OGRFeature* copy = blockLayer->GetFeature(0); 

    OGRDataSource* poDS1 = poDriver->CreateDataSource("b.dxf"); 
    OGRLayer* blockLayer1 = poDS1->CreateLayer("blocks"); 
    OGRLayer* entityLayer1 = poDS1->CreateLayer("entites"); 
    auto err1 = blockLayer1->CreateFeature(copy); 

    OGRFeature::DestroyFeature(copy); 

    OGRDataSource::DestroyDataSource(poDS); 
    OGRDataSource::DestroyDataSource(poDS1); 
} 

有谁知道问题是什么?

回答

0

我解决了这个问题。加{copy-> SetFID(1)},fid等于零默认值。我不知道为什么。

相关问题