using System; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; using System.Text; using System.Text.RegularExpressions; using System.Windows; using System.Windows.Interop; using System.Windows.Media; using Autodesk.Revit.Attributes; using Autodesk.Revit.DB; using Autodesk.Revit.DB.Architecture; using Autodesk.Revit.DB.Structure; using Autodesk.Revit.UI; using Autodesk.Windows; using Nice3point.Revit.Toolkit.External; //using Szmedi.Toolkit.Assists; namespace Szmedi.Test { [Transaction(TransactionMode.Manual)] internal class RevitAddin : ExternalCommand { public override void Execute() { Array builtInCategories = Enum.GetValues(typeof(BuiltInCategory)); StringBuilder sb = new StringBuilder(); var encoding = Encoding.GetEncoding(936); var str = File.ReadAllText(@"E:\Users\Zhanggg\Downloads\exportlayers-dwg-SZMEDI.txt", encoding); foreach (BuiltInCategory cate in builtInCategories) { try { var name = Enum.GetName(typeof(BuiltInCategory), cate).Remove(0, 4); var category = Document.Settings.Categories.get_Item(cate); //var category = Category.GetCategory(Document, cate); // 使用正则表达式进行全字匹配替换 str = Regex.Replace( str, $@"\b{Regex.Escape(name)}\b", // 自动处理特殊字符 category.Name, RegexOptions.None); // 可选:是否区分大小写 //str = str.Replace(name, category.Name); //if (category != null // && category.CategoryType == CategoryType.FacilityNumber && category.AllowsBoundParameters) //{ // sb.AppendLine($"{category.Name},{Enum.GetName(typeof(BuiltInCategory), cate)},"); //} } catch (Exception) { } } File.WriteAllText(@"E:\Users\Zhanggg\Downloads\exportlayers-dwg-SZMEDI-Result.txt", str, encoding); //LogAssists.WriteTxtFile("内建类别", sb.ToString()); } } }