2017-08-02 24 views
0

私はCADプログラムでGDALライブラリバージョン1.11.4で作業しています。GDALを使用して1つのファイルから別のファイルにDXFブロックをインポート

a.dxfb.dxfの2つのDXFファイルがあります。 a.dxfはテンプレートファイルです。ファイルにはブロックレイヤーがあります。いくつかの機能(シンボル情報)が含まれています。 b.dxfにはいくつかのポイント座標が含まれています。シンボル(a.dxf)を使用してポイント(b.dxf)を表示する必要があります。

私の考え:ブロックをa.dxfからエクスポートし、b.dxfにインポートします。

しかし、b.dxfはCADで開くことができません。 Hersは私のコードです:

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

この問題は解決しました。 add {copy-> SetFID(1)}、fidはデフォルト値の0です。どうしてか分かりません。

関連する問題