增加求解器新增字段的读写

feature/Model-20260625
lvjunjie 2 weeks ago
parent 09d7f1b9d9
commit 4b539c9baf

@ -610,6 +610,7 @@ bool DatasetIO::writeGridOutput2(std::ofstream& fs, const HX_NWTM_GRID_OUTPUT2&
if (!writeVec2D(fs, g.ZhiJingNeiBianJie.dw)) return false; if (!writeVec2D(fs, g.ZhiJingNeiBianJie.dw)) return false;
if (!writeVec1D(fs, g.ZhiJingNeiBianJie.rw)) return false; if (!writeVec1D(fs, g.ZhiJingNeiBianJie.rw)) return false;
if (!writeIVec2D(fs, g.ZhiJingNeiBianJie.inwell)) return false; if (!writeIVec2D(fs, g.ZhiJingNeiBianJie.inwell)) return false;
if (!writeVec1D(fs, g.ZhiJingNeiBianJie.dwell)) return false;
// LieFengJingNeiBianJie // LieFengJingNeiBianJie
if (!writeInt(fs, g.LieFengJingNeiBianJie.n)) return false; if (!writeInt(fs, g.LieFengJingNeiBianJie.n)) return false;
@ -618,6 +619,13 @@ bool DatasetIO::writeGridOutput2(std::ofstream& fs, const HX_NWTM_GRID_OUTPUT2&
if (!writeVec2D(fs, g.LieFengJingNeiBianJie.df)) return false; if (!writeVec2D(fs, g.LieFengJingNeiBianJie.df)) return false;
if (!writeVec1D(fs, g.LieFengJingNeiBianJie.xf)) return false; if (!writeVec1D(fs, g.LieFengJingNeiBianJie.xf)) return false;
if (!writeIVec2D(fs, g.LieFengJingNeiBianJie.infra)) return false; if (!writeIVec2D(fs, g.LieFengJingNeiBianJie.infra)) return false;
if (!writeIVec1D(fs, g.LieFengJingNeiBianJie.nf)) return false;
if (!writeIVec1D(fs, g.LieFengJingNeiBianJie.jjf)) return false;
if (!writeIVec1D(fs, g.LieFengJingNeiBianJie.jjfl)) return false;
if (!writeVec1D(fs, g.LieFengJingNeiBianJie.lfcd)) return false;
if (!writeIVec2D(fs, g.LieFengJingNeiBianJie.infra1)) return false;
if (!writeVec2D(fs, g.LieFengJingNeiBianJie.lf1)) return false;
if (!writeVec2D(fs, g.LieFengJingNeiBianJie.df1)) return false;
// DuoJiYaLieShuiPingJingNeiBianJie // DuoJiYaLieShuiPingJingNeiBianJie
if (!writeInt(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.n)) return false; if (!writeInt(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.n)) return false;
@ -627,6 +635,16 @@ bool DatasetIO::writeGridOutput2(std::ofstream& fs, const HX_NWTM_GRID_OUTPUT2&
if (!writeVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.dsxf)) return false; if (!writeVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.dsxf)) return false;
if (!writeIVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.inhor)) return false; if (!writeIVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.inhor)) return false;
if (!writeIVec1D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.nhor)) return false; if (!writeIVec1D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.nhor)) return false;
if (!writeVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.areah)) return false;
if (!writeIVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.inhor1)) return false;
if (!writeIVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.nh)) return false;
if (!writeIVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.jjh)) return false;
if (!writeVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.hfcd)) return false;
if (!writeIVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.jjhl)) return false;
if (!writeIVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.jjh2)) return false;
if (!writeIVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.inhor2)) return false;
if (!writeVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.lh1)) return false;
if (!writeVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.dh1)) return false;
// WaiBianJie // WaiBianJie
if (!writeInt(fs, g.WaiBianJie.n)) return false; if (!writeInt(fs, g.WaiBianJie.n)) return false;
@ -662,6 +680,7 @@ bool DatasetIO::readGridOutput2(std::ifstream& fs, HX_NWTM_GRID_OUTPUT2& g)
if (!readVec2D(fs, g.ZhiJingNeiBianJie.dw)) return false; if (!readVec2D(fs, g.ZhiJingNeiBianJie.dw)) return false;
if (!readVec1D(fs, g.ZhiJingNeiBianJie.rw)) return false; if (!readVec1D(fs, g.ZhiJingNeiBianJie.rw)) return false;
if (!readIVec2D(fs, g.ZhiJingNeiBianJie.inwell)) return false; if (!readIVec2D(fs, g.ZhiJingNeiBianJie.inwell)) return false;
if (!readVec1D(fs, g.ZhiJingNeiBianJie.dwell)) return false;
if (!readInt(fs, g.LieFengJingNeiBianJie.n)) return false; if (!readInt(fs, g.LieFengJingNeiBianJie.n)) return false;
if (!readVec2D(fs, g.LieFengJingNeiBianJie.XiLinf)) return false; if (!readVec2D(fs, g.LieFengJingNeiBianJie.XiLinf)) return false;
@ -669,6 +688,13 @@ bool DatasetIO::readGridOutput2(std::ifstream& fs, HX_NWTM_GRID_OUTPUT2& g)
if (!readVec2D(fs, g.LieFengJingNeiBianJie.df)) return false; if (!readVec2D(fs, g.LieFengJingNeiBianJie.df)) return false;
if (!readVec1D(fs, g.LieFengJingNeiBianJie.xf)) return false; if (!readVec1D(fs, g.LieFengJingNeiBianJie.xf)) return false;
if (!readIVec2D(fs, g.LieFengJingNeiBianJie.infra)) return false; if (!readIVec2D(fs, g.LieFengJingNeiBianJie.infra)) return false;
if (!readIVec1D(fs, g.LieFengJingNeiBianJie.nf)) return false;
if (!readIVec1D(fs, g.LieFengJingNeiBianJie.jjf)) return false;
if (!readIVec1D(fs, g.LieFengJingNeiBianJie.jjfl)) return false;
if (!readVec1D(fs, g.LieFengJingNeiBianJie.lfcd)) return false;
if (!readIVec2D(fs, g.LieFengJingNeiBianJie.infra1)) return false;
if (!readVec2D(fs, g.LieFengJingNeiBianJie.lf1)) return false;
if (!readVec2D(fs, g.LieFengJingNeiBianJie.df1)) return false;
if (!readInt(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.n)) return false; if (!readInt(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.n)) return false;
if (!readVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.XiLinh)) return false; if (!readVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.XiLinh)) return false;
@ -677,6 +703,16 @@ bool DatasetIO::readGridOutput2(std::ifstream& fs, HX_NWTM_GRID_OUTPUT2& g)
if (!readVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.dsxf)) return false; if (!readVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.dsxf)) return false;
if (!readIVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.inhor)) return false; if (!readIVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.inhor)) return false;
if (!readIVec1D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.nhor)) return false; if (!readIVec1D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.nhor)) return false;
if (!readVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.areah)) return false;
if (!readIVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.inhor1)) return false;
if (!readIVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.nh)) return false;
if (!readIVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.jjh)) return false;
if (!readVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.hfcd)) return false;
if (!readIVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.jjhl)) return false;
if (!readIVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.jjh2)) return false;
if (!readIVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.inhor2)) return false;
if (!readVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.lh1)) return false;
if (!readVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.dh1)) return false;
if (!readInt(fs, g.WaiBianJie.n)) return false; if (!readInt(fs, g.WaiBianJie.n)) return false;
if (!readVec2D(fs, g.WaiBianJie.WaiBianh)) return false; if (!readVec2D(fs, g.WaiBianJie.WaiBianh)) return false;

