// [Directories](文件位置) // // ·ProjectPath——打开项目时的默认路径 // // ·ExternalParameters——共享参数文件保存路径 // // // // [Graphics](图形设置) // // ·TempDimFontSizeInPoints——临时尺寸标注文字外观 // // ·AllowNavigationDuringRedraw——重绘期间允许导航 // // ·UseGpuOcclusionCulling——仅绘制可见图元 // // ·Antialiasing——使用反失真平滑线条 // // ·AntialiasingOptions——使用反失真平滑线条选项 // // ·SemiTransparent——半透明 // // ·ThinLinesEnabled——是否启用细线 // // ·UseGraphicsHardware——是否使用硬件加速 // // // // [Selection](选择设置) // // ·AllowFaceSelection——是否按面选择图元 // // ·AllowLinkSelection——是否选择链接 // // ·AllowPinnedSelection——是否选择锁定图元 // // ·AllowPressAndDrag——是否选择时拖拽图元 // // ·AllowUnderlaySelection——是否选择基线图元 // // // // [Windows](窗口) // // ·Maximized = 0(0 = 以最后一次任务期间使用的窗口大小启动 Revit(默认);1 = 以最大化窗口启动 Revit。) using System; using System.IO; using System.Text; namespace Sai.Toolkit.Revit.Helpers { public static class RevitIniAssist { public static string RevitVersion; public static string IniPath { get; } = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + $"\\Autodesk\\Revit\\Autodesk Revit {RevitVersion}\\Revit.ini"; /// /// 添加项目样板 /// /// /// .ini文件的完整路径 /// public static void AddProjectTemplate(string revitVersion, string revitTemplateIniFilePath, string templateFilePath) { //Autodesk.Revit.ApplicationServices.Application.CurrentUsersDataFolderPath string oriDateFilePath = Environment.GetEnvironmentVariable("appdata") + $"\\Autodesk\\Revit\\Autodesk Revit {revitVersion}\\Revit.ini"; if (File.Exists(oriDateFilePath)) { using (StreamReader sr = new StreamReader(oriDateFilePath, Encoding.Unicode)) { StreamWriter sw = new StreamWriter(revitTemplateIniFilePath, false, Encoding.Unicode); string inputLine; while ((inputLine = sr.ReadLine()) != null) { if (inputLine.StartsWith("DefaultTemplate=")) { _ = inputLine.Insert(16, templateFilePath); //if (inputLine.Contains("Example_SCHEMA.rte")) //{ //} //else //{ // inputLine = inputLine + @", Example_SCHEMA=C:\temp\Example_SCHEMA.rte"; //} } sw.WriteLine(inputLine); } sw.Close(); } File.Replace(revitTemplateIniFilePath, oriDateFilePath, null); } } public static string ReadRevitIniData(string fileName, string targetTemplateFilePath) { StringBuilder sb = new StringBuilder(); using (StreamReader sr = new StreamReader(fileName, Encoding.Unicode)) { string lineBuf; bool isTargetSection = false; while ((lineBuf = sr.ReadLine()) != null) { if (lineBuf == "[DirectoriesCHS]") { isTargetSection = true; } if (isTargetSection) { if (lineBuf.Contains("DefaultTemplate")) { if (!lineBuf.Contains(targetTemplateFilePath)) { int starIndex = "DefaultTemplate=".Length; string endStr = lineBuf.Substring(starIndex); lineBuf = "DefaultTemplate=" + targetTemplateFilePath; lineBuf += ","; lineBuf += endStr; } isTargetSection = false; } sb.AppendLine(lineBuf); } } } return sb.ToString(); } public static void WriteFileData(string fileName, string value) { using (StreamWriter sw = new StreamWriter(fileName, false, Encoding.Unicode)) { sw.Write(value); sw.Flush(); sw.Close(); } } public static void WriteRevitIniData(string existFilePath, string templateFilePath) { string directory = Path.GetDirectoryName(existFilePath); if (directory == null) { return; } DirectoryInfo dirInfo = new DirectoryInfo(directory); try { if (dirInfo.Exists) { if (File.Exists(existFilePath)) { string outPut = ReadRevitIniData(existFilePath, templateFilePath); if (!string.IsNullOrEmpty(outPut)) { WriteFileData(existFilePath, outPut); } } } } catch (Exception e) { Console.WriteLine(e); throw; } } } }