public static int ToLCID(this Autodesk.Revit.ApplicationServices.LanguageType value) { switch (value) { case Autodesk.Revit.ApplicationServices.LanguageType.English_USA: return(1033); case Autodesk.Revit.ApplicationServices.LanguageType.German: return(1031); case Autodesk.Revit.ApplicationServices.LanguageType.Spanish: return(1034); case Autodesk.Revit.ApplicationServices.LanguageType.French: return(1036); case Autodesk.Revit.ApplicationServices.LanguageType.Italian: return(1040); case Autodesk.Revit.ApplicationServices.LanguageType.Dutch: return(1043); case Autodesk.Revit.ApplicationServices.LanguageType.Chinese_Simplified: return(2052); case Autodesk.Revit.ApplicationServices.LanguageType.Chinese_Traditional: return(1028); case Autodesk.Revit.ApplicationServices.LanguageType.Japanese: return(1041); case Autodesk.Revit.ApplicationServices.LanguageType.Korean: return(1042); case Autodesk.Revit.ApplicationServices.LanguageType.Russian: return(1049); case Autodesk.Revit.ApplicationServices.LanguageType.Czech: return(1029); case Autodesk.Revit.ApplicationServices.LanguageType.Polish: return(1045); case Autodesk.Revit.ApplicationServices.LanguageType.Hungarian: return(1038); case Autodesk.Revit.ApplicationServices.LanguageType.Brazilian_Portuguese: return(1046); #if REVIT_2018 case Autodesk.Revit.ApplicationServices.LanguageType.English_GB: return(2057); #endif } return(1033); }
static string GenericAssetName(Autodesk.Revit.ApplicationServices.LanguageType language) { switch (language) { case Autodesk.Revit.ApplicationServices.LanguageType.English_USA: return("Generic"); case Autodesk.Revit.ApplicationServices.LanguageType.German: return("Generisch"); case Autodesk.Revit.ApplicationServices.LanguageType.Spanish: return("Genérico"); case Autodesk.Revit.ApplicationServices.LanguageType.French: return("Générique"); case Autodesk.Revit.ApplicationServices.LanguageType.Italian: return("Generico"); case Autodesk.Revit.ApplicationServices.LanguageType.Dutch: return("Allgemeine"); case Autodesk.Revit.ApplicationServices.LanguageType.Chinese_Simplified: return("常规"); case Autodesk.Revit.ApplicationServices.LanguageType.Chinese_Traditional: return("常規"); case Autodesk.Revit.ApplicationServices.LanguageType.Japanese: return("一般"); case Autodesk.Revit.ApplicationServices.LanguageType.Korean: return("일반"); case Autodesk.Revit.ApplicationServices.LanguageType.Russian: return("общий"); case Autodesk.Revit.ApplicationServices.LanguageType.Czech: return("Obecný"); case Autodesk.Revit.ApplicationServices.LanguageType.Polish: return("Rodzajowy"); case Autodesk.Revit.ApplicationServices.LanguageType.Hungarian: return("Generikus"); case Autodesk.Revit.ApplicationServices.LanguageType.Brazilian_Portuguese: return("Genérico"); #if REVIT_2018 case Autodesk.Revit.ApplicationServices.LanguageType.English_GB: return("Generic"); #endif } return(null); }
static string GetFamilyTemplateFileName(ElementId categoryId, Autodesk.Revit.ApplicationServices.LanguageType language) { if (categoryId.TryGetBuiltInCategory(out var builtInCategory)) { if (builtInCategory == BuiltInCategory.OST_Mass) { switch (language) { case Autodesk.Revit.ApplicationServices.LanguageType.English_USA: return(@"Conceptual Mass\Metric Mass"); case Autodesk.Revit.ApplicationServices.LanguageType.German: return(@"Entwurfskörper\M_Körper"); case Autodesk.Revit.ApplicationServices.LanguageType.Spanish: return(@"Masas conceptuales\Masa métrica"); case Autodesk.Revit.ApplicationServices.LanguageType.French: return(@"Volume conceptuel\Volume métrique"); case Autodesk.Revit.ApplicationServices.LanguageType.Italian: return(@"Massa concettuale\Massa metrica"); case Autodesk.Revit.ApplicationServices.LanguageType.Chinese_Simplified: return(@"概念体量\公制体量"); case Autodesk.Revit.ApplicationServices.LanguageType.Chinese_Traditional: return(@"概念量體\公制量體"); case Autodesk.Revit.ApplicationServices.LanguageType.Japanese: return(@"コンセプト マス\マス(メートル単位)"); case Autodesk.Revit.ApplicationServices.LanguageType.Korean: return(@"개념 질량\미터법 질량"); case Autodesk.Revit.ApplicationServices.LanguageType.Russian: return(@"Концептуальный формообразующий элемент\Метрическая система, формообразующий элемент"); case Autodesk.Revit.ApplicationServices.LanguageType.Czech: return(null); case Autodesk.Revit.ApplicationServices.LanguageType.Polish: return(@"Bryła koncepcyjna\Bryła (metryczna)"); case Autodesk.Revit.ApplicationServices.LanguageType.Hungarian: return(null); case Autodesk.Revit.ApplicationServices.LanguageType.Brazilian_Portuguese: return(@"Massa conceitual\Massa métrica"); #if REVIT_2018 case Autodesk.Revit.ApplicationServices.LanguageType.English_GB: return(@"Conceptual Mass\Mass"); #endif } return(null); } } switch (language) { case Autodesk.Revit.ApplicationServices.LanguageType.English_USA: return(@"Metric Generic Model"); case Autodesk.Revit.ApplicationServices.LanguageType.German: return(@"Allgemeines Modell"); case Autodesk.Revit.ApplicationServices.LanguageType.Spanish: return(@"Modelo genérico métrico"); case Autodesk.Revit.ApplicationServices.LanguageType.French: return(@"Modèle générique métrique"); case Autodesk.Revit.ApplicationServices.LanguageType.Italian: return(@"Modello generico metrico"); case Autodesk.Revit.ApplicationServices.LanguageType.Chinese_Simplified: return(@"公制常规模型"); case Autodesk.Revit.ApplicationServices.LanguageType.Chinese_Traditional: return(@"公制常规模型"); case Autodesk.Revit.ApplicationServices.LanguageType.Japanese: return(@"一般モデル(メートル単位)"); case Autodesk.Revit.ApplicationServices.LanguageType.Korean: return(@"미터법 일반 모델"); case Autodesk.Revit.ApplicationServices.LanguageType.Russian: return(@"Метрическая система, типовая модель"); case Autodesk.Revit.ApplicationServices.LanguageType.Czech: return(@"Obecný model"); case Autodesk.Revit.ApplicationServices.LanguageType.Polish: return(@"Model ogólny (metryczny)"); case Autodesk.Revit.ApplicationServices.LanguageType.Hungarian: return(null); case Autodesk.Revit.ApplicationServices.LanguageType.Brazilian_Portuguese: return(@"Modelo genérico métrico"); #if REVIT_2018 case Autodesk.Revit.ApplicationServices.LanguageType.English_GB: return(@"Generic Model"); #endif } return(null); }
static void CreateReportFile ( string revitVersionName, string revitVersionBuild, string revitSubVersionNumber, string revitVersionNumber, Autodesk.Revit.ApplicationServices.ProductType revitProduct, Autodesk.Revit.ApplicationServices.LanguageType revitLanguage, ExternalApplicationArray loadedApplications, string reportFilePath, string logFile, IEnumerable <string> attachments ) { attachments = attachments.Where(x => File.Exists(x)).ToArray(); using (var zip = new FileStream(reportFilePath, FileMode.Create)) { using (var archive = new ZipArchive(zip, ZipArchiveMode.Create)) { var now = DateTime.Now.ToString("yyyyMMddTHHmmssZ"); // Report.md { var Report = archive.CreateEntry($"{now}/Report.md"); using (var writer = new StreamWriter(Report.Open())) { writer.WriteLine($"# Rhino.Inside.Revit"); writer.WriteLine(); writer.WriteLine($"## Host"); writer.WriteLine($"- Environment.OSVersion: {Environment.OSVersion}"); writer.WriteLine($" - SystemInformation.TerminalServerSession: {System.Windows.Forms.SystemInformation.TerminalServerSession}"); writer.WriteLine($"- Environment.Version: {CLRVersion}"); writer.WriteLine($"- Environment.MaxVersion: {CLRMaxVersion}"); writer.WriteLine($"- {revitVersionName}"); writer.WriteLine($" - VersionBuild: {revitVersionBuild}"); #if REVIT_2019 writer.WriteLine($" - SubVersionNumber: {revitSubVersionNumber}"); #else writer.WriteLine($" - VersionNumber: {revitVersionNumber}"); #endif writer.WriteLine($" - ProductType: {revitProduct}"); writer.WriteLine($" - Language: {revitLanguage}"); var rhino = Addin.RhinoVersionInfo; writer.WriteLine($"- Rhino: {rhino.ProductVersion} ({rhino.FileDescription})"); writer.WriteLine($"- Rhino.Inside Revit: {Addin.DisplayVersion}"); if (loadedApplications is object) { writer.WriteLine(); writer.WriteLine("## Addins"); writer.WriteLine(); writer.WriteLine("[Loaded Applications](Addins/LoadedApplications.md) "); } writer.WriteLine(); writer.WriteLine("## Console"); writer.WriteLine(); writer.WriteLine("[Startup](Console/Startup.txt) "); if (attachments.Any()) { writer.WriteLine(); writer.WriteLine("## Attachments"); writer.WriteLine(); foreach (var attachment in attachments) { var attachmentName = Path.GetFileName(attachment); writer.WriteLine($"[{attachmentName}](Attachments/{attachmentName}) "); } } if (File.Exists(logFile)) { writer.WriteLine(); writer.WriteLine("## Log"); writer.WriteLine(); using (var log = new StreamReader(logFile)) { string line; while ((line = log.ReadLine()) != null) { writer.WriteLine(line); } } } } } // Addins if (loadedApplications is object) { var LoadedApplicationsCSV = archive.CreateEntry($"{now}/Addins/{now}.csv"); using (var writer = new StreamWriter(LoadedApplicationsCSV.Open())) { writer.WriteLine(@"""Company-Name"",""Product-Name"",""Product-Version"",""AddInType-FullName"",""Assembly-FullName"",""Assembly-Location"""); foreach (var application in loadedApplications) { var addinType = application.GetType(); var versionInfo = File.Exists(addinType.Assembly.Location) ? FileVersionInfo.GetVersionInfo(addinType.Assembly.Location) : null; string CompanyName = (versionInfo?.CompanyName ?? string.Empty).Replace(@"""", @""""""); string ProductName = (versionInfo?.ProductName ?? string.Empty).Replace(@"""", @""""""); string ProductVersion = (versionInfo?.ProductVersion ?? string.Empty).Replace(@"""", @""""""); string AddInTypeFullName = (addinType?.FullName ?? string.Empty).Replace(@"""", @""""""); string AssemblyFullName = (addinType?.Assembly.FullName ?? string.Empty).Replace(@"""", @""""""); string AssemblyLocation = (addinType?.Assembly.Location ?? string.Empty).Replace(@"""", @""""""); writer.WriteLine($@"""{CompanyName}"",""{ProductName}"",""{ProductVersion}"",""{AddInTypeFullName}"",""{AssemblyFullName}"",""{AssemblyLocation}"""); } } var LoadedApplicationsMD = archive.CreateEntry($"{now}/Addins/LoadedApplications.md"); using (var writer = new StreamWriter(LoadedApplicationsMD.Open())) { writer.WriteLine($"# UIApplication.LoadedApplications"); writer.WriteLine(); writer.WriteLine($"> NOTE: "); writer.WriteLine($"> Applications listed in load order. "); writer.WriteLine($"> Same information in CSV format [here]({now}.csv). "); writer.WriteLine(); foreach (var application in loadedApplications) { var addinType = application.GetType(); writer.WriteLine($"1. **{addinType.FullName}**"); writer.WriteLine($" - AssemblyFullName: {addinType.Assembly.FullName}"); writer.WriteLine($" - AssemblyLocation: {addinType.Assembly.Location}"); var versionInfo = File.Exists(addinType.Assembly.Location) ? FileVersionInfo.GetVersionInfo(addinType.Assembly.Location) : null; writer.WriteLine($" - CompanyName: {versionInfo?.CompanyName}"); writer.WriteLine($" - ProductName: {versionInfo?.ProductName}"); writer.WriteLine($" - ProductVersion: {versionInfo?.ProductVersion}"); writer.WriteLine(); } } Settings.AddIns.GetSystemAddins(revitVersionNumber, out var systemAddins); foreach (var addin in systemAddins) { CreateReportEntry(archive, $"{now}/Addins/System/{Path.GetFileName(addin)}", addin); } Settings.AddIns.GetInstalledAddins(revitVersionNumber, out var installedAddins); foreach (var addin in installedAddins) { CreateReportEntry(archive, $"{now}/Addins/Installed/{Path.GetFileName(addin)}", addin); } } // Console { if (Rhinoceros.StartupLog is string[] log && log.Length > 0) { var StartupTXT = archive.CreateEntry($"{now}/Console/Startup.txt"); using (var writer = new StreamWriter(StartupTXT.Open())) { foreach (var line in log) { writer.WriteLine(line.Replace("\n", "")); } } } } // Attachments { foreach (var attachement in attachments) { CreateReportEntry(archive, $"{now}/Attachments/{Path.GetFileName(attachement)}", attachement); } } } } }