Files
SzmediTools/Szmedi.Test/RevitAddin.cs
2026-02-23 11:21:51 +08:00

69 lines
2.3 KiB
C#

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());
}
}
}