using System; using System.Collections.Generic; using System.Drawing; using System.Windows.Forms; using Autodesk.Revit.UI; using Autodesk.Revit.DB; using KDCS.Utils; namespace KMBIM { public partial class Form_FixingBolt : System.Windows.Forms.Form { public Autodesk.Revit.UI.ExternalCommandData revit; public int m_Extend, m_RadType = 0, m_RadAttach = 0; public string m_LvlSet; public bool b_Inside = true; public Form_FixingBolt() { InitializeComponent(); } private void Form_FixingBolt_Load(object sender, EventArgs e) { this.KeyPreview = true; UIApplication uiapp = revit.Application; UIDocument uidoc = uiapp.ActiveUIDocument; Autodesk.Revit.DB.Document doc = uidoc.Document; Level level = doc.ActiveView.GenLevel; //볼트 타입 라디오 버튼 if (Reg.getReg("Rad_FixingBolt") == "") { m_RadType = 0; Reg.setReg("Rad_FixingBolt", "" + m_RadType); rad_guideShoe.Checked = true; } else { string str_RadIdx = Reg.getReg("Rad_FixingBolt"); m_RadType = int.Parse(str_RadIdx); if (m_RadType == 0) rad_guideShoe.Checked = true; else if (m_RadType == 1) rad_Ubolt.Checked = true; } //배치 기준 라디오 버튼 if(Reg.getReg("Rad_AttachDir") == "") { m_RadAttach = 0; Reg.setReg("Rad_AttachDir", "" + m_RadAttach); rad_Face.Checked = true; combo_Level.Enabled = false; chk_Inside.Enabled = true; } else { string str_RadIdx = Reg.getReg("Rad_AttachDir"); m_RadAttach = int.Parse(str_RadIdx); if (m_RadAttach == 0) { rad_Face.Checked = true; combo_Level.Enabled = false; chk_Inside.Enabled = true; } else if (m_RadAttach == 1) { rad_struct.Checked = true; combo_Level.Enabled = false; chk_Inside.Enabled = false; } else if (m_RadAttach == 2) { rad_Level.Checked = true; combo_Level.Enabled = true; chk_Inside.Enabled = false; } } //레벨 가져오기 List levelList = getLevel(); //레벨 리스트 목록 콤보박스 추가 foreach (Element elem in levelList) { Level lvl = elem as Level; combo_Level.Items.Add(lvl.Name); } //콤보박스 값 레지스트리 저장 후 가져오기 없으면 SelectedIndex = 0 으로 if (levelList.Count > 0) { if (Reg.getReg("Combo_FB_SelLevel") == "") { Level lvl = levelList[0] as Level; Reg.setReg("Combo_FB_SelLevel", lvl.Name); combo_Level.SelectedIndex = 0; } else { string str_SelectLevel = Reg.getReg("Combo_FB_SelLevel"); foreach(Element elem in levelList) { Level lvl = elem as Level; if(str_SelectLevel == lvl.Name) { int idx = combo_Level.FindString(lvl.Name); if (idx != -1) { combo_Level.SelectedIndex = idx; break; } } else { combo_Level.SelectedIndex = 0; } } } } //경계구역 내 설치 체크박스 체크 chk_Inside.Checked = true; } //가이드 슈 타입 라디오버튼 private void rad_guideShoe_CheckedChanged(object sender, EventArgs e) { m_RadType = 0; Reg.setReg("Rad_FixingBolt", "" + m_RadType); } //U 볼트 타입 라디오버튼 private void rad_Ubolt_CheckedChanged(object sender, EventArgs e) { m_RadType = 1; Reg.setReg("Rad_FixingBolt", "" + m_RadType); } //부착면 선택 기준 라디오버튼 private void rad_Face_CheckedChanged(object sender, EventArgs e) { m_RadAttach = 0; Reg.setReg("Rad_AttachDir", "" + m_RadAttach); combo_Level.Enabled = false; chk_Inside.Enabled = true; } //구조체 기준 라디오버튼 private void rad_struct_CheckedChanged(object sender, EventArgs e) { m_RadAttach = 1; Reg.setReg("Rad_AttachDir", "" + m_RadAttach); combo_Level.Enabled = false; chk_Inside.Enabled = false; } //레벨 기준 라디오버튼 private void rad_Level_CheckedChanged(object sender, EventArgs e) { m_RadAttach = 2; Reg.setReg("Rad_AttachDir", "" + m_RadAttach); combo_Level.Enabled = true; chk_Inside.Enabled = false; } //레벨 콤보박스 private void combo_Level_SelectedIndexChanged(object sender, EventArgs e) { m_LvlSet = combo_Level.SelectedItem.ToString(); Reg.setReg("Combo_FB_SelLevel", m_LvlSet); } //경계구역 내 설치 체크박스 private void chk_Inside_CheckedChanged(object sender, EventArgs e) { if (chk_Inside.Checked == true) b_Inside = true; else b_Inside = false; } private void Form_FixingBolt_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Escape) { //this.Close(); this.DialogResult = DialogResult.Cancel; } else if (e.KeyCode == Keys.Enter) { this.DialogResult = DialogResult.OK; } } private List getLevel() { this.Hide(); UIApplication uiapp = revit.Application; UIDocument uidoc = uiapp.ActiveUIDocument; Autodesk.Revit.DB.Document doc = uidoc.Document; Autodesk.Revit.DB.View view = doc.ActiveView; List ElemList = new List(); Autodesk.Revit.DB.Parameter level = view.LookupParameter("Associated Level"); FilteredElementCollector lvlCollector = new FilteredElementCollector(doc); ICollection lvlCollection = lvlCollector.OfClass(typeof(Level)).ToElements(); foreach (Element l in lvlCollection) { Level lvl = l as Level; ElemList.Add(lvl); } return ElemList; } } }