186 lines
6.8 KiB
C#
186 lines
6.8 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.Data;
|
|
using System.Drawing;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Windows.Forms;
|
|
using Autodesk.Revit.DB;
|
|
using System.Collections;
|
|
using KDCS.Utils;
|
|
|
|
namespace KMBIM.Revit.Tools.Cmd.Parameter
|
|
{
|
|
public partial class FormSelectParameter : System.Windows.Forms.Form
|
|
{
|
|
private Element _BaseElement { get; set; }
|
|
public Hashtable hashElementParameters { get; set; }
|
|
public List<Autodesk.Revit.DB.Parameter> ListElementParameter { get; set; } // 기준 요소의 파라미터
|
|
public List<Autodesk.Revit.DB.Parameter> ListSelectedParameter { get; set; } // 복사 선택된 파라미터
|
|
private ArrayList arrayList = new ArrayList();
|
|
|
|
|
|
public FormSelectParameter(Element e)
|
|
{
|
|
InitializeComponent();
|
|
hashElementParameters = new Hashtable();
|
|
this._BaseElement = e;
|
|
ListSelectedParameter = null;
|
|
}
|
|
|
|
private void FormSelectParameter_Load(object sender, EventArgs e)
|
|
{
|
|
this.KeyPreview = true;
|
|
|
|
ListElementParameter = new List<Autodesk.Revit.DB.Parameter>();
|
|
|
|
SetFileDataGridViewParameters(this._BaseElement);
|
|
}
|
|
|
|
private void SetFileDataGridViewParameters(Element elm)
|
|
{
|
|
|
|
dataGridViewParameters.Columns.Clear();
|
|
dataGridViewParameters.DataSource = null;
|
|
dataGridViewParameters.AutoGenerateColumns = false;
|
|
dataGridViewParameters.AllowUserToAddRows = false;
|
|
dataGridViewParameters.ReadOnly = false;
|
|
dataGridViewParameters.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
|
|
dataGridViewParameters.MultiSelect = true;
|
|
|
|
DataTable dtViews = new DataTable();
|
|
dtViews.Columns.Add("선택", typeof(bool));
|
|
dtViews.Columns.Add("매개변수", typeof(String));
|
|
dtViews.Columns.Add("값", typeof(String));
|
|
|
|
|
|
DataGridViewCheckBoxColumn column1 = new DataGridViewCheckBoxColumn();
|
|
column1.HeaderText = "";
|
|
column1.DataPropertyName = column1.HeaderText;
|
|
column1.Name = "column1";
|
|
column1.Width = 50;
|
|
column1.ReadOnly = false;
|
|
|
|
|
|
DataGridViewTextBoxColumn column2 = new DataGridViewTextBoxColumn();
|
|
column2.HeaderText = "매개변수";
|
|
column2.DataPropertyName = column2.HeaderText;
|
|
column2.Name = "column2";
|
|
column2.Width = 150;
|
|
column2.ReadOnly = true;
|
|
|
|
DataGridViewTextBoxColumn column3 = new DataGridViewTextBoxColumn();
|
|
column3.HeaderText = "값";
|
|
column3.DataPropertyName = column3.HeaderText;
|
|
column3.Name = "column3";
|
|
column3.Width = 150;
|
|
column3.ReadOnly = true;
|
|
|
|
|
|
|
|
dataGridViewParameters.Columns.AddRange(column1, column2, column3);
|
|
ListElementParameter = elm.GetOrderedParameters().ToList();
|
|
|
|
foreach (Autodesk.Revit.DB.Parameter p in ListElementParameter)
|
|
{
|
|
if (p.IsReadOnly == false)
|
|
{
|
|
string strGroup = Autodesk.Revit.DB.LabelUtils.GetLabelFor(p.Definition.ParameterGroup);
|
|
string strGropAndParameterName = strGroup + "/" + p.Definition.Name;
|
|
dtViews.Rows.Add(false, strGropAndParameterName, Util.GetParameterValueAsString(p));
|
|
hashElementParameters.Add(strGropAndParameterName, p);
|
|
}
|
|
|
|
}
|
|
|
|
dataGridViewParameters.DataSource = dtViews;
|
|
}
|
|
|
|
private void buttonOK_Click(object sender, EventArgs e)
|
|
{
|
|
ListSelectedParameter = new List<Autodesk.Revit.DB.Parameter>();
|
|
for (int i = 0; i < dataGridViewParameters.Rows.Count; i++)
|
|
{
|
|
if (dataGridViewParameters.Rows[i].Selected == true)
|
|
{
|
|
DataGridViewRow itm = dataGridViewParameters.Rows[i];
|
|
if (itm.Selected)
|
|
{
|
|
DataGridViewTextBoxCell tbParameterName = (DataGridViewTextBoxCell)itm.Cells[1];
|
|
string parameterName = tbParameterName.Value.ToString();
|
|
Autodesk.Revit.DB.Parameter p = hashElementParameters[parameterName] as Autodesk.Revit.DB.Parameter;
|
|
if (p != null) ListSelectedParameter.Add(p);
|
|
} //end-if
|
|
|
|
}
|
|
}
|
|
|
|
var wm = WorkMain.GetInstance();
|
|
wm.CopiedParameters.Clear(); // 이전에 복사한 파라미터들을 지웁니다.
|
|
wm.CopiedParametersElement = this._BaseElement; // 복사한 파라미터의 소유자 요소를 저장합니다.
|
|
foreach (var p in ListSelectedParameter)
|
|
{
|
|
wm.CopiedParameters.Add(p);
|
|
}
|
|
}
|
|
|
|
private void dataGridViewParameters_CellContentClick(object sender, DataGridViewCellEventArgs e)
|
|
{
|
|
|
|
}
|
|
|
|
private void dataGridViewParameters_CellValueChanged(object sender, DataGridViewCellEventArgs e)
|
|
{
|
|
if (e.RowIndex < 0) return;
|
|
|
|
if (e.ColumnIndex == 0)
|
|
{
|
|
DataGridViewRow curRow = dataGridViewParameters.Rows[e.RowIndex];
|
|
DataGridViewCheckBoxCell chk = (DataGridViewCheckBoxCell)curRow.Cells[0];
|
|
bool bSelected = (bool)chk.Value;
|
|
curRow.Selected = bSelected;
|
|
|
|
if (dataGridViewParameters.CurrentCell != null)
|
|
{
|
|
bool selected = false;
|
|
if (arrayList.Contains(dataGridViewParameters.CurrentCell))
|
|
{
|
|
arrayList.Remove(dataGridViewParameters.CurrentCell);
|
|
selected = false;
|
|
}
|
|
else
|
|
{
|
|
arrayList.Add(dataGridViewParameters.CurrentCell);
|
|
selected = true;
|
|
}
|
|
dataGridViewParameters.CurrentCell.Selected = selected;
|
|
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
private void dataGridViewParameters_SelectionChanged(object sender, EventArgs e)
|
|
{
|
|
foreach (DataGridViewCell arrayElement in arrayList)
|
|
{
|
|
arrayElement.Selected = true;
|
|
}
|
|
}
|
|
|
|
private void FormSelectParameter_KeyDown(object sender, KeyEventArgs e)
|
|
{
|
|
if (e.KeyCode == Keys.Escape)
|
|
{
|
|
this.DialogResult = DialogResult.Cancel;
|
|
}
|
|
else if (e.KeyCode == Keys.Enter)
|
|
{
|
|
this.DialogResult = DialogResult.OK;
|
|
}
|
|
}
|
|
}
|
|
}
|