33/3D-Model-Extractor
/ModelExtractor/ModelExtractor/ModelExtractor.cs
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Newtonsoft.Json;
namespace ModelExtractor
{
public class ModelExtractor
{
private string modelPath = @"C:\Users\user\Desktop\temp\";
private string outputPath = @"C:\Users\user\Desktop\temp\";
private string modelFileName = "model.json";
private string modelInfoFilePath = @"C:\Users\user\Desktop\temp\";
private string modelInfoFileName = "model_info.txt";
public void ExtractModel(string modelPath)
{
this.modelPath = modelPath;
var modelInfo = LoadModelInfo();
foreach (var modelInfoItem in modelInfo)
{
string modelFilePath = modelPath + "\\" + modelInfoItem.ModelFile;
string modelInfoFilePath = modelInfoFilePath + "\\" + modelInfoItem.ModelInfoFile;
string modelInfoText = LoadModelInfoText(modelInfoFilePath);
if (File.Exists(modelFilePath))
{
if (!Directory.Exists(modelInfoFilePath))
{
Directory.CreateDirectory(modelInfoFilePath);
}
ExtractModel(modelFilePath, modelInfoText);
}
else
{
MessageBox.Show($"Model file not found: {modelFilePath}");
}
}
}
private string LoadModelInfoText(string modelInfoFilePath)
{
if (File.Exists(modelInfoFilePath))
{
return File.ReadAllText(modelInfoFilePath);
}
else
{
return "";
}
}
private List<ModelsInfo> LoadModelInfo()
{
if (File.Exists(modelFileName))
{
return JsonConvert.DeserializeObject<List<ModelsInfo>>(File.ReadAllText(modelFileName));
}
else
{
return new List<ModelsInfo>();
}
}
private void ExtractModel(string modelFilePath, string modelInfoText)
{
List<ModelsInfo> modelInfoItems = LoadModelInfoText(modelInfoText).Split('\n').Select(line => JsonConvert.DeserializeObject<ModelsInfo>(line)).ToList();
foreach (var modelInfoItem in modelInfoItems)
{
string modelPath = modelFilePath + "\\" + modelInfoItem.ModelFile;
string outputFilePath = outputPath + "\\" + modelInfoItem.ModelFile;
if (File.Exists(modelPath))
{
if (!Directory.Exists(outputFilePath))
{
Directory.CreateDirectory(outputFilePath);
}
var fileToExtract = modelPath;
if (File.Exists(fileToExtract))
{
var fileName = Path.GetFileName(fileToExtract);
var outputFilePathItem = outputFilePath + "\\" + fileName;
if (File.Exists(outputFilePathItem))
{
File.Delete(outputFilePathItem);
}
File.Copy(fileToExtract, outputFilePathItem);
}
}
else
{
MessageBox.Show($"Model file not found: {modelPath}");
}
}
}
}
}
/ModelExtractor/ModelExtractor/ModelsInfo.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ModelExtractor
{
public class ModelsInfo
{
public string ModelFile { get; set; }
public string ModelInfoFile { get; set; }
}
}
/README.md
# 3D-Model-Extractor
一款针对3D模型文件夹的快速提取工具。
/ModelExtractor/ModelExtractor/Program.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ModelExtractor
{
public class ModelsInfo
{
public string ModelFile { get; set; }
public string ModelInfoFile { get; set; }
}
}
/ModelExtractor/ModelExtractor/ModelExtractor.cs
# 3D-Model-Extractor
一款针对3D模型文件夹的快速提取工具。
功能说明:
- 识别模型文件夹中的所有3D模型文件和对应的模型信息文件;
- 提取指定文件夹中的所有3D模型文件,并保存到指定输出文件夹中;
- 支持批量提取。
使用说明:
1. 将需要提取的3D模型文件夹拖拽到程序窗口中; 2. 程序将自动识别文件夹中的所有3D模型文件和对应的模型信息文件; 3. 点击“提取模型”按钮,开始提取; 4. 提取完成后,提取的模型文件将保存到指定输出文件夹中。注意事项:
- 请确保模型文件夹中的文件名和文件路径正确无误;
- 提取过程中可能会弹出一些错误提示,请稍等片刻;
- 提取完成后,输出文件夹中将包含所有提取的模型文件。
示例:
将模型文件夹拖拽到程序窗口中,点击“提取模型”按钮,等待提取完成,提取的模型文件将保存在指定输出文件夹中。其他说明:
- 提取完成后,输出文件夹中的模型文件将保留原来的文件名和文件路径;
- 提取过程中可能会出现一些错误提示,请检查模型文件夹中的文件名和路径是否正确。
- 提取完成后,输出文件夹中的模型文件将保留原来的文件名和文件路径。
版本信息:
- 2023年11月1日:发布V1.0版本。
联系方式:
如果您在使用过程中遇到任何问题或有任何建议,请联系我,谢谢!版权信息:
本程序受中华人民共和国著作权法保护。未经作者许可,不得用于商业用途。/ModelExtractor/ModelExtractor/Program.cs