优化了打开模型处理

This commit is contained in:
sladro 2026-02-04 16:21:28 +08:00
parent 549fa21bd1
commit d133cb6322
41 changed files with 68 additions and 0 deletions

View File

@ -1374,6 +1374,47 @@ HttpResponse CloseModelHandler(const HttpRequest& request) {
return response;
}
// 辅助函数:去除 Creo 文件路径末尾的版本号后缀
// 例如: D:\path\file.prt.1 -> D:\path\file.prt
// D:\path\file.asm.123 -> D:\path\file.asm
std::string StripCreoVersionSuffix(const std::string& file_path) {
// 查找最后一个路径分隔符
size_t last_sep = file_path.find_last_of("/\\");
std::string dir_part = (last_sep != std::string::npos) ? file_path.substr(0, last_sep + 1) : "";
std::string file_name = (last_sep != std::string::npos) ? file_path.substr(last_sep + 1) : file_path;
// 检查文件名是否以 .数字 结尾 (Creo 版本号格式)
size_t last_dot = file_name.rfind('.');
if (last_dot != std::string::npos && last_dot < file_name.length() - 1) {
std::string suffix = file_name.substr(last_dot + 1);
// 检查后缀是否全为数字
bool all_digits = !suffix.empty();
for (char c : suffix) {
if (!isdigit(static_cast<unsigned char>(c))) {
all_digits = false;
break;
}
}
if (all_digits) {
// 去除版本号后缀
std::string stripped_name = file_name.substr(0, last_dot);
// 确保去掉版本号后仍然有 Creo 扩展名 (.prt, .asm 等)
size_t ext_dot = stripped_name.rfind('.');
if (ext_dot != std::string::npos) {
std::string ext = stripped_name.substr(ext_dot + 1);
// 验证是 Creo 扩展名
if (ext == "prt" || ext == "asm" || ext == "drw" || ext == "frm" || ext == "lay" || ext == "sec") {
return dir_part + stripped_name;
}
}
}
}
// 不匹配 Creo 版本号格式,返回原路径
return file_path;
}
// 打开模型路由处理器
HttpResponse OpenModelHandler(const HttpRequest& request) {
HttpResponse response;
@ -1410,6 +1451,9 @@ HttpResponse OpenModelHandler(const HttpRequest& request) {
file_path = dirname + "/" + filename;
}
// 去除 Creo 文件版本号后缀 (如 .prt.1 -> .prt)
file_path = StripCreoVersionSuffix(file_path);
if (software_type != "creo") {
response.status_code = 400;
response.body = "{\"success\": false, \"error\": \"Invalid software_type, must be 'creo'\"}";

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,21 @@
C:\Users\sladr\source\repos\MFCCreoDll\AuthManager.cpp;C:\Users\sladr\source\repos\MFCCreoDll\MFCCreoDll\x64\Debug\AuthManager.obj
C:\Users\sladr\source\repos\MFCCreoDll\BatchOperationManager.cpp;C:\Users\sladr\source\repos\MFCCreoDll\MFCCreoDll\x64\Debug\BatchOperationManager.obj
C:\Users\sladr\source\repos\MFCCreoDll\ComponentChildrenManager.cpp;C:\Users\sladr\source\repos\MFCCreoDll\MFCCreoDll\x64\Debug\ComponentChildrenManager.obj
C:\Users\sladr\source\repos\MFCCreoDll\CreoManager.cpp;C:\Users\sladr\source\repos\MFCCreoDll\MFCCreoDll\x64\Debug\CreoManager.obj
C:\Users\sladr\source\repos\MFCCreoDll\CreoUtilities.cpp;C:\Users\sladr\source\repos\MFCCreoDll\MFCCreoDll\x64\Debug\CreoUtilities.obj
C:\Users\sladr\source\repos\MFCCreoDll\GeometryAnalyzer.cpp;C:\Users\sladr\source\repos\MFCCreoDll\MFCCreoDll\x64\Debug\GeometryAnalyzer.obj
C:\Users\sladr\source\repos\MFCCreoDll\HierarchyStatisticsAnalyzer.cpp;C:\Users\sladr\source\repos\MFCCreoDll\MFCCreoDll\x64\Debug\HierarchyStatisticsAnalyzer.obj
C:\Users\sladr\source\repos\MFCCreoDll\HttpRouter.cpp;C:\Users\sladr\source\repos\MFCCreoDll\MFCCreoDll\x64\Debug\HttpRouter.obj
C:\Users\sladr\source\repos\MFCCreoDll\HttpServer.cpp;C:\Users\sladr\source\repos\MFCCreoDll\MFCCreoDll\x64\Debug\HttpServer.obj
C:\Users\sladr\source\repos\MFCCreoDll\JsonHelper.cpp;C:\Users\sladr\source\repos\MFCCreoDll\MFCCreoDll\x64\Debug\JsonHelper.obj
C:\Users\sladr\source\repos\MFCCreoDll\Logger.cpp;C:\Users\sladr\source\repos\MFCCreoDll\MFCCreoDll\x64\Debug\Logger.obj
C:\Users\sladr\source\repos\MFCCreoDll\MFCCreoDll.cpp;C:\Users\sladr\source\repos\MFCCreoDll\MFCCreoDll\x64\Debug\MFCCreoDll.obj
C:\Users\sladr\source\repos\MFCCreoDll\ModelAnalyzer.cpp;C:\Users\sladr\source\repos\MFCCreoDll\MFCCreoDll\x64\Debug\ModelAnalyzer.obj
C:\Users\sladr\source\repos\MFCCreoDll\ModelSearchEngine.cpp;C:\Users\sladr\source\repos\MFCCreoDll\MFCCreoDll\x64\Debug\ModelSearchEngine.obj
C:\Users\sladr\source\repos\MFCCreoDll\ModelSearchHandler.cpp;C:\Users\sladr\source\repos\MFCCreoDll\MFCCreoDll\x64\Debug\ModelSearchHandler.obj
C:\Users\sladr\source\repos\MFCCreoDll\PathDeleteManager.cpp;C:\Users\sladr\source\repos\MFCCreoDll\MFCCreoDll\x64\Debug\PathDeleteManager.obj
C:\Users\sladr\source\repos\MFCCreoDll\pch.cpp;C:\Users\sladr\source\repos\MFCCreoDll\MFCCreoDll\x64\Debug\pch.obj
C:\Users\sladr\source\repos\MFCCreoDll\ServerManager.cpp;C:\Users\sladr\source\repos\MFCCreoDll\MFCCreoDll\x64\Debug\ServerManager.obj
C:\Users\sladr\source\repos\MFCCreoDll\ShellExportHandler.cpp;C:\Users\sladr\source\repos\MFCCreoDll\MFCCreoDll\x64\Debug\ShellExportHandler.obj
C:\Users\sladr\source\repos\MFCCreoDll\ShrinkwrapManager.cpp;C:\Users\sladr\source\repos\MFCCreoDll\MFCCreoDll\x64\Debug\ShrinkwrapManager.obj
C:\Users\sladr\source\repos\MFCCreoDll\WebSocketServer.cpp;C:\Users\sladr\source\repos\MFCCreoDll\MFCCreoDll\x64\Debug\WebSocketServer.obj

Binary file not shown.

View File

@ -0,0 +1,3 @@
^C:\USERS\SLADR\SOURCE\REPOS\MFCCREODLL\MFCCREODLL\X64\DEBUG\AUTHMANAGER.OBJ|C:\USERS\SLADR\SOURCE\REPOS\MFCCREODLL\MFCCREODLL\X64\DEBUG\BATCHOPERATIONMANAGER.OBJ|C:\USERS\SLADR\SOURCE\REPOS\MFCCREODLL\MFCCREODLL\X64\DEBUG\COMPONENTCHILDRENMANAGER.OBJ|C:\USERS\SLADR\SOURCE\REPOS\MFCCREODLL\MFCCREODLL\X64\DEBUG\CREOMANAGER.OBJ|C:\USERS\SLADR\SOURCE\REPOS\MFCCREODLL\MFCCREODLL\X64\DEBUG\CREOUTILITIES.OBJ|C:\USERS\SLADR\SOURCE\REPOS\MFCCREODLL\MFCCREODLL\X64\DEBUG\GEOMETRYANALYZER.OBJ|C:\USERS\SLADR\SOURCE\REPOS\MFCCREODLL\MFCCREODLL\X64\DEBUG\HIERARCHYSTATISTICSANALYZER.OBJ|C:\USERS\SLADR\SOURCE\REPOS\MFCCREODLL\MFCCREODLL\X64\DEBUG\HTTPROUTER.OBJ|C:\USERS\SLADR\SOURCE\REPOS\MFCCREODLL\MFCCREODLL\X64\DEBUG\HTTPSERVER.OBJ|C:\USERS\SLADR\SOURCE\REPOS\MFCCREODLL\MFCCREODLL\X64\DEBUG\JSONHELPER.OBJ|C:\USERS\SLADR\SOURCE\REPOS\MFCCREODLL\MFCCREODLL\X64\DEBUG\LOGGER.OBJ|C:\USERS\SLADR\SOURCE\REPOS\MFCCREODLL\MFCCREODLL\X64\DEBUG\MFCCREODLL.OBJ|C:\USERS\SLADR\SOURCE\REPOS\MFCCREODLL\MFCCREODLL\X64\DEBUG\MFCCREODLL.RES|C:\USERS\SLADR\SOURCE\REPOS\MFCCREODLL\MFCCREODLL\X64\DEBUG\MODELANALYZER.OBJ|C:\USERS\SLADR\SOURCE\REPOS\MFCCREODLL\MFCCREODLL\X64\DEBUG\MODELSEARCHENGINE.OBJ|C:\USERS\SLADR\SOURCE\REPOS\MFCCREODLL\MFCCREODLL\X64\DEBUG\MODELSEARCHHANDLER.OBJ|C:\USERS\SLADR\SOURCE\REPOS\MFCCREODLL\MFCCREODLL\X64\DEBUG\PATHDELETEMANAGER.OBJ|C:\USERS\SLADR\SOURCE\REPOS\MFCCREODLL\MFCCREODLL\X64\DEBUG\PCH.OBJ|C:\USERS\SLADR\SOURCE\REPOS\MFCCREODLL\MFCCREODLL\X64\DEBUG\SERVERMANAGER.OBJ|C:\USERS\SLADR\SOURCE\REPOS\MFCCREODLL\MFCCREODLL\X64\DEBUG\SHELLEXPORTHANDLER.OBJ|C:\USERS\SLADR\SOURCE\REPOS\MFCCREODLL\MFCCREODLL\X64\DEBUG\SHRINKWRAPMANAGER.OBJ|C:\USERS\SLADR\SOURCE\REPOS\MFCCREODLL\MFCCREODLL\X64\DEBUG\WEBSOCKETSERVER.OBJ
C:\Users\sladr\source\repos\MFCCreoDll\x64\Debug\MFCCreoDll.lib
C:\Users\sladr\source\repos\MFCCreoDll\x64\Debug\MFCCreoDll.EXP

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
x64/Debug/MFCCreoDll.dll Normal file

Binary file not shown.

BIN
x64/Debug/MFCCreoDll.exp Normal file

Binary file not shown.

BIN
x64/Debug/MFCCreoDll.lib Normal file

Binary file not shown.

BIN
x64/Debug/MFCCreoDll.pdb Normal file

Binary file not shown.