public static class RevitFileUtils
{
private const string MatchVersion = @"((?<=Autodesk Revit )20\d{2})|((?<=Format: )20\d{2})";
/// <summary>
/// 获取revit文件版本号[采用流方式]返回结果(eg:2018,2019)
/// </summary>
/// <param name="filePath"></param>
/// <returns>返回结果(eg:2018,2019)</returns>
public static string GetVersion(string filePath)
{
var version = string.Empty;
Encoding useEncoding = Encoding.Unicode;
using (FileStream file = new FileStream(filePath, FileMode.Open))
{
//匹配字符有20个(最长的匹配字符串18版本的有20个),为了防止分割对匹配造成的影响,需要验证20次偏移结果
for (int i = 0; i < 20; i++)
{
byte[] buffer = new byte[2000];
file.Seek(i, SeekOrigin.Begin);
while (file.Read(buffer, 0, buffer.Length) != 0)
{
var head = useEncoding.GetString(buffer);
Regex regex = new Regex(MatchVersion);
var match = regex.Match(head);
if (match.Success)
{
version = match.ToString();
return version;
}
}
}
}
return version;
}
}
关于不启动revit获取版本号
猜你喜欢
转载自blog.csdn.net/waiting233/article/details/121439941
今日推荐
周排行