@ -53,7 +53,7 @@ private:
}; };
enum { MAGIC = 0x58485444 }; // 'DTHX' little-endian enum { MAGIC = 0x58485444 }; // 'DTHX' little-endian
enum { VERSION = 1 }; enum { VERSION = 2 };
// 从 scene 生成 gridInput用于 strictVerify 重新算 sceneKey // 从 scene 生成 gridInput用于 strictVerify 重新算 sceneKey
static HX_NWTM_GRID_INPUT buildGridInputFromScene(const PebiScene& scene); static HX_NWTM_GRID_INPUT buildGridInputFromScene(const PebiScene& scene);

@ -428,6 +428,7 @@ bool GridCacheIO::writeGridOutput2(std::ofstream& fs, const HX_NWTM_GRID_OUTPUT2
if (!writeVec2D(fs, g.ZhiJingNeiBianJie.dw)) return false; if (!writeVec2D(fs, g.ZhiJingNeiBianJie.dw)) return false;
if (!writeVec1D(fs, g.ZhiJingNeiBianJie.rw)) return false; if (!writeVec1D(fs, g.ZhiJingNeiBianJie.rw)) return false;
if (!writeIVec2D(fs, g.ZhiJingNeiBianJie.inwell)) return false; if (!writeIVec2D(fs, g.ZhiJingNeiBianJie.inwell)) return false;
if (!writeVec1D(fs, g.ZhiJingNeiBianJie.dwell)) return false;
// LieFengJingNeiBianJie // LieFengJingNeiBianJie
if (!writeInt(fs, g.LieFengJingNeiBianJie.n)) return false; if (!writeInt(fs, g.LieFengJingNeiBianJie.n)) return false;
@ -436,6 +437,13 @@ bool GridCacheIO::writeGridOutput2(std::ofstream& fs, const HX_NWTM_GRID_OUTPUT2
if (!writeVec2D(fs, g.LieFengJingNeiBianJie.df)) return false; if (!writeVec2D(fs, g.LieFengJingNeiBianJie.df)) return false;
if (!writeVec1D(fs, g.LieFengJingNeiBianJie.xf)) return false; if (!writeVec1D(fs, g.LieFengJingNeiBianJie.xf)) return false;
if (!writeIVec2D(fs, g.LieFengJingNeiBianJie.infra)) return false; if (!writeIVec2D(fs, g.LieFengJingNeiBianJie.infra)) return false;
if (!writeIVec1D(fs, g.LieFengJingNeiBianJie.nf)) return false;
if (!writeIVec1D(fs, g.LieFengJingNeiBianJie.jjf)) return false;
if (!writeIVec1D(fs, g.LieFengJingNeiBianJie.jjfl)) return false;
if (!writeVec1D(fs, g.LieFengJingNeiBianJie.lfcd)) return false;
if (!writeIVec2D(fs, g.LieFengJingNeiBianJie.infra1)) return false;
if (!writeVec2D(fs, g.LieFengJingNeiBianJie.lf1)) return false;
if (!writeVec2D(fs, g.LieFengJingNeiBianJie.df1)) return false;
// DuoJiYaLieShuiPingJingNeiBianJie // DuoJiYaLieShuiPingJingNeiBianJie
if (!writeInt(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.n)) return false; if (!writeInt(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.n)) return false;
@ -445,6 +453,16 @@ bool GridCacheIO::writeGridOutput2(std::ofstream& fs, const HX_NWTM_GRID_OUTPUT2
if (!writeVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.dsxf)) return false; if (!writeVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.dsxf)) return false;
if (!writeIVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.inhor)) return false; if (!writeIVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.inhor)) return false;
if (!writeIVec1D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.nhor)) return false; if (!writeIVec1D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.nhor)) return false;
if (!writeVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.areah)) return false;
if (!writeIVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.inhor1)) return false;
if (!writeIVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.nh)) return false;
if (!writeIVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.jjh)) return false;
if (!writeVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.hfcd)) return false;
if (!writeIVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.jjhl)) return false;
if (!writeIVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.jjh2)) return false;
if (!writeIVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.inhor2)) return false;
if (!writeVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.lh1)) return false;
if (!writeVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.dh1)) return false;
// WaiBianJie // WaiBianJie
if (!writeInt(fs, g.WaiBianJie.n)) return false; if (!writeInt(fs, g.WaiBianJie.n)) return false;
@ -480,6 +498,7 @@ bool GridCacheIO::readGridOutput2(std::ifstream& fs, HX_NWTM_GRID_OUTPUT2& g)
if (!readVec2D(fs, g.ZhiJingNeiBianJie.dw)) return false; if (!readVec2D(fs, g.ZhiJingNeiBianJie.dw)) return false;
if (!readVec1D(fs, g.ZhiJingNeiBianJie.rw)) return false; if (!readVec1D(fs, g.ZhiJingNeiBianJie.rw)) return false;
if (!readIVec2D(fs, g.ZhiJingNeiBianJie.inwell)) return false; if (!readIVec2D(fs, g.ZhiJingNeiBianJie.inwell)) return false;
if (!readVec1D(fs, g.ZhiJingNeiBianJie.dwell)) return false;
if (!readInt(fs, g.LieFengJingNeiBianJie.n)) return false; if (!readInt(fs, g.LieFengJingNeiBianJie.n)) return false;
if (!readVec2D(fs, g.LieFengJingNeiBianJie.XiLinf)) return false; if (!readVec2D(fs, g.LieFengJingNeiBianJie.XiLinf)) return false;
@ -487,6 +506,13 @@ bool GridCacheIO::readGridOutput2(std::ifstream& fs, HX_NWTM_GRID_OUTPUT2& g)
if (!readVec2D(fs, g.LieFengJingNeiBianJie.df)) return false; if (!readVec2D(fs, g.LieFengJingNeiBianJie.df)) return false;
if (!readVec1D(fs, g.LieFengJingNeiBianJie.xf)) return false; if (!readVec1D(fs, g.LieFengJingNeiBianJie.xf)) return false;
if (!readIVec2D(fs, g.LieFengJingNeiBianJie.infra)) return false; if (!readIVec2D(fs, g.LieFengJingNeiBianJie.infra)) return false;
if (!readIVec1D(fs, g.LieFengJingNeiBianJie.nf)) return false;
if (!readIVec1D(fs, g.LieFengJingNeiBianJie.jjf)) return false;
if (!readIVec1D(fs, g.LieFengJingNeiBianJie.jjfl)) return false;
if (!readVec1D(fs, g.LieFengJingNeiBianJie.lfcd)) return false;
if (!readIVec2D(fs, g.LieFengJingNeiBianJie.infra1)) return false;
if (!readVec2D(fs, g.LieFengJingNeiBianJie.lf1)) return false;
if (!readVec2D(fs, g.LieFengJingNeiBianJie.df1)) return false;
if (!readInt(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.n)) return false; if (!readInt(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.n)) return false;
if (!readVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.XiLinh)) return false; if (!readVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.XiLinh)) return false;
@ -495,6 +521,16 @@ bool GridCacheIO::readGridOutput2(std::ifstream& fs, HX_NWTM_GRID_OUTPUT2& g)
if (!readVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.dsxf)) return false; if (!readVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.dsxf)) return false;
if (!readIVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.inhor)) return false; if (!readIVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.inhor)) return false;
if (!readIVec1D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.nhor)) return false; if (!readIVec1D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.nhor)) return false;
if (!readVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.areah)) return false;
if (!readIVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.inhor1)) return false;
if (!readIVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.nh)) return false;
if (!readIVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.jjh)) return false;
if (!readVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.hfcd)) return false;
if (!readIVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.jjhl)) return false;
if (!readIVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.jjh2)) return false;
if (!readIVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.inhor2)) return false;
if (!readVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.lh1)) return false;
if (!readVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.dh1)) return false;
if (!readInt(fs, g.WaiBianJie.n)) return false; if (!readInt(fs, g.WaiBianJie.n)) return false;
if (!readVec2D(fs, g.WaiBianJie.WaiBianh)) return false; if (!readVec2D(fs, g.WaiBianJie.WaiBianh)) return false;

@ -41,7 +41,7 @@ private:
}; };
enum { MAGIC = 0x58484347 }; // 'GCHX' little-endian enum { MAGIC = 0x58484347 }; // 'GCHX' little-endian
enum { VERSION = 1 }; enum { VERSION = 2 };
private: private:
// 计算串场景 key // 计算串场景 key

@ -272,6 +272,12 @@ int main()
return 5; return 5;
} }
if (gridOutput2.Trinodexy.empty()) {
std::cerr << "HX_NWTM_GRID 返回空网格,停止写入缓存和 dataset" << std::endl;
FreeLibrary(hx);
return 5;
}
std::cout << "保存网格缓存: " << gridCachePath << std::endl; std::cout << "保存网格缓存: " << gridCachePath << std::endl;
if (!GridCacheIO::saveGrid(gridCachePath, gridOutput2, gridInput)) { if (!GridCacheIO::saveGrid(gridCachePath, gridOutput2, gridInput)) {
std::cout << "警告:保存网格缓存失败(继续执行)" << std::endl; std::cout << "警告:保存网格缓存失败(继续执行)" << std::endl;

Loading…
Cancel
Save