Импортируйте блоки DXF из одного файла в другой, используя GDAL

Я работаю над программой САПР с библиотекой GDAL версии 1.11.4.

У меня есть два файла DXF: a.dxf а также b.dxf, a.dxf это файл шаблона Файл имеет блочный слой. Он содержит некоторые функции (символьная информация). b.dxf содержит некоторые точечные координаты. Я должен отобразить очки (b.dxf) используя символы (a.dxf).

Мои мысли: экспортировать блоки из a.dxf и импортировать их в b.dxf,

Но b.dxf не могу открыть в САПР. Вот мой код:

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)}, значение по умолчанию равно нулю. я не знаю почему.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]