多项功能优化

This commit is contained in:
GG Z
2024-12-22 10:26:12 +08:00
parent 77655c9ef5
commit 83b846f15f
66 changed files with 5424 additions and 2927 deletions

View File

@@ -3,18 +3,24 @@ using System.Diagnostics;
using System.IO;
using System.Management.Instrumentation;
using System.Text;
using System.Windows;
using Autodesk.Revit.Attributes;
using Autodesk.Revit.DB;
using Autodesk.Revit.DB.Mechanical;
using Autodesk.Revit.DB.Plumbing;
using Autodesk.Revit.UI;
using Autodesk.Revit.UI.Selection;
using eTransmitForRevitDB;
using Microsoft.Win32;
using Nice3point.Revit.Toolkit.External;
using Nice3point.Revit.Toolkit.Utils;
using OfficeOpenXml.FormulaParsing.Excel.Functions.Math;
using Sai.Toolkit.Revit.Assist;
using Sai.Toolkit.Revit.Helpers;
@@ -24,8 +30,86 @@ namespace RvAddinTest;
[Regeneration(RegenerationOption.Manual)]
internal class FluentAddin : ExternalCommand
{
public static bool Purge(Document doc)
{
var eTransmitUpgradeOMatic = new eTransmitUpgradeOMatic(doc.Application);
var result = eTransmitUpgradeOMatic.purgeUnused(doc);
return result == UpgradeFailureType.UpgradeSucceeded;
}
public override void Execute()
{
//var elemIds = Document.OfAllModelElements().Select(e=>e.Id).ToList();
//UiDocument.Selection.SetElementIds(elemIds);
var refer=UiDocument.Selection.PickObject(ObjectType.Element);
var elem=Document.GetElement(refer);
var conn=elem.GetConnectors().Cast<Connector>().Where(c=>c.IsConnected).FirstOrDefault();
var connto = conn.GetConnectedConnector();
Debug.WriteLine("管线:");
Debug.WriteLine(conn.CoordinateSystem.BasisX);
Debug.WriteLine(conn.CoordinateSystem.BasisY);
Debug.WriteLine(conn.CoordinateSystem.BasisZ);
Debug.WriteLine("管件:");
Debug.WriteLine(connto.CoordinateSystem.BasisX);
Debug.WriteLine(connto.CoordinateSystem.BasisY);
Debug.WriteLine(connto.CoordinateSystem.BasisZ);
//StringBuilder sb = new StringBuilder();
//var n = 1;
//foreach (var item in elems)
//{
// sb.Append(n +":"+ item.Name + item.Id.ToString()+"new");
// n++;
//}
//MessageBox.Show(sb.ToString());
//StringBuilder sb = new();
//var regions = Document.OfCollector().OfCategory(BuiltInCategory.OST_DetailComponents).WhereElementIsNotElementType().ToList();
//sb.AppendLine(regions.Count.ToString());
//regions.ToList().ForEach(f => sb.AppendLine($"{f.Id}"));
//MessageBox.Show(sb.ToString());
//UiDocument.Selection.SetElementIds(elements);
#region MyRegion
//OpenFileDialog openFileDialog = new OpenFileDialog() { Multiselect = true, Filter = "Revit文件|*.rvt" };
//if (openFileDialog.ShowDialog() == false)
//{
// return;
//};
//foreach (var file in openFileDialog.FileNames)
//{
// var doc = UiApplication.Application.OpenDocumentFile(file);
// var options = new SaveAsOptions()
// {
// Compact = true,
// OverwriteExistingFile = true,
// MaximumBackups = 3,
// };
// try
// {
// var ids = doc.OfCollector().OfCategory(BuiltInCategory.OST_Lines).Select(e => e.Id).ToList();
// doc.Modify(set => set.Transaction)
// .Commit(
// (doc, t) =>
// {
// doc.Delete(ids);
// });
// for (var i = 0; i < 5; i++)
// {
// Purge(doc);
// }
// //doc.SaveAs(file, options);
// doc.Close(true);
// }
// catch (Exception)
// {
// doc.Close();
// }
//}
//MessageBox.Show("处理完成");
#endregion
//var b = Document.ActiveView.ViewTemplateId == null;
//MessageExtensions.ShowMessage(b.ToString());
//var h = Document.ActiveView
@@ -38,23 +122,25 @@ internal class FluentAddin : ExternalCommand
// )
// .Max(d => d.Height);
//Document.Invoke
OpenFileDialog dialog = new() { Filter = "Revit(*.rvt)|*.rvt", Multiselect = true };
dialog.ShowDialog();
foreach (var item in dialog.FileNames)
{
var sb = new StringBuilder();
sb.AppendLine($"元素ID,族名称,类型名称,标记,");
var doc = Application.OpenDocumentFile(item);
var instances = doc.OfCollector().OfClass(typeof(FamilyInstance)).Cast<FamilyInstance>().Where(e => e.Symbol.FamilyName.Contains("摄像头"));
foreach (var instance in instances)
{
var number = instance.get_Parameter(BuiltInParameter.DOOR_NUMBER);
sb.AppendLine($"{instance.Id},{instance.Symbol.FamilyName},{instance.Name},{number.AsString()},");
}
var filePath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + $"\\{doc.Title}.txt";
File.WriteAllText(filePath, sb.ToString(), Encoding.UTF8);
doc.Close(false);
}
#region RegionName
//OpenFileDialog dialog = new() { Filter = "Revit(*.rvt)|*.rvt", Multiselect = true };
//dialog.ShowDialog();
//foreach (var item in dialog.FileNames)
//{
// var sb = new StringBuilder();
// sb.AppendLine($"元素ID,族名称,类型名称,标记,");
// var doc = Application.OpenDocumentFile(item);
// var instances = doc.OfCollector().OfClass(typeof(FamilyInstance)).Cast<FamilyInstance>().Where(e => e.Symbol.FamilyName.Contains("摄像头"));
// foreach (var instance in instances)
// {
// var number = instance.get_Parameter(BuiltInParameter.DOOR_NUMBER);
// sb.AppendLine($"{instance.Id},{instance.Symbol.FamilyName},{instance.Name},{number.AsString()},");
// }
// var filePath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + $"\\{doc.Title}.txt";
// File.WriteAllText(filePath, sb.ToString(), Encoding.UTF8);
// doc.Close(false);
//}
#endregion
//Document.Modify(set => set.Transaction)
// .Commit(
// (doc, t) =>