123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- /* ==============================================================================
- * 功能描述:RenameSystemName
- * 创 建 者:Garrett
- * 创建日期:2019/6/20 9:11:31
- * ==============================================================================*/
- using System;
- using System.Collections.Generic;
- using System.IO;
- using System.Linq;
- using Autodesk.Revit.DB;
- using Autodesk.Revit.DB.Electrical;
- using SAGA.DotNetUtils.Extend;
- using SAGA.DotNetUtils.NPOI;
- using SAGA.DotNetUtils.Others;
- using SAGA.RevitUtils.Extends;
- namespace Saga.PlugIn.Other
- {
- /// <summary>
- /// RenameSystemName
- /// </summary>
- class RenameSystemName
- {
- private static void OperateFloor(string fullPah, List<Ref_RenameSystem> refRenameSystems)
- {
- var doc= ExternalDataWrapper.Current.UiApp.Application.OpenDocumentFile(fullPah);
- using (Transaction trans = new Transaction(doc, "重命名系统名称"))
- {
- trans.Start();
- try
- {
- var types = doc.GetElements(typeof(MEPSystemType));
- types.AddRange(doc.GetElements(typeof(CableTrayType)));
- foreach (ElementType type in types)
- {
- string typeName = type.Name;
- var refPair=refRenameSystems.FirstOrDefault(t => t.OldName == typeName);
- if (refPair != null)
- {
- type.Name = refPair.NewName;
- }
- }
- trans.Commit();
- }
- catch (Exception e)
- {
- Console.WriteLine(e);
- trans.RollBack();
- }
- }
- }
- public void Operate(string referPath,string revitDir)
- {
- var refPairs = GetReferencePairs(referPath);
- if (!refPairs.Any()) return;
- var list = GetRevitFiles(revitDir);
- if (!list.Any()) return;
- foreach (string fullPath in list)
- {
- OperateFloor(fullPath, refPairs);
- }
- }
- /// <summary>
- /// 获取需要修改的Revit文件
- /// </summary>
- /// <param name="revitDir"></param>
- /// <returns></returns>
- private static List<string> GetRevitFiles(string revitDir)
- {
- DirectoryInfo directory=new DirectoryInfo(revitDir);
- List<string> list=new List<string>();
- try
- {
- list=directory.GetFiles("*.rvt").Where(t=>!t.FullName.Is000File()).Select(t=>t.FullName).ToList();
- }
- catch (Exception e)
- {
- Console.WriteLine(e);
-
- }
- return list;
- }
- /// <summary>
- /// 参考-表
- /// </summary>Sheet1
- [SheetInfo(SheetName = "Sheet1", RowStartIndex = 3)]
- public class Ref_RenameSystem
- {
- [CellIndex(2)]
- public string OldName { get; set; }
- [CellIndex(3)]
- public string NewName { get; set; }
- }
- /// <summary>
- /// 获取可识别的管道系统名称
- /// </summary>
- /// <returns></returns>
- private static List<Ref_RenameSystem> GetReferencePairs(string path)
- {
- var list = NPOIHelper
- .ConvertExcelSheetToModel<Ref_RenameSystem>(path);
- return list;
- }
- }
- }
|