|
|
|
|
@ -171,6 +171,7 @@ nmCalculationPebiGrid* nmCalculationPebiGrid::getInstance()
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
nmCalculationPebiGrid::nmCalculationPebiGrid()
|
|
|
|
|
: m_nPebiCount(-1)
|
|
|
|
|
{
|
|
|
|
|
// 默认值来自HX_NWTM_GRID_INPUT构造函数
|
|
|
|
|
m_dGridControl = p0.GridControl;
|
|
|
|
|
@ -223,6 +224,7 @@ void nmCalculationPebiGrid::clearGridData()
|
|
|
|
|
p1 = HX_NWTM_GRID_OUTPUT1();
|
|
|
|
|
p2 = HX_NWTM_GRID_OUTPUT2();
|
|
|
|
|
m_dGridControl = p0.GridControl;
|
|
|
|
|
m_nPebiCount = -1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void nmCalculationPebiGrid::logInputParameters(const HX_NWTM_GRID_INPUT& input)
|
|
|
|
|
@ -719,6 +721,11 @@ HX_NWTM_GRID_OUTPUT2 nmCalculationPebiGrid::getGridOutput2()
|
|
|
|
|
return p2;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int nmCalculationPebiGrid::getPebiCount() const
|
|
|
|
|
{
|
|
|
|
|
return m_nPebiCount;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
vtkSmartPointer<vtkUnstructuredGrid> nmCalculationPebiGrid::createPebiUnstructuredGrid(const HX_NWTM_GRID_OUTPUT1& P1)
|
|
|
|
|
{
|
|
|
|
|
vtkSmartPointer<vtkUnstructuredGrid> pUnstructuredGrid = vtkSmartPointer<vtkUnstructuredGrid>::New();
|
|
|
|
|
@ -895,12 +902,13 @@ bool nmCalculationPebiGrid::generateOutputPara()
|
|
|
|
|
|
|
|
|
|
// 定义函数指针类型
|
|
|
|
|
typedef void (*HX_NWTM_GRID_Func)(HX_NWTM_GRID_OUTPUT1&, HX_NWTM_GRID_OUTPUT2&, const HX_NWTM_GRID_INPUT&, std::string);
|
|
|
|
|
typedef int (*GetIntValueFunc)();
|
|
|
|
|
|
|
|
|
|
// ===== 调用网格生成器 =====
|
|
|
|
|
typedef void (*HX_NWTM_GRID_Func)(HX_NWTM_GRID_OUTPUT1&, HX_NWTM_GRID_OUTPUT2&, const HX_NWTM_GRID_INPUT&, std::string);
|
|
|
|
|
HX_NWTM_GRID_Func HX_NWTM_GRID = (HX_NWTM_GRID_Func)GetProcAddress(dll, "HX_NWTM_GRID");
|
|
|
|
|
GetIntValueFunc getPebiCount = (GetIntValueFunc)GetProcAddress(dll, "getPEBInum");
|
|
|
|
|
|
|
|
|
|
if(!HX_NWTM_GRID) {
|
|
|
|
|
if(!HX_NWTM_GRID || !getPebiCount) {
|
|
|
|
|
DWORD error = GetLastError();
|
|
|
|
|
printf("Failed to resolve function. Error code: %lu\n", error);
|
|
|
|
|
FreeLibrary(dll);
|
|
|
|
|
@ -912,6 +920,7 @@ bool nmCalculationPebiGrid::generateOutputPara()
|
|
|
|
|
p0 = HX_NWTM_GRID_INPUT();
|
|
|
|
|
p1 = HX_NWTM_GRID_OUTPUT1();
|
|
|
|
|
p2 = HX_NWTM_GRID_OUTPUT2();
|
|
|
|
|
m_nPebiCount = -1;
|
|
|
|
|
|
|
|
|
|
// PEBI网格划分输入参数:GridControl来自界面
|
|
|
|
|
p0.GridControl = m_dGridControl;
|
|
|
|
|
@ -1177,6 +1186,9 @@ bool nmCalculationPebiGrid::generateOutputPara()
|
|
|
|
|
|
|
|
|
|
HX_NWTM_GRID(p1, p2, p0, licensePathStd);
|
|
|
|
|
|
|
|
|
|
// getPEBInum的计数在HX_NWTM_GRID阶段生成,必须在卸载DLL前保存。
|
|
|
|
|
m_nPebiCount = getPebiCount();
|
|
|
|
|
|
|
|
|
|
} catch(const std::exception& e) {
|
|
|
|
|
zxLogInstance::getInstance()->writeLogF(QString("C++ Exception: %1").arg(e.what()));
|
|
|
|
|
logCurrentState();
|
|
|
|
|
|