Client/Desktop/KMBIM3.0/23.10.18/Cmd/PipeRack/Form_FixingBolt.cs

221 lines
7.4 KiB
C#

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<Element> 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<Element> 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<Element> ElemList = new List<Element>();
Autodesk.Revit.DB.Parameter level = view.LookupParameter("Associated Level");
FilteredElementCollector lvlCollector = new FilteredElementCollector(doc);
ICollection<Element> lvlCollection = lvlCollector.OfClass(typeof(Level)).ToElements();
foreach (Element l in lvlCollection)
{
Level lvl = l as Level;
ElemList.Add(lvl);
}
return ElemList;
}
}
}