From e358beb08f5be49703009b64f058ecfbcfeefbd9 Mon Sep 17 00:00:00 2001 From: qin <a@163.com> Date: 星期六, 28 九月 2024 14:27:52 +0800 Subject: [PATCH] 测试standard2.1 --- HStation.RevitDev/RevitDataExport/Forms/Form_SystemSelect.cs | 951 +++++++++++++++++++++++++++++----------------------------- 1 files changed, 476 insertions(+), 475 deletions(-) diff --git a/HStation.RevitDev/RevitDataExport/Forms/Form_SystemSelect.cs b/HStation.RevitDev/RevitDataExport/Forms/Form_SystemSelect.cs index 7a0ae05..1216e44 100644 --- a/HStation.RevitDev/RevitDataExport/Forms/Form_SystemSelect.cs +++ b/HStation.RevitDev/RevitDataExport/Forms/Form_SystemSelect.cs @@ -1,477 +1,478 @@ -锘縰sing Autodesk.Revit.DB; -using Autodesk.Revit.DB.Plumbing; -using Autodesk.Revit.UI; -using Glodon.Revit.Utility; -using Hydro.Core.Model; -using Hydro.Revit; -using Hydro.Revit.Model; -using HStation.RevitDev.RevitDataExport.Common; -using HStation.RevitDev.RevitDataExport.Service; -using HStation.RevitDev.RevitDataExport.Utility; -using HStation.RevitDev.RevitDataExport.Common; -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.IO; -using System.Linq; -using System.Threading.Tasks; -using System.Windows.Controls; -using System.Windows.Forms; -using static Hydro.Core.ObjectEnum; - -namespace HStation.RevitDev.RevitDataExport.Forms -{ - public partial class Form_SystemSelect : System.Windows.Forms.Form - { - private UIDocument _uiDocument; - private Document _doc; - private ExternalCommandData _data; - private ItemCheckEventArgs _itemCheck; - public RevitNetWork _revitNetWork; - - public Form_SystemSelect(ExternalCommandData data) - { - _data = data; - _uiDocument = data.Application.ActiveUIDocument; - _doc = _uiDocument.Document; - InitializeComponent(); - } - - private void SystemSelect_Load(object sender, System.EventArgs e) - { - InitControlsData(); - } - - private void InitControlsData() - { - InitMepSystemComboBox(); - InitMepSystemCheckListBox(); - InitDataGridViewStyle(); - InitDataGridViewEvent(); - } - - private void InitMepSystemCheckListBox() - { - this.checkedListBox_systemType.Items.Clear(); - var systemTypes = RevitMepSystemService.GetSystemTypeList(_doc).ToList(); - systemTypes = systemTypes.FindAll(x => x.GetDependentElements(new ElementClassFilter(typeof(PipingSystem), false)).Count != 0); - if (systemTypes != null && systemTypes.Count > 0) - { - this.checkedListBox_systemType.DataSource = systemTypes; - this.checkedListBox_systemType.DisplayMember = "Name"; - this.checkedListBox_systemType.SelectedIndex = 0; - } - this.checkedListBox_systemType.SelectedIndex = -1; - } - - private void InitDataGridViewStyle() - { - var pages = this.pageContainer.TabPages; - foreach (TabPage page in pages) - { - foreach (var subControl in page.Controls) - { - if (subControl is DataGridView dgv) - { - dgv.AllowUserToResizeRows = false; - } - } - } - } - - private void InitDataGridViewEvent() - { - var dgvs = new List<DataGridView>(); - var pages = this.pageContainer.TabPages; - foreach (TabPage page in pages) - { - foreach (var subControl in page.Controls) - { - if (subControl is DataGridView dgv) - { - dgvs.Add(dgv); - dgv.CellClick += Dgv_CellClick; - //dgv.CellContentDoubleClick += Dgv_DoubleCellClick; - } - } - } - } - - private void Dgv_DoubleCellClick(object sender, DataGridViewCellEventArgs e) - { - var dgv = sender as DataGridView; - var rowIndex = e.RowIndex; - var columnIndex = e.ColumnIndex; - var cell = dgv[columnIndex, rowIndex]; - - if (cell.Value == null) { return; } - var view = Set3DView(); - if (view == null) { return; } - - var cellText = cell.Value.ToString(); - if (dgv.Columns[columnIndex].HeaderText == "ID" || - dgv.Columns[columnIndex].HeaderText.Contains("杩炴帴鐐�")) - { - var idContent = cellText.Split(':')?.Last(); - if (string.IsNullOrEmpty(idContent)) { return; } - if (int.TryParse(idContent, out int id)) - { - var elementId = new ElementId(id); - var ids = new List<ElementId> { elementId }; - view.Select(_uiDocument, ids); - view.OnlyShow(ids); - view.Zoom(_uiDocument, ids); - } - } - } - - private void Dgv_CellClick(object sender, DataGridViewCellEventArgs e) - { - var dgv = sender as DataGridView; - var rowIndex = e.RowIndex; - var columnIndex = e.ColumnIndex; - var cell = dgv[columnIndex, rowIndex]; - - if (cell.Value == null) { return; } +锘縰sing Autodesk.Revit.DB; +using Autodesk.Revit.DB.Plumbing; +using Autodesk.Revit.UI; +using Glodon.Revit.Utility; +using Hydro.Core.Model; +using Hydro.Revit; +using Hydro.Revit.Model; +using HStation.RevitDev.RevitDataExport.Common; +using HStation.RevitDev.RevitDataExport.Service; +using HStation.RevitDev.RevitDataExport.Utility; +using HStation.RevitDev.RevitDataExport.Common; +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.IO; +using System.Linq; +using System.Threading.Tasks; +using System.Windows.Controls; +using System.Windows.Forms; +using static Hydro.Core.ObjectEnum; +using Hydro.CommonBase; + +namespace HStation.RevitDev.RevitDataExport.Forms +{ + public partial class Form_SystemSelect : System.Windows.Forms.Form + { + private UIDocument _uiDocument; + private Document _doc; + private ExternalCommandData _data; + private ItemCheckEventArgs _itemCheck; + public RevitNetWork _revitNetWork; + + public Form_SystemSelect(ExternalCommandData data) + { + _data = data; + _uiDocument = data.Application.ActiveUIDocument; + _doc = _uiDocument.Document; + InitializeComponent(); + } + + private void SystemSelect_Load(object sender, System.EventArgs e) + { + InitControlsData(); + } + + private void InitControlsData() + { + InitMepSystemComboBox(); + InitMepSystemCheckListBox(); + InitDataGridViewStyle(); + InitDataGridViewEvent(); + } + + private void InitMepSystemCheckListBox() + { + this.checkedListBox_systemType.Items.Clear(); + var systemTypes = RevitMepSystemService.GetSystemTypeList(_doc).ToList(); + systemTypes = systemTypes.FindAll(x => x.GetDependentElements(new ElementClassFilter(typeof(PipingSystem), false)).Count != 0); + if (systemTypes != null && systemTypes.Count > 0) + { + this.checkedListBox_systemType.DataSource = systemTypes; + this.checkedListBox_systemType.DisplayMember = "Name"; + this.checkedListBox_systemType.SelectedIndex = 0; + } + this.checkedListBox_systemType.SelectedIndex = -1; + } + + private void InitDataGridViewStyle() + { + var pages = this.pageContainer.TabPages; + foreach (TabPage page in pages) + { + foreach (var subControl in page.Controls) + { + if (subControl is DataGridView dgv) + { + dgv.AllowUserToResizeRows = false; + } + } + } + } + + private void InitDataGridViewEvent() + { + var dgvs = new List<DataGridView>(); + var pages = this.pageContainer.TabPages; + foreach (TabPage page in pages) + { + foreach (var subControl in page.Controls) + { + if (subControl is DataGridView dgv) + { + dgvs.Add(dgv); + dgv.CellClick += Dgv_CellClick; + //dgv.CellContentDoubleClick += Dgv_DoubleCellClick; + } + } + } + } + + private void Dgv_DoubleCellClick(object sender, DataGridViewCellEventArgs e) + { + var dgv = sender as DataGridView; + var rowIndex = e.RowIndex; + var columnIndex = e.ColumnIndex; + var cell = dgv[columnIndex, rowIndex]; + + if (cell.Value == null) { return; } var view = Set3DView(); - if (view == null) { return; } - - - var cellText = cell.Value.ToString(); - if (dgv.Columns[columnIndex].HeaderText == "ID" || - dgv.Columns[columnIndex].HeaderText.Contains("杩炴帴鐐�")) - { - var idContent = cellText.Split(':')?.Last(); - if (string.IsNullOrEmpty(idContent)) { return; } - if (int.TryParse(idContent, out int id)) - { - var elementId = new ElementId(id); - var ids = new List<ElementId> { elementId }; - view.Select(_uiDocument, ids); - } - } - } - - private void InitMepSystemComboBox() - { - //this.comboBox1.Items.Clear(); - //var systems = RevitMepSystemService.GetSystemList(_doc).ToList(); - //systems = systems.FindAll(x => x is PipingSystem); - //if (systems != null && systems.Count > 0) - //{ - // this.comboBox1.DataSource = systems; - // this.comboBox1.DisplayMember = "Name"; - // this.comboBox1.SelectedIndex = 0; - //} - //this.comboBox1.SelectedIndex = -1; - } - - private View3D Set3DView() - { - var view3d = ViewHelper.Get3dView(_doc); - if (view3d == null) { return null; } - _uiDocument.ActiveView = view3d; - return view3d; - } - - private List<Tuple<string, string>> PostProcessing(Dictionary<string, List<Element>> groupElems, List<Tuple<string, string>> properties) - { - var result = new List<Tuple<string, string>>(); - foreach (var prop in properties) - { - if (!prop.Item1.Contains("杩炴帴鐐�")) - { - result.Add(prop); - continue; - } - bool findGroupName = false; - foreach (var group in groupElems) - { - if (group.Value.Any(x => x.Id.IntegerValue.ToString() == prop.Item2)) - { - result.Add(new Tuple<string, string>(prop.Item1, /*group.Key + ":" +*/ prop.Item2)); - findGroupName = true; - break; - } - } - if (!findGroupName) - { - result.Add(new Tuple<string, string>(prop.Item1, prop.Item2)); - } - } - - return result; - } - - private void FillRow(DataGridView dgv, List<Tuple<string, string>> properties, ref int elemIndex) - { - properties.Insert(0, new Tuple<string, string>("搴忓彿", (++elemIndex).ToString())); - var newRowIndex = dgv.Rows.Add(); - for (var i = 0; i < dgv.ColumnCount; i++) - { - var cell = dgv.Rows[newRowIndex].Cells[i]; - var hd = dgv.Columns[cell.ColumnIndex].HeaderText; - var p = properties.Where(c => c.Item1.Equals(hd)).FirstOrDefault(); - if (p != null) - { - cell.Value = p.Item2?.ToString(); - } - } - } - - - private void FillDataGridView(Dictionary<string, List<Element>> groupElems) - { - foreach (TabPage page in this.pageContainer.TabPages) - //for (var i = 0; i < this.pageContainer.TabPages.Count - 1; i++) - { - var t = new Task(() => - { - //var page = this.pageContainer.TabPages[i]; - - string str = ""; - - Stopwatch sw = Stopwatch.StartNew(); - sw.Restart(); - var pageTitle = page.Text; - var dgv = page.Controls[0] as DataGridView; - dgv.Rows.Clear(); - if (groupElems.ContainsKey(pageTitle)) - { - //continue; - var elems = groupElems[pageTitle]; - var parser = ParserManager.Instance.GetParser(pageTitle); - var elemIndex = 0; - foreach (var element in elems) - { - List<Tuple<string, string>> properties = parser.PropertyParse(element); - var newProps = PostProcessing(groupElems, properties); - FillRow(dgv, newProps, ref elemIndex); - } - sw.Stop(); - str += pageTitle + " 鏁版嵁鍔犺浇鑰楁椂锛�" + sw.Elapsed.TotalSeconds + " 绉掞紝鏁伴噺锛�" + elems.Count + "锛屾椂闂达細" + DateTime.Now.ToString(); - textBox1.Text += str; - } - - }); - t.Start(); - - } - } - - - private void button1_Click2(object sender, EventArgs e) - { - var excelFolder = DialogHelper.UserSelectFolderPath(); - if (string.IsNullOrEmpty(excelFolder)) { return; } - var excelPath = Path.Combine(excelFolder, $@"绠¢亾绯荤粺鏁版嵁.xlsx"); - - ExcelHelper excelHelper = new ExcelHelper(); - var indexes = new List<int>(); - var items = this.checkedListBox_systemType.CheckedIndices; - for (int i = 0; i < items.Count; i++) - { - int index = items[i]; - indexes.Add(index); - } - Dictionary<string, List<Element>> dict = GetGroupElements(indexes); - - - foreach (TabPage page in this.pageContainer.TabPages) - { - var pageTitle = page.Text; - if (!dict.ContainsKey(pageTitle)) - { - continue; - } - var elems = dict[pageTitle]; - var parser = ParserManager.Instance.GetParser(pageTitle); - - excelHelper.SetCurrentSheet(pageTitle); - - for (int i = 1; i <= elems.Count; i++) - { - var element = elems[i - 1]; - List<Tuple<string, string>> properties = parser.PropertyParse(element); - var newProps = PostProcessing(dict, properties); - if (i == 1)//鍏堝啓琛ㄥご - { - var headers = newProps.Select(x => x.Item1).ToList(); - for (int j = 1; j <= headers.Count; j++) - { - excelHelper.Write(i, j, headers[j - 1]); - } - } - var contents = newProps.Select(x => x.Item2).ToList(); - for (int j = 1; j <= contents.Count; j++) - { - excelHelper.Write(i + 1, j, contents[j - 1]); - } - } - } - - excelHelper.SaveAs(excelPath); - MessageBox.Show("瀵煎嚭瀹屾垚锛�"); - } - - private void checkedListBox_systemType_ItemCheck(object sender, ItemCheckEventArgs e) - { - this._itemCheck = e; - //SetCheckIndexs(); - } - - public void SetCheckIndexs() - { - Stopwatch stopwatch = new Stopwatch(); - stopwatch.Start(); - textBox1.Text += "寮�濮嬫椂闂达細" + DateTime.Now.ToString(); - List<int> indexes = GetCheckedIndexes(this._itemCheck); - Dictionary<string, List<Element>> dict = GetGroupElements(indexes); - var elemIds = dict.Values.SelectMany(x => x).Select(y => y.Id).ToList(); + if (view == null) { return; } + + var cellText = cell.Value.ToString(); + if (dgv.Columns[columnIndex].HeaderText == "ID" || + dgv.Columns[columnIndex].HeaderText.Contains("杩炴帴鐐�")) + { + var idContent = cellText.Split(':')?.Last(); + if (string.IsNullOrEmpty(idContent)) { return; } + if (int.TryParse(idContent, out int id)) + { + var elementId = new ElementId(id); + var ids = new List<ElementId> { elementId }; + view.Select(_uiDocument, ids); + view.OnlyShow(ids); + view.Zoom(_uiDocument, ids); + } + } + } + + private void Dgv_CellClick(object sender, DataGridViewCellEventArgs e) + { + var dgv = sender as DataGridView; + var rowIndex = e.RowIndex; + var columnIndex = e.ColumnIndex; + var cell = dgv[columnIndex, rowIndex]; + + if (cell.Value == null) { return; } var view = Set3DView(); - if (view == null) { return; } - - if (elemIds.Count != 0) - { - view.OnlyShow(elemIds); - view.Zoom(_uiDocument, elemIds); - } - stopwatch.Stop(); - textBox1.Text += "锛岃幏鍙栨墍鏈夋瀯浠惰�楁椂锛�" + stopwatch.Elapsed.TotalSeconds + "绉掞紝鏃堕棿锛�" + DateTime.Now.ToString(); - //stopwatch.Restart(); - FillDataGridView(dict); - } - - private List<int> GetCheckedIndexes(ItemCheckEventArgs e) - { - var indexes = new List<int>(); - var items = this.checkedListBox_systemType.CheckedIndices; - for (int i = 0; i < items.Count; i++) - { - int index = items[i]; - indexes.Add(index); - } - //if (e.NewValue == CheckState.Checked) - //{ - // indexes.Add(e.Index); - //} - //else - //{ - // if (indexes.Contains(e.Index)) - // { - // indexes.Remove(e.Index); - // } - //} - - return indexes; - } - - - private void SetProp(int eleId, string propName, string propValue) - { - var eid = new ElementId(eleId); - var ele = _doc.GetElement(eid); - if (ele == null) { return; } - - var prop = ele.LookupParameter(propName); - if (propName.Equals("娴侀噺")) - propValue = Math.Abs(decimal.Parse(propValue)).ToString(); - if (prop != null && !prop.IsReadOnly && prop.StorageType == StorageType.String) - { - prop.Set(propValue); - } - - } - - private Dictionary<string, List<Element>> GetGroupElements(List<int> indexes) - { - Dictionary<string, List<Element>> dict = new Dictionary<string, List<Element>>(); - foreach (var index in indexes) - { - var systemType = checkedListBox_systemType.Items[index] as PipingSystemType; - var typeName = systemType.Name; - var elems = RevitMepElementService.GetElements(_doc, typeName); - var subDict = RevitMepCategoryService.GroupElements(elems); - foreach (var pairs in subDict) - { - if (!dict.ContainsKey(pairs.Key)) - { - dict.Add(pairs.Key, new List<Element>()); - } - dict[pairs.Key].AddRange(pairs.Value); - } - } - - return dict; - } - - public CheckModel GetNetWrok() - { - this._revitNetWork = NetWorkHelper.GetModelList(this.pageContainer); - this._revitNetWork.BuildToInp(inpPath); - return NetWorkHelper.Check(this._revitNetWork); - } - private string inpPath = "d:\\revitinp.inp"; - private void button2_Click(object sender, EventArgs e) - { - - //SetProp(577273, "鏍囪", "娉ㄩ噴娴嬭瘯"); - ////var json = JsonHelper.ToJson(list); - var result = GetNetWrok(); - //nw.BuildToInp(inpPath); - - if (result.Result) - { - if (MessageBox.Show("鏍¢獙閫氳繃锛屾槸鍚︽墽琛岃绠楋紵", "鏍¢獙缁撴灉", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK) - { - var r = this._revitNetWork.Calc(inpPath); - SetEleProp(r); - var json = JsonHelper.ToJson(r); - JsonHelper.WriteJson("d:\\revittest.json", json); - MessageBox.Show("璁$畻鎴愬姛!"); - } - } - else - { - var form = new Form_CheckResult(result, this.pageContainer, _data, this); - var revitHandle = Process.GetCurrentProcess().MainWindowHandle; - form.Show(new WindowHandle(revitHandle)); - } - - } - - private void SetEleProp(List<TimePoint> eleProp) - { - //Transaction trans = new Transaction(_doc, "淇敼鍙傛暟"); - //trans.Start(); - eleProp.ForEach(d => - { - var id = int.Parse(d.Key.Split('_')[0]); - var prop = d.Key.Split('_')[1]; - var vu = d.Value.ToString(); - SetProp(id, prop, vu); - }); - //trans.Commit(); - } - - public void Test() - { - MessageBox.Show("OK"); - } - - private void button5_Click(object sender, EventArgs e) - { - SetCheckIndexs(); - } - - private void button6_Click(object sender, EventArgs e) - { - //var refernce = _uiDocument.Selection.PickObject(Autodesk.Revit.UI.Selection.ObjectType.Element); - var pipe1 = _doc.GetElement(new ElementId(714683)) as MEPCurve; - - //var refernce2 = _uiDocument.Selection.PickObject(Autodesk.Revit.UI.Selection.ObjectType.Element); - var pipe2 = _doc.GetElement(new ElementId(732605)) as MEPCurve; - JoinGeometryUtils.JoinGeometry(_doc, pipe1, pipe2); - } - } -} + if (view == null) { return; } + + + var cellText = cell.Value.ToString(); + if (dgv.Columns[columnIndex].HeaderText == "ID" || + dgv.Columns[columnIndex].HeaderText.Contains("杩炴帴鐐�")) + { + var idContent = cellText.Split(':')?.Last(); + if (string.IsNullOrEmpty(idContent)) { return; } + if (int.TryParse(idContent, out int id)) + { + var elementId = new ElementId(id); + var ids = new List<ElementId> { elementId }; + view.Select(_uiDocument, ids); + } + } + } + + private void InitMepSystemComboBox() + { + //this.comboBox1.Items.Clear(); + //var systems = RevitMepSystemService.GetSystemList(_doc).ToList(); + //systems = systems.FindAll(x => x is PipingSystem); + //if (systems != null && systems.Count > 0) + //{ + // this.comboBox1.DataSource = systems; + // this.comboBox1.DisplayMember = "Name"; + // this.comboBox1.SelectedIndex = 0; + //} + //this.comboBox1.SelectedIndex = -1; + } + + private View3D Set3DView() + { + var view3d = ViewHelper.Get3dView(_doc); + if (view3d == null) { return null; } + _uiDocument.ActiveView = view3d; + return view3d; + } + + private List<Tuple<string, string>> PostProcessing(Dictionary<string, List<Element>> groupElems, List<Tuple<string, string>> properties) + { + var result = new List<Tuple<string, string>>(); + foreach (var prop in properties) + { + if (!prop.Item1.Contains("杩炴帴鐐�")) + { + result.Add(prop); + continue; + } + bool findGroupName = false; + foreach (var group in groupElems) + { + if (group.Value.Any(x => x.Id.IntegerValue.ToString() == prop.Item2)) + { + result.Add(new Tuple<string, string>(prop.Item1, /*group.Key + ":" +*/ prop.Item2)); + findGroupName = true; + break; + } + } + if (!findGroupName) + { + result.Add(new Tuple<string, string>(prop.Item1, prop.Item2)); + } + } + + return result; + } + + private void FillRow(DataGridView dgv, List<Tuple<string, string>> properties, ref int elemIndex) + { + properties.Insert(0, new Tuple<string, string>("搴忓彿", (++elemIndex).ToString())); + var newRowIndex = dgv.Rows.Add(); + for (var i = 0; i < dgv.ColumnCount; i++) + { + var cell = dgv.Rows[newRowIndex].Cells[i]; + var hd = dgv.Columns[cell.ColumnIndex].HeaderText; + var p = properties.Where(c => c.Item1.Equals(hd)).FirstOrDefault(); + if (p != null) + { + cell.Value = p.Item2?.ToString(); + } + } + } + + + private void FillDataGridView(Dictionary<string, List<Element>> groupElems) + { + foreach (TabPage page in this.pageContainer.TabPages) + //for (var i = 0; i < this.pageContainer.TabPages.Count - 1; i++) + { + //var t = new Task(() => + // { + //var page = this.pageContainer.TabPages[i]; + + string str = ""; + + Stopwatch sw = Stopwatch.StartNew(); + sw.Restart(); + var pageTitle = page.Text; + var dgv = page.Controls[0] as DataGridView; + dgv.Rows.Clear(); + if (groupElems.ContainsKey(pageTitle)) + { + //continue; + var elems = groupElems[pageTitle]; + var parser = ParserManager.Instance.GetParser(pageTitle); + var elemIndex = 0; + foreach (var element in elems) + { + List<Tuple<string, string>> properties = parser.PropertyParse(element); + var newProps = PostProcessing(groupElems, properties); + FillRow(dgv, newProps, ref elemIndex); + } + sw.Stop(); + str += pageTitle + " 鏁版嵁鍔犺浇鑰楁椂锛�" + sw.Elapsed.TotalSeconds + " 绉掞紝鏁伴噺锛�" + elems.Count + "锛屾椂闂达細" + DateTime.Now.ToString(); + textBox1.Text += str; + } + + // }); + //t.Start(); + + } + } + + + private void button1_Click2(object sender, EventArgs e) + { + var excelFolder = DialogHelper.UserSelectFolderPath(); + if (string.IsNullOrEmpty(excelFolder)) { return; } + var excelPath = Path.Combine(excelFolder, $@"绠¢亾绯荤粺鏁版嵁.xlsx"); + + ExcelHelper excelHelper = new ExcelHelper(); + var indexes = new List<int>(); + var items = this.checkedListBox_systemType.CheckedIndices; + for (int i = 0; i < items.Count; i++) + { + int index = items[i]; + indexes.Add(index); + } + Dictionary<string, List<Element>> dict = GetGroupElements(indexes); + + + foreach (TabPage page in this.pageContainer.TabPages) + { + var pageTitle = page.Text; + if (!dict.ContainsKey(pageTitle)) + { + continue; + } + var elems = dict[pageTitle]; + var parser = ParserManager.Instance.GetParser(pageTitle); + + excelHelper.SetCurrentSheet(pageTitle); + + for (int i = 1; i <= elems.Count; i++) + { + var element = elems[i - 1]; + List<Tuple<string, string>> properties = parser.PropertyParse(element); + var newProps = PostProcessing(dict, properties); + if (i == 1)//鍏堝啓琛ㄥご + { + var headers = newProps.Select(x => x.Item1).ToList(); + for (int j = 1; j <= headers.Count; j++) + { + excelHelper.Write(i, j, headers[j - 1]); + } + } + var contents = newProps.Select(x => x.Item2).ToList(); + for (int j = 1; j <= contents.Count; j++) + { + excelHelper.Write(i + 1, j, contents[j - 1]); + } + } + } + + excelHelper.SaveAs(excelPath); + MessageBox.Show("瀵煎嚭瀹屾垚锛�"); + } + + private void checkedListBox_systemType_ItemCheck(object sender, ItemCheckEventArgs e) + { + this._itemCheck = e; + //SetCheckIndexs(); + } + + public void SetCheckIndexs() + { + Stopwatch stopwatch = new Stopwatch(); + stopwatch.Start(); + textBox1.Text += "寮�濮嬫椂闂达細" + DateTime.Now.ToString(); + List<int> indexes = GetCheckedIndexes(this._itemCheck); + Dictionary<string, List<Element>> dict = GetGroupElements(indexes); + var elemIds = dict.Values.SelectMany(x => x).Select(y => y.Id).ToList(); + var view = Set3DView(); + if (view == null) { return; } + + if (elemIds.Count != 0) + { + view.OnlyShow(elemIds); + view.Zoom(_uiDocument, elemIds); + } + stopwatch.Stop(); + textBox1.Text += "锛岃幏鍙栨墍鏈夋瀯浠惰�楁椂锛�" + stopwatch.Elapsed.TotalSeconds + "绉掞紝鏃堕棿锛�" + DateTime.Now.ToString(); + //stopwatch.Restart(); + FillDataGridView(dict); + } + + private List<int> GetCheckedIndexes(ItemCheckEventArgs e) + { + var indexes = new List<int>(); + var items = this.checkedListBox_systemType.CheckedIndices; + for (int i = 0; i < items.Count; i++) + { + int index = items[i]; + indexes.Add(index); + } + //if (e.NewValue == CheckState.Checked) + //{ + // indexes.Add(e.Index); + //} + //else + //{ + // if (indexes.Contains(e.Index)) + // { + // indexes.Remove(e.Index); + // } + //} + + return indexes; + } + + + private void SetProp(int eleId, string propName, string propValue) + { + var eid = new ElementId(eleId); + var ele = _doc.GetElement(eid); + if (ele == null) { return; } + + var prop = ele.LookupParameter(propName); + if (propName.Equals("娴侀噺")) + propValue = Math.Abs(decimal.Parse(propValue)).ToString(); + if (prop != null && !prop.IsReadOnly && prop.StorageType == StorageType.String) + { + prop.Set(propValue); + } + + } + + private Dictionary<string, List<Element>> GetGroupElements(List<int> indexes) + { + Dictionary<string, List<Element>> dict = new Dictionary<string, List<Element>>(); + foreach (var index in indexes) + { + var systemType = checkedListBox_systemType.Items[index] as PipingSystemType; + var typeName = systemType.Name; + var elems = RevitMepElementService.GetElements(_doc, typeName); + var subDict = RevitMepCategoryService.GroupElements(elems); + foreach (var pairs in subDict) + { + if (!dict.ContainsKey(pairs.Key)) + { + dict.Add(pairs.Key, new List<Element>()); + } + dict[pairs.Key].AddRange(pairs.Value); + } + } + + return dict; + } + + public CheckModel GetNetWrok() + { + this._revitNetWork = NetWorkHelper.GetModelList(this.pageContainer); + this._revitNetWork.BuildToInp(inpPath); + return NetWorkHelper.Check(this._revitNetWork); + } + private string inpPath = "d:\\revitinp.inp"; + private void button2_Click(object sender, EventArgs e) + { + + //SetProp(577273, "鏍囪", "娉ㄩ噴娴嬭瘯"); + ////var json = JsonHelper.ToJson(list); + var result = GetNetWrok(); + //nw.BuildToInp(inpPath); + + if (result.Result) + { + if (MessageBox.Show("鏍¢獙閫氳繃锛屾槸鍚︽墽琛岃绠楋紵", "鏍¢獙缁撴灉", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK) + { + var r = this._revitNetWork.Calc(inpPath); + SetEleProp(r); + var json = JsonHelper.ToJson(r); + JsonHelper.WriteJson("d:\\revittest.json", json); + MessageBox.Show("璁$畻鎴愬姛!"); + } + } + else + { + var form = new Form_CheckResult(result, this.pageContainer, _data, this); + var revitHandle = Process.GetCurrentProcess().MainWindowHandle; + form.Show(new WindowHandle(revitHandle)); + } + + } + + private void SetEleProp(List<TimePoint> eleProp) + { + //Transaction trans = new Transaction(_doc, "淇敼鍙傛暟"); + //trans.Start(); + eleProp.ForEach(d => + { + var id = int.Parse(d.Key.Split('_')[0]); + var prop = d.Key.Split('_')[1]; + var vu = d.Value.ToString(); + SetProp(id, prop, vu); + }); + //trans.Commit(); + } + + public void Test() + { + MessageBox.Show("OK"); + } + + private void button5_Click(object sender, EventArgs e) + { + SetCheckIndexs(); + } + + private void button6_Click(object sender, EventArgs e) + { + //var refernce = _uiDocument.Selection.PickObject(Autodesk.Revit.UI.Selection.ObjectType.Element); + var pipe1 = _doc.GetElement(new ElementId(714683)) as MEPCurve; + + //var refernce2 = _uiDocument.Selection.PickObject(Autodesk.Revit.UI.Selection.ObjectType.Element); + var pipe2 = _doc.GetElement(new ElementId(732605)) as MEPCurve; + JoinGeometryUtils.JoinGeometry(_doc, pipe1, pipe2); + } + } +} -- Gitblit v1.9.3