添加项目文件。
This commit is contained in:
644
ShrlAlgo.MsAddIns/Commands.cs
Normal file
644
ShrlAlgo.MsAddIns/Commands.cs
Normal file
@@ -0,0 +1,644 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.ObjectModel;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Net.NetworkInformation;
|
||||
using System.Reflection;
|
||||
using System.Text;
|
||||
using System.Windows;
|
||||
using System.Windows.Media.Media3D;
|
||||
|
||||
using Bentley.DgnPlatformNET;
|
||||
using Bentley.DgnPlatformNET.Elements;
|
||||
using Bentley.DgnPlatformNET.SmartFeature;
|
||||
using Bentley.ECObjects.Instance;
|
||||
using Bentley.ECObjects.Schema;
|
||||
using Bentley.GeometryNET;
|
||||
using Bentley.MstnPlatformNET;
|
||||
|
||||
using CenterCurveAddins;
|
||||
|
||||
using CustomOpenItemAddins;
|
||||
|
||||
using Microsoft.Win32;
|
||||
|
||||
using Mstn.Toolkit.Extensions;
|
||||
using Mstn.Toolkit.External;
|
||||
using Mstn.Toolkit.Helpers;
|
||||
|
||||
using Newtonsoft.Json;
|
||||
|
||||
using QuickModeling;
|
||||
using QuickModeling.Models;
|
||||
using QuickModeling.ViewModels;
|
||||
using QuickModeling.Views;
|
||||
|
||||
using TunnelZYJSCSAddins;
|
||||
|
||||
using ZYJSCSMsAddins;
|
||||
|
||||
|
||||
//using static Bentley.DgnPlatformNET.DropGeometry;
|
||||
|
||||
//using MstnMixedAssistant;
|
||||
|
||||
namespace ShrlAlgo.MsAddIns
|
||||
{
|
||||
internal class Commands
|
||||
{
|
||||
public static Element Union(List<Element> elements)
|
||||
{
|
||||
var dgnModel = Session.Instance.GetActiveDgnModel();
|
||||
Element resultElem = default;
|
||||
SolidKernelEntity target = default;
|
||||
List<SolidKernelEntity> solidKernels = new List<SolidKernelEntity>();
|
||||
foreach (Element elem in elements)
|
||||
{
|
||||
resultElem = elem;
|
||||
var status = Convert1.ElementToBody(out var entity, elem, true, false, false);
|
||||
|
||||
if (status == BentleyStatus.Success)
|
||||
{
|
||||
solidKernels.Add(entity);
|
||||
target = entity;
|
||||
}
|
||||
}
|
||||
try
|
||||
{
|
||||
var array = solidKernels.ToArray();
|
||||
var status = Modify.BooleanUnion(ref target, ref array, 1);
|
||||
if (status == BentleyStatus.Success)
|
||||
{
|
||||
Convert1.BodyToElement(out resultElem, target, null, dgnModel);
|
||||
resultElem.AddToModel();
|
||||
}
|
||||
else
|
||||
{
|
||||
MessageCenter.Instance.ShowInfoMessage("合并实体失败", $"", false);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageCenter.Instance.ShowInfoMessage("异常", $"{ex.Message}", false);
|
||||
}
|
||||
return resultElem;
|
||||
}
|
||||
private static Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
|
||||
{
|
||||
var assemblyName = new AssemblyName(args.Name).Name;
|
||||
var assemblyPath = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), $"{assemblyName}.dll");
|
||||
if (File.Exists(assemblyPath))
|
||||
{
|
||||
return Assembly.LoadFrom(assemblyPath);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
/// <summary>
|
||||
/// 修改单位和数值
|
||||
/// </summary>
|
||||
/// <param name="elem"></param>
|
||||
private static void ModifyUnit(Element elem)
|
||||
{
|
||||
var dgnFile = Session.Instance.GetActiveDgnFile();
|
||||
|
||||
var host = new CustomItemHost(elem, false).CustomItems;
|
||||
|
||||
foreach (var instance in host)
|
||||
{
|
||||
var ecClass = instance.ClassDefinition;
|
||||
var label = ecClass.DisplayLabel;
|
||||
var lib = ecClass.Schema;
|
||||
var libLabel = lib.DisplayLabel;
|
||||
ItemTypeLibrary itemTypeLibrary = ItemTypeLibrary.FindByName(libLabel, dgnFile);
|
||||
var itemType = itemTypeLibrary.GetItemTypeByName(label);
|
||||
if (instance.ContainsValues)
|
||||
{
|
||||
foreach (var propValue in instance)
|
||||
{
|
||||
if (propValue.TryGetNativeValue(out var value))
|
||||
{
|
||||
|
||||
var prop = propValue.Property;
|
||||
var propDefin = itemType.GetPropertyByName(prop.Name);
|
||||
var units = propDefin.Units;
|
||||
if (units.ECUnitName == "MILLIMETRE")
|
||||
{
|
||||
instance.SetValue(prop.DisplayLabel, propValue.DoubleValue / 1000.0);
|
||||
propDefin.Units = new DgnECUnit("METRE");
|
||||
itemType.Library.Write();
|
||||
|
||||
instance.WriteChanges();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// 通过属性名设置属性值,多个同名属性会同时设置
|
||||
/// </summary>
|
||||
/// <param name="elem">元素</param>
|
||||
/// <param name="propName">属性名</param>
|
||||
/// <returns></returns>
|
||||
private static void SetECPropertyValues(Element elem, string propName, object value)
|
||||
{
|
||||
var instances = new CustomItemHost(elem, false).CustomItems;
|
||||
try
|
||||
{
|
||||
foreach (var instance in instances)
|
||||
{
|
||||
instance.SetValue(propName, value);
|
||||
instance.WriteChanges();
|
||||
}
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
}
|
||||
}
|
||||
public static void Command(string unparsed)
|
||||
{
|
||||
//RingPlacementAddin.Commands.PlaceRings(string.Empty);
|
||||
//return;
|
||||
//long elementId = Convert.ToInt64(3159);
|
||||
//var elem = Session.Instance.GetActiveDgnModel().FindElementById(new ElementId(ref elementId));
|
||||
//var tran1 = DTransform3d.Rotation(0, Angle.FromDegrees(0.53));
|
||||
//var tran2 = DTransform3d.Rotation(1, Angle.FromDegrees(149));
|
||||
//var tran3 = DTransform3d.Rotation(2, Angle.FromDegrees(-179));
|
||||
//var d1 = DTransform3d.Multiply(tran2, tran3);
|
||||
//var d2 = DTransform3d.Multiply(tran1, d1);
|
||||
//var d1 = DTransform3d.Multiply(tran2, tran1);
|
||||
//var d2 = DTransform3d.Multiply(tran3, d1);
|
||||
|
||||
//return;
|
||||
|
||||
#if false
|
||||
OpenFileDialog dialog = new OpenFileDialog()
|
||||
{
|
||||
Filter = "管环定位配置 (*.json)|*.json",
|
||||
Title = "打开文件",
|
||||
Multiselect = false,
|
||||
InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Desktop)
|
||||
};
|
||||
if (dialog.ShowDialog() == true)
|
||||
{
|
||||
var jsonFilePath = dialog.FileName;
|
||||
try
|
||||
{
|
||||
RingInfoList rings = RingInfoReader.Read(jsonFilePath);
|
||||
var dir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
|
||||
var cellPath = Path.Combine(dir, "Cell", "Ring.cel");
|
||||
if (!File.Exists(cellPath))
|
||||
{
|
||||
MessageBox.Show($"单元库文件不存在:{cellPath}", "错误", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||
return;
|
||||
}
|
||||
//DTransform3d trans = DTransform3d.Identity;
|
||||
//trans.Translation = new DVector3d(100000, 200000, 300000);
|
||||
//var ts = DTransform3d.Rotation(DVector3d.FromXYZ(1000, 0, 0), Angle.PI * 0.25);
|
||||
//var ts1 = DTransform3d.Multiply(ts, trans);
|
||||
//var matrix3d = ts1.Matrix;
|
||||
//var de = matrix3d.Determinant();
|
||||
//var rigid = matrix3d.IsRigid();//刚性
|
||||
//var diagonal = matrix3d.IsDiagonal();//对角线
|
||||
//var orthogonal = matrix3d.IsOrthogonal();//正交
|
||||
//var uniform = matrix3d.IsUniformScale(out var max);
|
||||
//var rigidWithScale = matrix3d.IsRigidWithScale(out var maxtric, out var s);
|
||||
double uorMeter = Session.Instance.GetActiveDgnModel().GetModelInfo().UorPerMeter;
|
||||
Dictionary<string, object> parameters = new()
|
||||
{
|
||||
{ "管片宽度", 1.2}, //转换为米
|
||||
};
|
||||
//CellHelpers.ImportParametricCellElement(cellPath, "管环", ts1);
|
||||
//return;
|
||||
foreach (var ring in rings.Rings)
|
||||
{
|
||||
//var b1 = ring.Transform3d.IsDiagonal();
|
||||
//DTransform3d trans = DTransform3d.Identity;
|
||||
//trans.Translation = ring.Transform3d.Translation; //UOR unit
|
||||
|
||||
CellHelper.ImportParametricCellElement(cellPath, "管环", ring.Transform3d, parameters);
|
||||
}
|
||||
//CellHelpers.AttachCellLib(cellPath);
|
||||
|
||||
//foreach (var ring in rings.Rings)
|
||||
//{
|
||||
// CellHelpers.CreateParametricCell("管环", null, ring.Transform3d);
|
||||
//}
|
||||
//CellHelpers.DetachCellLibs();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show(ex.Message);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return;
|
||||
#endif
|
||||
//var agenda = new ElementAgenda();
|
||||
//SelectionSetManager.BuildAgenda(ref agenda);
|
||||
//var element = agenda.GetFirst();
|
||||
|
||||
#if False
|
||||
AppDomain.CurrentDomain.AssemblyResolve -= CurrentDomain_AssemblyResolve;
|
||||
AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve;
|
||||
try
|
||||
{
|
||||
|
||||
ConfigurationPropsAttachView attachView = new ConfigurationPropsAttachView();
|
||||
//让窗口始终在应用程序顶部
|
||||
attachView.Owner = Application.Current.MainWindow;
|
||||
attachView.DataContext = new ConfigurationPropsAttachViewModel();
|
||||
attachView.Show();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show(ex.Message);
|
||||
}
|
||||
//finally
|
||||
//{
|
||||
// AppDomain.CurrentDomain.AssemblyResolve -= CurrentDomain_AssemblyResolve;
|
||||
//}
|
||||
return;
|
||||
#endif
|
||||
|
||||
//JsonConvert.SerializeObject(configs, Formatting.Indented);
|
||||
//return;
|
||||
|
||||
#if false
|
||||
|
||||
//OpenFileDialog openFileDialog = new OpenFileDialog
|
||||
//{
|
||||
// Filter = "DGN Files (*.dgn)|*.dgn|All Files (*.*)|*.*",
|
||||
// Title = "选择DGN文件"
|
||||
//};
|
||||
//if (openFileDialog.ShowDialog() == true)
|
||||
//{
|
||||
// string filePath = openFileDialog.FileName;
|
||||
// var schema = SchemaHelpers.DefineECSchemaFromXml(filePath);
|
||||
// SchemaHelpers.ImportSchema(schema);
|
||||
//}
|
||||
AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve;
|
||||
ConfigurationPropsAttachView view = new();
|
||||
view.Show();
|
||||
AppDomain.CurrentDomain.AssemblyResolve -= CurrentDomain_AssemblyResolve;
|
||||
|
||||
return;
|
||||
|
||||
#endif
|
||||
|
||||
#if false
|
||||
var cs = ZYJSCSHelpers.GetDataByLevelName("JG_ZYJSCS");
|
||||
StringBuilder sb = new StringBuilder();
|
||||
foreach (var model in cs)
|
||||
{
|
||||
sb.AppendLine($"{model.Name},{model.Measurement},{model.Result}");
|
||||
}
|
||||
MessageBox.Show(sb.ToString());
|
||||
|
||||
return;
|
||||
#endif
|
||||
//List<Element> elements = GetSelectedElements();
|
||||
//中线
|
||||
#if true
|
||||
StringBuilder sb = new StringBuilder();
|
||||
//var dgnModel = Session.Instance.GetActiveDgnModel();
|
||||
//var elements = dgnModel.GetElements().Where(e => e is not MeshHeaderElement && e.GetLevel().DisplayName == "JG_ZYJSCS").ToList();
|
||||
//var resultelement = Union(elements);
|
||||
//var volume = CustomOpenItemHelpers.GetPropertiesByName(resultelement, "Volume")?.FirstOrDefault();
|
||||
//if (volume != null)
|
||||
//{
|
||||
// var uorMeter = dgnModel.GetModelInfo().UorPerMeter;
|
||||
// volume.TryGetNativeValue(out var value);
|
||||
// double d = Convert.ToDouble(value) / (uorMeter * uorMeter * uorMeter);
|
||||
//}
|
||||
|
||||
Dictionary<Element, double> dic = TunnelLengthHelper.GetMeshProjectLength("XL_ZXX");
|
||||
var total = 0.0;
|
||||
string str = string.Empty;
|
||||
try
|
||||
{
|
||||
int n = 0;
|
||||
foreach (var item in dic)
|
||||
{
|
||||
sb.AppendLine($"{n + 1} 元素ID:{item.Key.ElementId}--投影长度:{item.Value}");
|
||||
n++;
|
||||
total += item.Value;
|
||||
str += item.Key.ElementId + ";";
|
||||
}
|
||||
//MessageBox.Show(sb.ToString());
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
|
||||
throw;
|
||||
}
|
||||
sb.AppendLine($"合计:{total}");
|
||||
sb.AppendLine(str);
|
||||
MessageBox.Show(sb.ToString());
|
||||
return;
|
||||
#endif
|
||||
#if false
|
||||
DgnModelRef dgnModelRef = Session.Instance.GetActiveDgnModelRef();
|
||||
StringBuilder sb = new StringBuilder();
|
||||
//dgnModel.GetLevelCache().GetLevelByName("JG_ZYJSCS");
|
||||
try
|
||||
{
|
||||
var dict1 = CustomOpenItemHelpers.GetCutstomItemByLevelName("JG_ZYJSCS");
|
||||
var dict = TunnelZYJSCSHelpers.GetDataByLevelName("JG_ZYJSCS");
|
||||
var v = dict.Values.FirstOrDefault(item => !string.IsNullOrEmpty(item.Formula));
|
||||
foreach (var item in dict)
|
||||
{
|
||||
sb.AppendLine($"{item.Key}:{item.Value}");
|
||||
}
|
||||
LogHelper.WriteLine(sb.ToString());
|
||||
var result = v?.Result;
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
|
||||
}
|
||||
return;
|
||||
#endif
|
||||
|
||||
//获取当前选择的元素集
|
||||
//var agenda = new ElementAgenda();
|
||||
//SelectionSetManager.BuildAgenda(ref agenda);
|
||||
|
||||
//var element = agenda.GetFirst();
|
||||
////var elementId = long.Parse("65256");
|
||||
////var element = dgnModel.FindElementById(new ElementId(ref elementId));
|
||||
//var value = element.GetProperyValues("Volume").FirstOrDefault();
|
||||
//var val = element.GetProperyValues("体积").FirstOrDefault();
|
||||
|
||||
|
||||
SelectElementTest();
|
||||
|
||||
//CustomTool.InstallNewTool();
|
||||
//UserPickTool.Setup(e => true, e =>
|
||||
//{
|
||||
// StringBuilder sb = new();
|
||||
// for (uint i = 0; i < e.GetCount(); i++)
|
||||
// {
|
||||
// var elem = e.GetEntry(i);
|
||||
// var host = new CustomItemHost(elem, false);
|
||||
// var instances = host.CustomItems;
|
||||
// //host.CopyCustomItems(host.CustomItems, false);
|
||||
// foreach (var lib in instances)
|
||||
// {
|
||||
// var str = lib.GetType().FullName;
|
||||
// }
|
||||
// //elem.AttachItemType()
|
||||
// }
|
||||
//});
|
||||
|
||||
//var data = ZYJSCSHelpers.GetCutstomItemLevelName("JG_ZYJSCS");
|
||||
//var path = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "算量.txt");
|
||||
|
||||
//foreach (var model in data)
|
||||
//{
|
||||
// //SharedCellElement
|
||||
// //sb.AppendLine($"{model.Name}-{model.MeasurementStr}-{model.Result}");
|
||||
// //var d = model.Result;
|
||||
// //var str = model.Message?.ToString();
|
||||
// File.AppendAllText(path, $"{model.Name}-{model.MeasurementStr}-{model.Result}\n");
|
||||
//}
|
||||
return;
|
||||
|
||||
#if false
|
||||
UserPickTool.Setup(
|
||||
e => true,
|
||||
e =>
|
||||
{
|
||||
for (uint i = 0; i < e.GetCount(); i++)
|
||||
{
|
||||
var elem = e.GetEntry(i);
|
||||
var count = elem.GetChildren();
|
||||
ChildElementEnumerator enumeratorPro = new ChildElementEnumerator(elem);
|
||||
List<Element> childElementsPro = new List<Element>();
|
||||
while (enumeratorPro.MoveNext())
|
||||
{
|
||||
if (enumeratorPro.Current != null)
|
||||
{
|
||||
childElementsPro.Add(enumeratorPro.Current);
|
||||
}
|
||||
}
|
||||
DgnModel dgnModel = Session.Instance.GetActiveDgnModel();
|
||||
//var items = dgnModel.GetGraphicElements();
|
||||
//var filters = items.Where(e => e.ParentElement.ElementId == elem.ElementId);
|
||||
//GraphicProcessor process = new GraphicProcessor();
|
||||
if (elem is ExtendedElementElement extended)
|
||||
{
|
||||
var list = extended.GetChildren();
|
||||
SolidKernelEntity entity = null;
|
||||
Element newElement = null;
|
||||
var status = SmartFeatureUtil.GetSolidKernelEntity(ref entity, elem);
|
||||
if (SmartFeatureElement.IsSmartFeature(elem))
|
||||
{
|
||||
|
||||
var c = SmartFeatureElement.GetSmartFeatureDependentCount(extended);
|
||||
try
|
||||
{
|
||||
var statusInt = SmartFeatureElement.GetOrCreateSmartFeature(
|
||||
ref newElement,
|
||||
null,
|
||||
dgnModel,
|
||||
elem,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true);
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
//ElementGraphicsOutput.Process(elem, process);
|
||||
}
|
||||
});
|
||||
|
||||
UserPickTool.Setup(
|
||||
e => e is MeshHeaderElement,
|
||||
a =>
|
||||
{
|
||||
for (uint i = 0; i < a.GetCount(); i++)
|
||||
{
|
||||
//long l = Convert.ToInt32(unparsed);
|
||||
//var id = new ElementId(ref l);
|
||||
//var elem = dgnModel.FindElementById(id);
|
||||
|
||||
var elem = a.GetEntry(i) as MeshHeaderElement;
|
||||
//int[] iArrMeshDivide = { };//元素id
|
||||
|
||||
//bool bRet = ClrCode.GeneralToolClr.DivideMesh(elem.ElementId.GetHashCode(), ref iArrMeshDivide);
|
||||
//if (bRet && iArrMeshDivide.Count() > 0)
|
||||
//{
|
||||
// var sb = new StringBuilder();
|
||||
// int n = 1;
|
||||
// foreach (var iEle in iArrMeshDivide)
|
||||
// {
|
||||
// ulong lEle = (ulong)iEle;
|
||||
// var id = new ElementId(ref lEle);
|
||||
// var elemSub = Session.Instance.GetActiveDgnModel().FindElementById(id);
|
||||
// //sb = elem.ReadAllProperties();
|
||||
// sb.AppendLine(
|
||||
// $"{n}、图层ID:{elem.LevelId},图层:{elem.GetLevel().DisplayName},元素ID:{elem.ElementId},元素类型名称:{elemSub.TypeName},元素描述:{elem.Description},元素类型:{elem.ElementType}\n");
|
||||
// File.WriteAllText(
|
||||
// Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "元素集.txt"),
|
||||
// sb.ToString());
|
||||
// }
|
||||
//}
|
||||
try
|
||||
{
|
||||
|
||||
//var pots = TunnelLengthHelper.GetBoundariesFromMeshByProject(elem);
|
||||
|
||||
|
||||
//ElementCreationHelpers.CreateShape(pots.ToArray());
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageCenter.Instance.ShowInfoMessage(ex.Message, ex.StackTrace, false);
|
||||
}
|
||||
|
||||
}
|
||||
});
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
private static void SelectElementTest()
|
||||
{
|
||||
UserPickTool.Setup(e => true, e =>
|
||||
{
|
||||
List<Element> elems = new List<Element>();
|
||||
//StringBuilder sb = new();
|
||||
for (uint i = 0; i < e.GetCount(); i++)
|
||||
{
|
||||
var elem = e.GetEntry(i);
|
||||
elems.Add(elem);
|
||||
|
||||
//ModifyUnit(elem);
|
||||
//var count = elem.GetChildren();
|
||||
|
||||
//if (elem is SharedCellElement sharedCell)
|
||||
//{
|
||||
// DropGeometry geom = new DropGeometry();
|
||||
// geom.SetOptions(DropGeometry.Options.OPTION_SharedCells);
|
||||
// geom.SetSharedCellOptions(DropGeometry.SharedCells.SHAREDCELL_Geometry);
|
||||
// ElementAgenda agenda = new ElementAgenda();
|
||||
// var status = MstnMixedAssistant.ElementOperation.DropElement(elem, out agenda, geom);
|
||||
// if (status == StatusInt.Success)
|
||||
// {
|
||||
// for (uint j = 0; j < agenda.GetCount(); j++)
|
||||
// {
|
||||
// var elem = agenda.GetEntry(j);
|
||||
// }
|
||||
// }
|
||||
// //var definition = sharedCell.GetDefinition(Session.Instance.GetActiveDgnFile());
|
||||
// //foreach (var child in definition.GetChildren())
|
||||
// //{
|
||||
// //}
|
||||
//}
|
||||
|
||||
//var l = elem.GetLevel().DisplayName;
|
||||
//MessageBox.Show(l);
|
||||
|
||||
//sb.AppendLine($"Id:{elem.ElementId}");
|
||||
//sb.AppendLine($"Type:{elem.GetType().FullName}");
|
||||
//sb.AppendLine($"ElementType:{elem.ElementType}");
|
||||
//sb.AppendLine($"Description:{elem.Description}");
|
||||
//elem.ReadAllProperties();
|
||||
}
|
||||
var groups = elems.GroupBy(e => e.GetProperyValues("土岩分类").FirstOrDefault().StringValue);
|
||||
var list = new Dictionary<string, string>();
|
||||
StringBuilder sb = new StringBuilder();
|
||||
|
||||
foreach (var g in groups)
|
||||
{
|
||||
sb.AppendLine(g.Key);
|
||||
double volume = 0;
|
||||
foreach (var elem in g)
|
||||
{
|
||||
var temp = elem.GetProperyValues("Volume").FirstOrDefault().DoubleValue / (Session.Instance.GetActiveDgnModel().GetModelInfo().UorPerMeter * Session.Instance.GetActiveDgnModel().GetModelInfo().UorPerMeter * Session.Instance.GetActiveDgnModel().GetModelInfo().UorPerMeter);
|
||||
volume += temp;
|
||||
sb.AppendLine($"元素ID:{elem.ElementId}--元素描述:{elem.Description}--体积:{temp}");
|
||||
//list.Add(g.Key + volume, );
|
||||
}
|
||||
sb.AppendLine($"总体积:{volume}");
|
||||
}
|
||||
//foreach (var item in list)
|
||||
//{
|
||||
// sb.AppendLine($"{item.Key}");
|
||||
|
||||
// foreach (var el in item.Value)
|
||||
// {
|
||||
// sb.AppendLine($"{el.ElementId}");
|
||||
// }
|
||||
//}
|
||||
MessageBox.Show(sb.ToString());
|
||||
});
|
||||
}
|
||||
|
||||
private static void ExportItemTypeToJson()
|
||||
{
|
||||
var libs = QuickModeling.ItemTypesHelpers.GetItemTypeLibraries();
|
||||
var configs = new List<ComponentConfig>();
|
||||
AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve;
|
||||
try
|
||||
{
|
||||
foreach (var lib in libs)
|
||||
{
|
||||
ComponentConfig config = new ComponentConfig()
|
||||
{
|
||||
ComponentType = ComponentType.SegmentRing,
|
||||
Guid = Guid.NewGuid(),
|
||||
Name = lib.Name,
|
||||
};
|
||||
|
||||
config.Parameters = new ObservableCollection<Parameter>();
|
||||
//通过Ascii判断是否是英文字母开头
|
||||
char firstChar = lib.Name[0];
|
||||
if ((firstChar < 'A' || firstChar > 'Z') && (firstChar < 'a' || firstChar > 'z'))
|
||||
{
|
||||
foreach (var item in lib.ItemTypes)
|
||||
{
|
||||
|
||||
var props = QuickModeling.ItemTypesHelpers.GetProperties(item);
|
||||
foreach (var prop in props)
|
||||
{
|
||||
Parameter paramter = new Parameter()
|
||||
{
|
||||
Group = item.Name,
|
||||
Name = prop.Name,
|
||||
DataType = (TypeKind)prop.Type,
|
||||
Value = prop.DefaultValue,
|
||||
};
|
||||
config.Parameters.Add(paramter);
|
||||
}
|
||||
}
|
||||
}
|
||||
configs.Add(config);
|
||||
}
|
||||
var jsonStr = JsonConvert.SerializeObject(configs, Formatting.Indented);
|
||||
string path = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "Configs", "Configurations.json");
|
||||
if (!File.Exists(path))
|
||||
{
|
||||
File.Create(path).Close();
|
||||
}
|
||||
File.WriteAllText(path, jsonStr);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show(ex.Message);
|
||||
}
|
||||
AppDomain.CurrentDomain.AssemblyResolve -= CurrentDomain_AssemblyResolve;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user