Exemplo n.º 1
0
        /// <summary>
        /// Constructor
        /// </summary>
        /// <param name="creator">the family instance creator</param>
        /// <param name="type">based-type</param>
        public PlaceFamilyInstanceForm(FamilyInstanceCreator creator, BasedType type)
        {
            m_creator = creator;
            m_creator.CheckFamilySymbol(type);
            m_baseType = type;
            InitializeComponent();

            // set the face name list and the default value
            foreach (String name in creator.FaceNameList)
            {
                comboBoxFace.Items.Add(name);
            }
            if (comboBoxFace.Items.Count > 0)
            {
                SetFaceIndex(0);
            }

            // set the family name list and the default value
            foreach (String symbolName in m_creator.FamilySymbolNameList)
            {
                comboBoxFamily.Items.Add(symbolName);
            }
            if (m_creator.DefaultFamilySymbolIndex < 0)
            {
                comboBoxFamily.SelectedItem = m_creator.FamilySymbolNameList[0];
            }
            else
            {
                comboBoxFamily.SelectedItem =
                    m_creator.FamilySymbolNameList[m_creator.DefaultFamilySymbolIndex];
            }

            // set UI display according to baseType
            switch (m_baseType)
            {
            case BasedType.Point:
                this.Text        = "Place Point-Based Family Instance";
                labelFirst.Text  = "Location :";
                labelSecond.Text = "Direction :";
                break;

            case BasedType.Line:
                comboBoxFamily.SelectedItem = "Line-based";
                this.Text = "Place Line-Based Family Instance";

                labelFirst.Text  = "Start Point :";
                labelSecond.Text = "End Point :";
                break;

            default:
                break;
            }
            AdjustComboBoxDropDownListWidth(comboBoxFace);
            AdjustComboBoxDropDownListWidth(comboBoxFamily);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Constructor
        /// </summary>
        /// <param name="creator">the family instance creator</param>
        /// <param name="type">based-type</param>
        public PlaceFamilyInstanceForm(FamilyInstanceCreator creator, BasedType type)
        {
            m_creator = creator;
            m_creator.CheckFamilySymbol(type);
            m_baseType = type;
            InitializeComponent();

            // set the face name list and the default value
            foreach (String name in creator.FaceNameList)
            {
                comboBoxFace.Items.Add(name);
            }
            if (comboBoxFace.Items.Count > 0)
            {
                SetFaceIndex(0);
            }

            // set the family name list and the default value
            foreach (String symbolName in m_creator.FamilySymbolNameList)
            {
                comboBoxFamily.Items.Add(symbolName);
            }
            if (m_creator.DefaultFamilySymbolIndex < 0)
            {
                comboBoxFamily.SelectedItem = m_creator.FamilySymbolNameList[0];
            }
            else
            {
                comboBoxFamily.SelectedItem =
                    m_creator.FamilySymbolNameList[m_creator.DefaultFamilySymbolIndex];
            }

            // set UI display according to baseType
            switch (m_baseType)
            {
                case BasedType.Point:
                    this.Text = "Place Point-Based Family Instance";
                    labelFirst.Text = "Location :";
                    labelSecond.Text = "Direction :";
                    break;
                case BasedType.Line:
                    comboBoxFamily.SelectedItem = "Line-based";
                    this.Text = "Place Line-Based Family Instance";

                    labelFirst.Text = "Start Point :";
                    labelSecond.Text = "End Point :";
                    break;
                default:
                    break;
            }
            AdjustComboBoxDropDownListWidth(comboBoxFace);
            AdjustComboBoxDropDownListWidth(comboBoxFamily);
        }
Exemplo n.º 3
0
 /// <summary>
 /// Process the click event of "Next" button
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void buttonNext_Click(object sender, EventArgs e)
 {
     if (radioButtonPoint.Checked)
     {
         m_baseType = BasedType.Point;
     }
     else if (radioButtonLine.Checked)
     {
         m_baseType = BasedType.Line;
     }
     else
     {
         throw new Exception("An error occured in selecting based type.");
     }
     this.Close();
     this.DialogResult = DialogResult.OK;
 }
Exemplo n.º 4
0
        /// <summary>
        /// 1. Find all family symbols in current Revit document and store them
        /// 2. Find the index of default family symbol
        /// Point("Point-based"); Line("Line-based")
        /// </summary>
        public void CheckFamilySymbol(BasedType type)
        {
            m_defaultIndex = -1;
            m_familySymbolList.Clear();

            Autodesk.Revit.DB.FilteredElementIterator familySymbolItor =
                new FilteredElementCollector(m_revitDoc.Document).OfClass(typeof(FamilySymbol)).GetElementIterator();

            String defaultSymbolName = String.Empty;
            switch (type)
            {
                case BasedType.Point:
                    defaultSymbolName = "Point-based";
                    break;
                case BasedType.Line:
                    defaultSymbolName = "Line-based";
                    break;
                default:
                    break;
            }

            bool hasDefaultSymbol = false;
            int ii = 0;

            while (familySymbolItor.MoveNext())
            {
                FamilySymbol symbol = (FamilySymbol)familySymbolItor.Current;
                if(null == symbol)
                {
                    continue;
                }

                if (!hasDefaultSymbol && 0 == String.Compare(defaultSymbolName, symbol.Name))
                {
                    hasDefaultSymbol = true;
                    m_defaultIndex = ii;
                }

                // family symbol
                m_familySymbolList.Add(symbol);

                // family symbol name
                String familyCategoryname = String.Empty;
                if (null != symbol.Family.FamilyCategory)
                {
                    familyCategoryname = symbol.Family.FamilyCategory.Name + " : ";
                }
                m_familySymbolNameList.Add(String.Format("{0}{1} : {2}"
                    , familyCategoryname, symbol.Family.Name, symbol.Name));
                ii++;
            }

            if (!hasDefaultSymbol)
            {
                FamilySymbol loadedfamilySymbol = null;
                try
                {
                    m_revitDoc.Document.LoadFamilySymbol(String.Format(@"{0}.rfa", defaultSymbolName)
                        , defaultSymbolName
                        , out loadedfamilySymbol);
                }
                catch(Exception)
                {
                    MessageBox.Show("Can't load the prepared rfa.");
                }

                if (null == loadedfamilySymbol)
                {
                    return;
                }
                m_familySymbolList.Add(loadedfamilySymbol);

                String familyCategoryname = String.Empty;
                if (null != loadedfamilySymbol.Family.FamilyCategory)
                {
                    familyCategoryname = loadedfamilySymbol.Family.FamilyCategory.Name +": ";
                }
                m_familySymbolNameList.Add(String.Format("{0}{1}: {2}"
                    , familyCategoryname, loadedfamilySymbol.Family.Name, loadedfamilySymbol.Name));
                m_defaultIndex = m_familySymbolList.Count - 1;
            }

            return;
        }
Exemplo n.º 5
0
        /// <summary>
        /// 1. Find all family symbols in current Revit document and store them
        /// 2. Find the index of default family symbol
        /// Point("Point-based"); Line("Line-based")
        /// </summary>
        public void CheckFamilySymbol(BasedType type)
        {
            m_defaultIndex = -1;
            m_familySymbolList.Clear();

            Autodesk.Revit.DB.FilteredElementIterator familySymbolItor =
                new FilteredElementCollector(m_revitDoc.Document).OfClass(typeof(FamilySymbol)).GetElementIterator();

            String defaultSymbolName = String.Empty;

            switch (type)
            {
            case BasedType.Point:
                defaultSymbolName = "Point-based";
                break;

            case BasedType.Line:
                defaultSymbolName = "Line-based";
                break;

            default:
                break;
            }

            bool hasDefaultSymbol = false;
            int  ii = 0;

            while (familySymbolItor.MoveNext())
            {
                FamilySymbol symbol = (FamilySymbol)familySymbolItor.Current;
                if (null == symbol)
                {
                    continue;
                }

                if (!hasDefaultSymbol && 0 == String.Compare(defaultSymbolName, symbol.Name))
                {
                    hasDefaultSymbol = true;
                    m_defaultIndex   = ii;
                }

                // family symbol
                m_familySymbolList.Add(symbol);

                // family symbol name
                String familyCategoryname = String.Empty;
                if (null != symbol.Family.FamilyCategory)
                {
                    familyCategoryname = symbol.Family.FamilyCategory.Name + " : ";
                }
                m_familySymbolNameList.Add(String.Format("{0}{1} : {2}"
                                                         , familyCategoryname, symbol.Family.Name, symbol.Name));
                ii++;
            }

            if (!hasDefaultSymbol)
            {
                FamilySymbol loadedfamilySymbol = null;
                try
                {
                    m_revitDoc.Document.LoadFamilySymbol(String.Format(@"{0}.rfa", defaultSymbolName)
                                                         , defaultSymbolName
                                                         , out loadedfamilySymbol);
                }
                catch (Exception)
                {
                    TaskDialog.Show("Revit", "Can't load the prepared rfa.");
                }


                if (null == loadedfamilySymbol)
                {
                    return;
                }
                m_familySymbolList.Add(loadedfamilySymbol);

                String familyCategoryname = String.Empty;
                if (null != loadedfamilySymbol.Family.FamilyCategory)
                {
                    familyCategoryname = loadedfamilySymbol.Family.FamilyCategory.Name + ": ";
                }
                m_familySymbolNameList.Add(String.Format("{0}{1}: {2}"
                                                         , familyCategoryname, loadedfamilySymbol.Family.Name, loadedfamilySymbol.Name));
                m_defaultIndex = m_familySymbolList.Count - 1;
            }

            return;
        }
Exemplo n.º 6
0
 /// <summary>
 /// Process the click event of "Next" button
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void buttonNext_Click(object sender, EventArgs e)
 {
     if (radioButtonPoint.Checked)
     {
         m_baseType = BasedType.Point;
     }
     else if (radioButtonLine.Checked)
     {
         m_baseType = BasedType.Line;
     }
     else
     {
         throw new Exception("An error occured in selecting based type.");
     }
     this.Close();
     this.DialogResult = DialogResult.OK;
 }