221 lines
7.4 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|