优化更新
This commit is contained in:
@@ -1,14 +1,9 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.IO;
|
||||
using System.Reflection;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
using Autodesk.Revit.Attributes;
|
||||
using Autodesk.Revit.DB;
|
||||
using Autodesk.Revit.UI;
|
||||
|
||||
using EPPlus.Core.Extensions;
|
||||
|
||||
@@ -22,92 +17,103 @@ namespace RvAddinTest;
|
||||
[Regeneration(RegenerationOption.Manual)]
|
||||
internal class ReplaceCode : ExternalCommand
|
||||
{
|
||||
public override void Execute()
|
||||
{
|
||||
|
||||
}
|
||||
public override void Execute()
|
||||
{
|
||||
var ids = UiDocument.Selection.GetElementIds();
|
||||
List<ElementId> li = new List<ElementId>();
|
||||
foreach (var id in ids)
|
||||
{
|
||||
var elem = Document.GetElement(id);
|
||||
var param = elem.get_Parameter(BuiltInParameter.DOOR_NUMBER).AsString();
|
||||
if (string.IsNullOrEmpty(param))
|
||||
{
|
||||
li.Add(elem.Id);
|
||||
}
|
||||
}
|
||||
UiDocument.Selection.SetElementIds(li);
|
||||
}
|
||||
|
||||
private void ReadExcel(string path)
|
||||
{
|
||||
FileInfo fi = new(path);
|
||||
using ExcelPackage package = new(fi);
|
||||
var worksheet = package.Workbook.Worksheets[1];
|
||||
////获取worksheet的行数
|
||||
//int rows = worksheet .Dimension.End.Row;
|
||||
////获取worksheet的列数
|
||||
//int cols = worksheet .Dimension.End.Column;
|
||||
//worksheet.TrimLastEmptyRows();
|
||||
private void ReadExcel(string path)
|
||||
{
|
||||
FileInfo fi = new(path);
|
||||
using ExcelPackage package = new(fi);
|
||||
var worksheet = package.Workbook.Worksheets[1];
|
||||
////获取worksheet的行数
|
||||
//int rows = worksheet .Dimension.End.Row;
|
||||
////获取worksheet的列数
|
||||
//int cols = worksheet .Dimension.End.Column;
|
||||
//worksheet.TrimLastEmptyRows();
|
||||
|
||||
AppDomain.CurrentDomain.AssemblyResolve += CurrentDomainOnAssemblyResolve;
|
||||
try
|
||||
{
|
||||
var items = package.ToList<CodeItem>(1, configuration => configuration.SkipCastingErrors());
|
||||
AppDomain.CurrentDomain.AssemblyResolve += CurrentDomainOnAssemblyResolve;
|
||||
try
|
||||
{
|
||||
var items = package.ToList<CodeItem>(1, configuration => configuration.SkipCastingErrors());
|
||||
|
||||
var elems = new FilteredElementCollector(Document)
|
||||
.OfCategory(BuiltInCategory.OST_SecurityDevices)
|
||||
.WhereElementIsNotElementType();
|
||||
StringBuilder sb = new();
|
||||
using var trans = new Transaction(Document, "读取Excel");
|
||||
trans.Start();
|
||||
var elems = new FilteredElementCollector(Document)
|
||||
.OfCategory(BuiltInCategory.OST_SecurityDevices)
|
||||
.WhereElementIsNotElementType();
|
||||
StringBuilder sb = new();
|
||||
using var trans = new Transaction(Document, "读取Excel");
|
||||
trans.Start();
|
||||
|
||||
foreach (var elem in elems)
|
||||
{
|
||||
foreach (var item in items)
|
||||
{
|
||||
var param = elem.GetParameters("ID-100-编号").FirstOrDefault();
|
||||
if (param?.HasValue != true)
|
||||
{
|
||||
sb.AppendLine(elem.Id.ToString());
|
||||
}
|
||||
var param1 = elem.get_Parameter(BuiltInParameter.DOOR_NUMBER);
|
||||
if (param.AsString() == item.Origin)
|
||||
{
|
||||
param1.Set($"{item.Target}");
|
||||
}
|
||||
}
|
||||
}
|
||||
trans.Commit();
|
||||
if (sb.Length > 0)
|
||||
{
|
||||
System.Windows.MessageBox.Show(sb.ToString());
|
||||
}
|
||||
//foreach (ParamterModel eamFacility in Items) { }
|
||||
foreach (var elem in elems)
|
||||
{
|
||||
foreach (var item in items)
|
||||
{
|
||||
var param = elem.GetParameters("ID-100-编号").FirstOrDefault();
|
||||
if (param?.HasValue != true)
|
||||
{
|
||||
sb.AppendLine(elem.Id.ToString());
|
||||
}
|
||||
var param1 = elem.get_Parameter(BuiltInParameter.DOOR_NUMBER);
|
||||
if (param.AsString() == item.Origin)
|
||||
{
|
||||
param1.Set($"{item.Target}");
|
||||
}
|
||||
}
|
||||
}
|
||||
trans.Commit();
|
||||
if (sb.Length > 0)
|
||||
{
|
||||
System.Windows.MessageBox.Show(sb.ToString());
|
||||
}
|
||||
//foreach (ParamterModel eamFacility in Items) { }
|
||||
|
||||
//var groups = Facilities .GroupBy(x => x.Story);
|
||||
//foreach (var group in groups)
|
||||
//{
|
||||
// if (group .Key == null)
|
||||
// {
|
||||
// continue;
|
||||
// }
|
||||
// StoryCodeMappers .Add(new() { Story = group.Key, });
|
||||
//}
|
||||
//var groups = Facilities .GroupBy(x => x.Story);
|
||||
//foreach (var group in groups)
|
||||
//{
|
||||
// if (group .Key == null)
|
||||
// {
|
||||
// continue;
|
||||
// }
|
||||
// StoryCodeMappers .Add(new() { Story = group.Key, });
|
||||
//}
|
||||
|
||||
//IsMapper = false;
|
||||
//IsComparison = false;
|
||||
//Instances .ForEach(ins => ins.IsMapped = false);
|
||||
}
|
||||
catch (EPPlus.Core.Extensions.Exceptions.ExcelValidationException)
|
||||
{
|
||||
System.Windows.MessageBox.Show("列名不存在或不匹配或检查表头是否存在换行。");
|
||||
}
|
||||
finally
|
||||
{
|
||||
AppDomain.CurrentDomain.AssemblyResolve -= CurrentDomainOnAssemblyResolve;
|
||||
}
|
||||
}
|
||||
//IsMapper = false;
|
||||
//IsComparison = false;
|
||||
//Instances .ForEach(ins => ins.IsMapped = false);
|
||||
}
|
||||
catch (EPPlus.Core.Extensions.Exceptions.ExcelValidationException)
|
||||
{
|
||||
System.Windows.MessageBox.Show("列名不存在或不匹配或检查表头是否存在换行。");
|
||||
}
|
||||
finally
|
||||
{
|
||||
AppDomain.CurrentDomain.AssemblyResolve -= CurrentDomainOnAssemblyResolve;
|
||||
}
|
||||
}
|
||||
|
||||
private static Assembly CurrentDomainOnAssemblyResolve(object sender, ResolveEventArgs args)
|
||||
{
|
||||
if (!args.Name.Contains("ComponentModel.Annotations"))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
private static Assembly CurrentDomainOnAssemblyResolve(object sender, ResolveEventArgs args)
|
||||
{
|
||||
if (!args.Name.Contains("ComponentModel.Annotations"))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
var assemblyFile = Path.Combine(
|
||||
Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location),
|
||||
"System.ComponentModel.Annotations.dll"
|
||||
);
|
||||
return File.Exists(assemblyFile) ? Assembly.LoadFrom(assemblyFile) : null;
|
||||
}
|
||||
var assemblyFile = Path.Combine(
|
||||
Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location),
|
||||
"System.ComponentModel.Annotations.dll"
|
||||
);
|
||||
return File.Exists(assemblyFile) ? Assembly.LoadFrom(assemblyFile) : null;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user