Esempio n. 1
0
        public void RemoveShareParameter(Document doc, ref Dictionary <string, string> dic)
        {
            IList <FamilyParameter> list          = new List <FamilyParameter>();
            FamilyManager           familyManager = doc.FamilyManager;

            list = familyManager.GetParameters();
            Transaction newtran = new Transaction(doc, "Remove Parameter");

            newtran.Start();
            var bm = familyManager.CurrentType;

            foreach (var i in list)
            {
                if (!i.Definition.ParameterGroup.ToString().Equals("PG_CONSTRAINTS") && !i.Definition.ParameterGroup.ToString().Equals("PG_IDENTITY_DATA"))
                {
                    if (i.StorageType == StorageType.String)
                    {
                        string value = bm.AsString(i);
                        dic.Add(i.Definition.Name, value);
                    }
                    if (i.StorageType == StorageType.Double)
                    {
                        string value = bm.AsDouble(i).ToString();
                        dic.Add(i.Definition.Name, value);
                    }
                    familyManager.RemoveParameter(i);
                }
            }
            newtran.Commit();
        }
        /// <summary>
        /// Delete parameter
        /// </summary>
        /// <param name="uiapp"></param>
        /// <param name="text"></param>
        /// <param name="values"></param>
        public static void ExecuteParameterChange(UIApplication uiapp, String text, List <string> values)
        {
            UIDocument uidoc = uiapp.ActiveUIDocument;
            Document   doc   = uidoc.Document;

            if (!doc.IsFamilyDocument)
            {
                Command.global_message =
                    "Please run this command in a family document.";
                TaskDialog.Show("Message", Command.global_message);
            }

            if ((uidoc != null))
            {
                using (TransactionGroup tg = new TransactionGroup(doc, "Parameter Delete"))
                {
                    tg.Start();
                    using (Transaction trans = new Transaction(uidoc.Document))
                    {
                        FailureHandlingOptions failureHandlingOptions = trans.GetFailureHandlingOptions();
                        FailureHandler         failureHandler         = new FailureHandler();
                        failureHandlingOptions.SetFailuresPreprocessor(failureHandler);
                        failureHandlingOptions.SetClearAfterRollback(true);
                        trans.SetFailureHandlingOptions(failureHandlingOptions);
                        // Since we'll modify the document, we need a transaction
                        // It's best if a transaction is scoped by a 'using' block
                        // The name of the transaction was given as an argument
                        if (trans.Start(text) == TransactionStatus.Started)
                        {
                            FamilyManager mgr = doc.FamilyManager;
                            foreach (var value in values)
                            {
                                FamilyParameter fp = mgr.get_Parameter(value);
                                mgr.RemoveParameter(fp);
                            }
                        }
                        doc.Regenerate();
                        trans.Commit();
                        uidoc.RefreshActiveView();
                        if (failureHandler.ErrorMessage != "")
                        {
                            RequestError.ErrorLog.Add(new Message("", failureHandler.ErrorMessage));
                        }
                        else
                        {
                            RequestError.NotifyLog += $"Successfully purged {values.Count.ToString()} unused parameters.";
                        }
                    }
                    tg.Assimilate();
                }
            }
        }
Esempio n. 3
0
        public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
        {
            var doc = commandData.Application.ActiveUIDocument.Document;

            if (!doc.IsFamilyDocument)
            {
                TaskDialog.Show("Not a family editor", "Please go to family editor mode");
                return(Result.Cancelled);
            }
            FamilyManager      mgr = doc.FamilyManager;
            FamilyParameterSet fps = mgr.Parameters;



            TaskDialog.Show("Parameters", "There are " + fps.Size.ToString() + " parameters inside this family. Please choose which should be removed.");

            var data = fps.Cast <FamilyParameter>().ToList();

            using (prvaLista prvaForma = new prvaLista(data))
            {
                if (prvaForma.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                {
                    try
                    {
                        using (Transaction transaction = new Transaction(doc))
                        {
                            transaction.Start("Delete Multiple Parameters");
                            foreach (var item in prvaForma.SelektovanaLista)
                            {
                                mgr.RemoveParameter(item);
                            }
                            TaskDialog.Show("Parameters deleted", prvaForma.SelektovanaLista.Count().ToString() + " parameters have been deleted");
                            transaction.Commit();
                        }
                    }

                    catch (Exception)
                    {
                        using (Transaction transaction = new Transaction(doc))
                        {
                            transaction.Start("Delete Multiple Parameters Failed");
                            TaskDialog.Show("Cannot be deleted", "Built-in parameter cannot be deleted");
                            transaction.RollBack();
                        }
                    }
                }
            }

            return(Result.Succeeded);
        }
Esempio n. 4
0
        /// <summary>
        /// Remove an existing family parameter from the family.
        /// </summary>
        /// <param name="parameterName">The family parameter name.</param>
        /// <returns>The id of the deleted family parameter.</returns>
        public int DeleteParameter(string parameterName)
        {
            Autodesk.Revit.DB.FamilyParameter familyParameter = FamilyManager.get_Parameter(parameterName);
            if (familyParameter == null)
            {
                throw new InvalidOperationException(Properties.Resources.ParameterNotFound);
            }

            int parameterId = familyParameter.Id.IntegerValue;

            TransactionManager.Instance.EnsureInTransaction(this.InternalDocument);
            FamilyManager.RemoveParameter(familyParameter);
            TransactionManager.Instance.TransactionTaskDone();
            return(parameterId);
        }
Esempio n. 5
0
        public void RemoveShareParameterkeep(Document doc)
        {
            IList <FamilyParameter> list          = new List <FamilyParameter>();
            FamilyManager           familyManager = doc.FamilyManager;

            list = familyManager.GetParameters();
            Transaction newtran = new Transaction(doc, "Remove Parameter");

            newtran.Start();
            foreach (var i in list)
            {
                if (!i.Definition.ParameterGroup.ToString().Equals("PG_CONSTRAINTS") && !i.Definition.ParameterGroup.ToString().Equals("PG_IDENTITY_DATA") && !i.Definition.ParameterGroup.ToString().Equals("PG_GEOMETRY") && !i.Definition.ParameterGroup.ToString().Equals("PG_DATA"))
                {
                    familyManager.RemoveParameter(i);
                }
            }
            newtran.Commit();
        }
Esempio n. 6
0
        // Private Sub bindSharedParameterToFile()
        //     Dim userResponse As MessageBox.ShowResult
        //     userResponse = MessageBox.Show("Create the Shared Parameter " & vbCrLf & vbTab & thisParameterName & vbCrLf & "?", MessageBox.ShowStyle.YesNo)
        //     If userResponse = MessageBox.ShowResult.Yes Then
        //         'first we need to make sure the shared parameters file is setup correctly
        //         'If ptr2SharedParametersFile.checkStageForSetup() Then
        //         Dim docTransaction As New Autodesk.Revit.DB.Transaction(ptr2TargetDoc)
        //         docTransaction.SetName("mertens3d.com - parameterJerk - Create Shared Parameter")
        //         docTransaction.Start()
        //         'If Not ptr2SharedParametersFile.doesParameterAlreadyExistInGroup(thisParameterName) Then
        //         '    ptr2SharedParametersFile.addParameterToGroup(thisParameterName)
        //         'End If
        //         'now we need to add to the file
        //         bindParameterToFile()
        //         docTransaction.Commit()
        //         'Else
        //         '    MessageBox.Show("Canceled - Create New Parameter")
        //         'End If
        //     End If
        // End Sub
        // Private Sub createNONSharedParameterInFile()
        //     Dim docTransaction As New Autodesk.Revit.DB.Transaction(ptr2TargetDoc)
        //     docTransaction.SetName("mertens3d.com - parameterJerk - Create Shared Parameter")
        //     docTransaction.Start()
        //     'now we need to add to the file
        //     'bindParameterToFile()
        //     'we want it in the project, so bind to a category
        //     Dim cats As CategorySet = ptr2TargetDoc.Application.Create.NewCategorySet
        //     cats.Insert(ptr2TargetDoc.Settings.Categories.Item(BuiltInCategory.OST_ProjectInformation))
        //     'create a binding - instance or type
        //     Dim bind As InstanceBinding = ptr2TargetDoc.Application.Create.NewInstanceBinding(cats)
        //     ptr2TargetDoc.ParameterBindings.Insert(sharedParameterFileDef, bind, BuiltInParameterGroup.PG_TEXT)
        //     docTransaction.Commit()
        // End Sub
        // Private Sub bindParameterToFile()
        //     MessageBox.Show("bindParameterToFile")
        //     Dim m_Manager As FamilyManager = Nothing
        //     m_Manager = ptr2TargetDoc.FamilyManager
        //     Try
        //         MessageBox.Show("_thisExternalDefinition: " & _thisExternalDefinition.ToString())
        //         m_Manager.AddParameter(_thisExternalDefinition, _parameterGroup, True)
        //     Catch ex As Exception
        //         MessageBox.Show(ex.ToString())
        //     End Try
        // End Sub
        private void deleteExistingParameter(FamilyParameter paramToDelete, Autodesk.Revit.DB.Document targetDoc)
        {
            FamilyManager mgr = targetDoc.FamilyManager;

            JerkHub.Ptr2Debug.AddToDebug(("Deleting existing parameter: " + paramToDelete.Definition.Name));
            Autodesk.Revit.DB.Transaction docTransaction = new Autodesk.Revit.DB.Transaction(targetDoc);
            docTransaction.SetName("delete existing parameter");
            try
            {
                docTransaction.Start();
                mgr.RemoveParameter(paramToDelete);
                docTransaction.Commit();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }
Esempio n. 7
0
        public static void Remove_Parameter(List <string> full_files_name, List <string> parm_to_add)
        {
//			UIDocument uidoc = this.ActiveUIDocument;
//			Document CachedDoc = uidoc.Document;
            Document doc;

            //Application app;
            //string folder = @"F:\ECG work\ECG_Shared_Parameters\Samples\sample 1\f1";

            // loop through all files in the directory

            foreach (string filename in full_files_name)
            {
                doc = CachedApp.OpenDocumentFile(filename);
                try
                {
                    if (doc.IsFamilyDocument)
                    {
                        FamilyManager fm    = doc.FamilyManager;
                        Transaction   trans = new Transaction(doc, "Remove Param");

                        using (trans)
                        {
                            //ExternalDefinition extdef = RawFindExternalDefinition(Application.OpenSharedParameterFile(), "CompanyName");

                            foreach (string s in parm_to_add)
                            {
                                trans.Start();
                                FamilyParameter fp = RawConvertSetToList <FamilyParameter>(fm.Parameters).
                                                     FirstOrDefault(e => e.Definition.Name.Equals(s, StringComparison.CurrentCultureIgnoreCase));
                                //		TaskDialog.Show("Revit","Shared Parameter !!");

                                if (fp == null)
                                {
                                    throw new Exception("Invalid ParameterName Input!");
                                }
                                fm.RemoveParameter(fp);
                                trans.Commit();
                            }
                            //		doc.SaveAs(filename);
                            doc.Close(true);
                        }
                    }
                }
                catch (Autodesk.Revit.Exceptions.ArgumentNullException ae)
                {
                    TaskDialog.Show("Revit", ae.ToString());
                    //trans.Commit();
                    doc.Close(false);
                    //	return;
                }
                catch (Autodesk.Revit.Exceptions.FamilyContextException ae)
                {
                    TaskDialog.Show("Revit", ae.ToString());
                    doc.Close(false);
                    //	return;
                }
                catch (Autodesk.Revit.Exceptions.FileAccessException ae)
                {
                    TaskDialog.Show("Revit", ae.ToString());
                    doc.Close(false);
                    //	return;
                }
                catch (Autodesk.Revit.Exceptions.FileNotFoundException ae)
                {
                    TaskDialog.Show("Revit", ae.ToString());
                    doc.Close(false);
                    //	return;
                }
                catch (Autodesk.Revit.Exceptions.ApplicationException ae)
                {
                    TaskDialog.Show("Revit", ae.ToString());
                    doc.Close(false);
                    //	return;
                }
                catch (SystemException ae)
                {
                    TaskDialog.Show("Revit", ae.ToString());
                    doc.Close(false);
                    //		return;
                }
            }

            //TaskDialog.Show("Iam","Here");
        }
Esempio n. 8
0
//		public void Rename_Shared_Parameters(string p_name,string new_name)
//		{
        ////			UIDocument uidoc = this.ActiveUIDocument;
        ////			Document CachedDoc = uidoc.Document;
//			Document doc;
//			//Application app;
//			string folder = @"F:\ECG work\ECG_Shared_Parameters\Samples\sample 1\f1";
//
//			// loop through all files in the directory
//
//			foreach (string filename in System.IO.Directory.GetFiles(folder))
//			{
//				try
//				{
//					doc = Application.OpenDocumentFile(filename);
//					if (doc.IsFamilyDocument)
//					{
//
//						Transaction trans = new Transaction(doc, "Remove Param");
//						trans.Start();
//						using(trans)
//						{
//							//ExternalDefinition extdef = RawFindExternalDefinition(Application.OpenSharedParameterFile(), "CompanyName");
//							FamilyManager fm = doc.FamilyManager;
//							FamilyParameter fp = RawConvertSetToList<FamilyParameter>(fm.Parameters).
//								FirstOrDefault(e => e.Definition.Name.Equals(p_name, StringComparison.CurrentCultureIgnoreCase));
//							if (fp == null) throw new Exception("Invalid ParameterName Input!");
//							if(fp.IsShared)
//							{
//								ExternalDefinition extdef = RawFindExternalDefinition(Application.OpenSharedParameterFile(), p_name);
        ////									        Guid guid = extdef.GUID;
        ////									        ParameterType type = extdef.ParameterType;
        ////									        string group_name = extdef.ParameterGroup.ToString();
//
//								//Create_SP(new_name,type,group_name);
//
        ////									        fm.ReplaceParameter(fp,"temp_test",BuiltInParameterGroup.PG_TEXT,true);
        ////									        FamilyParameter new_fp = RawConvertSetToList<FamilyParameter>(fm.Parameters).
        ////									        FirstOrDefault(e => e.Definition.Name.Equals("temp_test", StringComparison.CurrentCultureIgnoreCase));
        ////									        ExternalDefinition new_extdef = RawFindExternalDefinition(Application.OpenSharedParameterFile(), new_name);
        ////									        fm.ReplaceParameter(new_fp,new_extdef,new_extdef.ParameterGroup,true);
//							}
//							trans.Commit();
//							//		doc.SaveAs(filename);
//							doc.Close(true);
//						}
//					}
//
//				}
//				catch (Autodesk.Revit.Exceptions.ArgumentNullException ae)
//				{
//					TaskDialog.Show("Revit",ae.ToString());
//				//	return;
//				}
//				catch (Autodesk.Revit.Exceptions.FamilyContextException ae)
//				{
//					TaskDialog.Show("Revit",ae.ToString());
//				//	return;
//				}
//				catch (Autodesk.Revit.Exceptions.FileAccessException ae)
//				{
//					TaskDialog.Show("Revit",ae.ToString());
//				//	return;
//				}
//				catch (Autodesk.Revit.Exceptions.FileNotFoundException ae)
//				{
//					TaskDialog.Show("Revit",ae.ToString());
//				//	return;
//				}
//				catch (Autodesk.Revit.Exceptions.ApplicationException ae)
//				{
//					TaskDialog.Show("Revit",ae.ToString());
//					return;
//				}
//				catch (SystemException ae)
//				{
//					TaskDialog.Show("Revit",ae.ToString());
//					//return;
//				}
//			}
//
//			//TaskDialog.Show("Iam","Here");
//
//		}

        /*	public static string GetParameterValue(FamilyParameter p)
         *      {
         *              switch(p.StorageType)
         *              {
         *                      case StorageType.Double:
         *                              return p.AsValueString();
         *                      case StorageType.ElementId:
         *                              return p.AsElementId().IntegerValue.ToString();
         *                      case StorageType.Integer:
         *                              return p.AsValueString();
         *                      case StorageType.None:
         *                              return p.AsValueString();
         *                      case StorageType.String:
         *                              return p.AsString();
         *                      default:
         *                              return "";
         *
         *              }
         *      }*/

        public static void Rename_Family_Parameters(List <string> full_files_name)
        {
//			UIDocument uidoc = this.ActiveUIDocument;
//			Document CachedDoc = uidoc.Document;
            Document doc;

            //Application app;
            //string folder = @"F:\ECG work\ECG_Shared_Parameters\Samples\sample 1\f1";

            // loop through all files in the directory

            foreach (string filename in full_files_name)
            {
                doc = CachedApp.OpenDocumentFile(filename);
                try
                {
                    if (doc.IsFamilyDocument)
                    {
                        Transaction trans = new Transaction(doc, "Rename Param");

                        using (trans)
                        {
                            //string s = Globals.new_name_for_rename;


                            trans.Start();
                            FamilyManager   fm = doc.FamilyManager;
                            FamilyParameter fp = RawConvertSetToList <FamilyParameter>(fm.Parameters).
                                                 FirstOrDefault(e => e.Definition.Name.Equals(Globals.parm_to_Replace, StringComparison.CurrentCultureIgnoreCase));
                            //		TaskDialog.Show("Revit","Shared Parameter !!");
                            trans.Commit();
                            if (fp.IsShared)
                            {
                                //		TaskDialog.Show("Revit",fm.Types.Size.ToString());
                                //	Element e = FilteredElementCollector(doc).OfClass(fm.CurrentType);

                                //	Parameter p = fm.Parameter(fp.Definition);
//									if (fp == null) throw new Exception("Invalid ParameterName Input!");
//									string tmp = "Parameter name: "+ fp.Definition.Name + "\n" +"Is Shared!";

                                //TaskDialog.Show("Warrning",tmp);
                                ExternalDefinition edf;
                                //	if(!Globals.all_SP_variables.Contains(fp.Definition.Name))
                                edf = Create_SP(Globals.new_name_for_rename,
                                                Globals.new_type,
                                                Globals.new_group);

                                trans.Start();
                                fm.AddParameter(edf, edf.ParameterGroup, Globals.instance_or_not);
                                //	fm.Parameter(edf.Name).Set(fp.ToString());


                                FamilyParameter fp_tmp = fm.get_Parameter(Globals.new_name_for_rename);
                                foreach (FamilyType t in fm.Types)
                                {
                                    if (t.HasValue(fp))
                                    {
                                        //TaskDialog.Show("R","Here");
                                        fm.CurrentType = t;
                                        if (fp_tmp.StorageType == StorageType.Double)
                                        {
                                            fm.Set(fp_tmp, t.AsDouble(fp).Value);
                                        }
                                        else if (fp_tmp.StorageType == StorageType.Integer)
                                        {
                                            fm.Set(fp_tmp, t.AsInteger(fp).Value);
                                        }
                                        else if (fp_tmp.StorageType == StorageType.ElementId)
                                        {
                                            fm.Set(fp_tmp, t.AsElementId(fp).IntegerValue);
                                        }
                                        else if (fp_tmp.StorageType == StorageType.String)
                                        {
                                            fm.Set(fp_tmp, t.AsString(fp));
                                        }
                                    }
                                    // TaskDialog.Show("R",);
                                }
                                //fm.Types
                                trans.Commit();

                                trans.Start();
                                fm.RemoveParameter(fp);
                                trans.Commit();
                                //	string k = "Parameter name: "+ edf.Name + "\n" +"Is Shared!";

                                //	TaskDialog.Show("Warrning",k);

                                //	fm.AddParameter();
                                //		rename_in_shared_parm_file(fp.Definition.Name,Globals.new_name_for_rename);

                                //doc.Close(false);
                                continue;
                            }
//								if (fp == null) throw new Exception("Invalid ParameterName Input!");
//								fm.RenameParameter(fp,new_name);
                            //      Test();
                            trans.Commit();

                            //ExternalDefinition extdef = RawFindExternalDefinition(Application.OpenSharedParameterFile(), "CompanyName");
//										FamilyManager fm = doc.FamilyManager;
//										FamilyParameter fp = RawConvertSetToList<FamilyParameter>(fm.Parameters).
//									        FirstOrDefault(e => e.Definition.Name.Equals(p_name, StringComparison.CurrentCultureIgnoreCase));
//									    if (fp == null) throw new Exception("Invalid ParameterName Input!");
//									    fm.RenameParameter(fp,new_name);
                            //                                      trans.Commit();
                            //		doc.SaveAs(filename);
                            doc.Close(true);
                        }
                    }
                }
                catch (Autodesk.Revit.Exceptions.ArgumentNullException ae)
                {
                    TaskDialog.Show("Revit", ae.ToString());
                    //trans.Commit();
                    doc.Close(false);
                    //	return;
                }
                catch (Autodesk.Revit.Exceptions.FamilyContextException ae)
                {
                    TaskDialog.Show("Revit", ae.ToString());
                    doc.Close(false);
                    //	return;
                }
                catch (Autodesk.Revit.Exceptions.FileAccessException ae)
                {
                    TaskDialog.Show("Revit", ae.ToString());
                    doc.Close(false);
                    //	return;
                }
                catch (Autodesk.Revit.Exceptions.FileNotFoundException ae)
                {
                    TaskDialog.Show("Revit", ae.ToString());
                    doc.Close(false);
                    //	return;
                }
                catch (Autodesk.Revit.Exceptions.ApplicationException ae)
                {
                    TaskDialog.Show("Revit", ae.ToString());
                    doc.Close(false);
                    //	return;
                }
                catch (SystemException ae)
                {
                    TaskDialog.Show("Revit", ae.ToString());
                    doc.Close(false);
                    //		return;
                }
            }

            //TaskDialog.Show("Iam","Here");
        }
        public Document settingParamenters(string eleName, string eleXPath, string elefName, Document Revit_Doc)
        {
            //MessageBox.Show(elefName);
            //根据名称在工程文件中查找出对应族
            FilteredElementCollector allElements  = new FilteredElementCollector(Revit_Doc);
            ElementClassFilter       familyFilter = new ElementClassFilter(typeof(Family));

            allElements = allElements.WherePasses(familyFilter);
            var filterFamilyList = from f in allElements
                                   where f.Name.ToString() == elefName
                                   select f as Family;
            //MessageBox.Show(filterFamilyList.ToList<Family>()[0].ToString());

            //allElements = new FilteredElementCollector(Revit_Doc);
            //ElementClassFilter familySymbolFilter = new ElementClassFilter(typeof(FamilySymbol));
            //allElements = allElements.WherePasses(familySymbolFilter);
            //var filterList = from f in allElements
            //                 where f.Name.ToString() == eleName && (f as FamilySymbol).Family.ToString() == elefName
            //                 select (f as FamilySymbol).Family ;
            //Family filtedFamily = filterList.ToList<Family>().FirstOrDefault();
            ////if (filterList != null)
            ////{ MessageBox.Show(filterList.ToList<Family>()[0].ToString()); }

            Family filtedFamily = filterFamilyList.ToList <Family>().FirstOrDefault();;

            MessageBox.Show(filtedFamily.Name.ToString());
            //---------------------------------------------------
            //MessageBox.Show(eleName);
            //if (filtedFamily == null)
            //{ MessageBox.Show("filtedFamily is null!!"); }
            //---------------------------------------------------
            //
            Document familyDoc = Revit_Doc.EditFamily(filtedFamily);

            if (null != familyDoc && familyDoc.IsFamilyDocument == true)
            {
                DataTable xdte = new DataTable();
                //读取xls文件
                ExcelHelper ExcelHelper = new ExcelHelper();
                DataTable   xdt         = ExcelHelper.Reading_Excel_Information(eleXPath);
                //获取参数集
                FamilyParameterSet rfadocParas         = familyDoc.FamilyManager.Parameters;
                List <string>      rfadocParasListName = new List <string>();
                foreach (FamilyParameter rfadocPara in rfadocParas)
                {
                    rfadocParasListName.Add(rfadocPara.Definition.Name);
                }

                FamilyManager familyMgr = familyDoc.FamilyManager;

                if (clearsymbol == true)
                {
                    //清空族内所有类型 仅保留默认族类型
                    int typesizes = familyMgr.Types.Size;
                    if (familyMgr.Types.Size > 1 && familyMgr.Types.Size != 0)
                    {
                        for (int typenumber = 0; typenumber < typesizes - 1; typenumber++)
                        {
                            if (familyMgr.CurrentType != null)
                            {
                                Transaction DeleteType = new Transaction(familyDoc, "DeleteType");
                                DeleteType.Start();
                                familyMgr.DeleteCurrentType();
                                DeleteType.Commit();
                            }
                        }
                    }
                }

                if (clearpara == true)
                {
                    //清空族内所有参数条目
                    foreach (FamilyParameter fp in familyMgr.Parameters)
                    {
                        if (fp.Definition.ParameterGroup == BuiltInParameterGroup.PG_ELECTRICAL)
                        {
                            Transaction RemoveParameter = new Transaction(familyDoc, "RemoveParameter");
                            RemoveParameter.Start();
                            familyMgr.RemoveParameter(fp);
                            RemoveParameter.Commit();
                        }
                    }
                }
                //开始添加

                Transaction addParameter = new Transaction(familyDoc, "AddParameters");
                addParameter.Start();

                string paraname = null;
                BuiltInParameterGroup paragroup = BuiltInParameterGroup.PG_ELECTRICAL;;
                ParameterType         paraType  = ParameterType.Text;;
                bool isInstance = false;

                string        paravalue         = null;
                List <string> distinctparanames = new List <string>();

                //判断xls表中与原有rfa文件内重复的条目  放入distinctparanames列表
                for (int i = 0; i < xdt.Rows.Count; i++)
                {
                    foreach (FamilyParameter fp in familyMgr.Parameters)
                    {
                        if (fp.Definition.Name == xdt.Rows[i]["paraname"].ToString())
                        {
                            distinctparanames.Add(fp.Definition.Name);
                            MessageBox.Show(fp.Definition.Name);
                        }
                    }
                }
                //遍历xls添加属性条目
                for (int i = 0; i < xdt.Rows.Count; i++)
                {
                    //获取表中条目名称判断是否重复 重复则继续下一次循环
                    paraname = xdt.Rows[i]["paraname"].ToString();

                    foreach (string disstr in distinctparanames)
                    {
                        if (disstr == paraname)
                        {
                            continue;
                        }
                    }

                    //通过的条目名称
                    if (xdt.Rows[i]["paragroup"] == null)
                    {
                        paragroup = BuiltInParameterGroup.PG_ELECTRICAL;
                    }
                    else
                    {
                        #region  参数分组对照  用于RevitAPI2016A
                        switch (xdt.Rows[i]["paragroup"].ToString())
                        {
                        case "PG_RELEASES_MEMBER_FORCES": paragroup = BuiltInParameterGroup.PG_RELEASES_MEMBER_FORCES; break;

                        case "PG_SECONDARY_END": paragroup = BuiltInParameterGroup.PG_SECONDARY_END; break;

                        case "PG_PRIMARY_END": paragroup = BuiltInParameterGroup.PG_PRIMARY_END; break;

                        case "PG_MOMENTS": paragroup = BuiltInParameterGroup.PG_MOMENTS; break;

                        case "PG_FORCES": paragroup = BuiltInParameterGroup.PG_FORCES; break;

                        case "PG_FABRICATION_PRODUCT_DATA": paragroup = BuiltInParameterGroup.PG_GEOMETRY_POSITIONING; break;

                        case "PG_REFERENCE": paragroup = BuiltInParameterGroup.PG_REFERENCE; break;

                        case "PG_GEOMETRY_POSITIONING": paragroup = BuiltInParameterGroup.PG_GEOMETRY_POSITIONING; break;

                        case "PG_DIVISION_GEOMETRY": paragroup = BuiltInParameterGroup.PG_DIVISION_GEOMETRY; break;

                        case "PG_SEGMENTS_FITTINGS": paragroup = BuiltInParameterGroup.PG_SEGMENTS_FITTINGS; break;

                        case "PG_CONTINUOUSRAIL_END_TOP_EXTENSION": paragroup = BuiltInParameterGroup.PG_CONTINUOUSRAIL_END_TOP_EXTENSION; break;

                        case "PG_CONTINUOUSRAIL_BEGIN_BOTTOM_EXTENSION": paragroup = BuiltInParameterGroup.PG_CONTINUOUSRAIL_BEGIN_BOTTOM_EXTENSION; break;

                        case "PG_STAIRS_WINDERS": paragroup = BuiltInParameterGroup.PG_STAIRS_WINDERS; break;

                        case "PG_STAIRS_SUPPORTS": paragroup = BuiltInParameterGroup.PG_STAIRS_SUPPORTS; break;

                        case "PG_STAIRS_OPEN_END_CONNECTION": paragroup = BuiltInParameterGroup.PG_STAIRS_OPEN_END_CONNECTION; break;

                        case "PG_RAILING_SYSTEM_SECONDARY_FAMILY_HANDRAILS": paragroup = BuiltInParameterGroup.PG_RAILING_SYSTEM_SECONDARY_FAMILY_HANDRAILS; break;

                        case "PG_TERMINTATION": paragroup = BuiltInParameterGroup.PG_TERMINTATION; break;

                        case "PG_STAIRS_TREADS_RISERS": paragroup = BuiltInParameterGroup.PG_STAIRS_TREADS_RISERS; break;

                        case "PG_STAIRS_CALCULATOR_RULES": paragroup = BuiltInParameterGroup.PG_STAIRS_CALCULATOR_RULES; break;

                        case "PG_SPLIT_PROFILE_DIMENSIONS": paragroup = BuiltInParameterGroup.PG_SPLIT_PROFILE_DIMENSIONS; break;

                        case "PG_LENGTH": paragroup = BuiltInParameterGroup.PG_LENGTH; break;

                        case "PG_NODES": paragroup = BuiltInParameterGroup.PG_NODES; break;

                        case "PG_ANALYTICAL_PROPERTIES": paragroup = BuiltInParameterGroup.PG_ANALYTICAL_PROPERTIES; break;

                        case "PG_ANALYTICAL_ALIGNMENT": paragroup = BuiltInParameterGroup.PG_ANALYTICAL_ALIGNMENT; break;

                        case "PG_SYSTEMTYPE_RISEDROP": paragroup = BuiltInParameterGroup.PG_SYSTEMTYPE_RISEDROP; break;

                        case "PG_LINING": paragroup = BuiltInParameterGroup.PG_LINING; break;

                        case "PG_INSULATION": paragroup = BuiltInParameterGroup.PG_INSULATION; break;

                        case "PG_OVERALL_LEGEND": paragroup = BuiltInParameterGroup.PG_OVERALL_LEGEND; break;

                        case "PG_VISIBILITY": paragroup = BuiltInParameterGroup.PG_VISIBILITY; break;

                        case "PG_SUPPORT": paragroup = BuiltInParameterGroup.PG_SUPPORT; break;

                        case "PG_RAILING_SYSTEM_SEGMENT_V_GRID": paragroup = BuiltInParameterGroup.PG_RAILING_SYSTEM_SEGMENT_V_GRID; break;

                        case "PG_RAILING_SYSTEM_SEGMENT_U_GRID": paragroup = BuiltInParameterGroup.PG_RAILING_SYSTEM_SEGMENT_U_GRID; break;

                        case "PG_RAILING_SYSTEM_SEGMENT_POSTS": paragroup = BuiltInParameterGroup.PG_RAILING_SYSTEM_SEGMENT_POSTS; break;

                        case "PG_RAILING_SYSTEM_SEGMENT_PATTERN_REMAINDER": paragroup = BuiltInParameterGroup.PG_RAILING_SYSTEM_SEGMENT_PATTERN_REMAINDER; break;

                        case "PG_RAILING_SYSTEM_SEGMENT_PATTERN_REPEAT": paragroup = BuiltInParameterGroup.PG_RAILING_SYSTEM_SEGMENT_PATTERN_REPEAT; break;

                        case "PG_RAILING_SYSTEM_FAMILY_SEGMENT_PATTERN": paragroup = BuiltInParameterGroup.PG_RAILING_SYSTEM_FAMILY_SEGMENT_PATTERN; break;

                        case "PG_RAILING_SYSTEM_FAMILY_HANDRAILS": paragroup = BuiltInParameterGroup.PG_RAILING_SYSTEM_FAMILY_HANDRAILS; break;

                        case "PG_RAILING_SYSTEM_FAMILY_TOP_RAIL": paragroup = BuiltInParameterGroup.PG_RAILING_SYSTEM_FAMILY_TOP_RAIL; break;

                        case "PG_CONCEPTUAL_ENERGY_DATA_BUILDING_SERVICES": paragroup = BuiltInParameterGroup.PG_CONCEPTUAL_ENERGY_DATA_BUILDING_SERVICES; break;

                        case "PG_DATA": paragroup = BuiltInParameterGroup.PG_DATA; break;

                        case "PG_ELECTRICAL_CIRCUITING": paragroup = BuiltInParameterGroup.PG_ELECTRICAL_CIRCUITING; break;

                        case "PG_GENERAL": paragroup = BuiltInParameterGroup.PG_GENERAL; break;

                        case "PG_FLEXIBLE": paragroup = BuiltInParameterGroup.PG_FLEXIBLE; break;

                        case "PG_ENERGY_ANALYSIS_CONCEPTUAL_MODEL": paragroup = BuiltInParameterGroup.PG_ENERGY_ANALYSIS_CONCEPTUAL_MODEL; break;

                        case "PG_ENERGY_ANALYSIS_DETAILED_MODEL": paragroup = BuiltInParameterGroup.PG_ENERGY_ANALYSIS_DETAILED_MODEL; break;

                        case "PG_ENERGY_ANALYSIS_DETAILED_AND_CONCEPTUAL_MODELS": paragroup = BuiltInParameterGroup.PG_ENERGY_ANALYSIS_DETAILED_AND_CONCEPTUAL_MODELS; break;

                        case "PG_FITTING": paragroup = BuiltInParameterGroup.PG_FITTING; break;

                        case "PG_CONCEPTUAL_ENERGY_DATA": paragroup = BuiltInParameterGroup.PG_CONCEPTUAL_ENERGY_DATA; break;

                        case "PG_AREA": paragroup = BuiltInParameterGroup.PG_AREA; break;

                        case "PG_ADSK_MODEL_PROPERTIES": paragroup = BuiltInParameterGroup.PG_ADSK_MODEL_PROPERTIES; break;

                        case "PG_CURTAIN_GRID_V": paragroup = BuiltInParameterGroup.PG_CURTAIN_GRID_V; break;

                        case "PG_CURTAIN_GRID_U": paragroup = BuiltInParameterGroup.PG_CURTAIN_GRID_U; break;

                        case "PG_DISPLAY": paragroup = BuiltInParameterGroup.PG_DISPLAY; break;

                        case "PG_ANALYSIS_RESULTS": paragroup = BuiltInParameterGroup.PG_ANALYSIS_RESULTS; break;

                        case "PG_SLAB_SHAPE_EDIT": paragroup = BuiltInParameterGroup.PG_SLAB_SHAPE_EDIT; break;

                        case "PG_LIGHT_PHOTOMETRICS": paragroup = BuiltInParameterGroup.PG_LIGHT_PHOTOMETRICS; break;

                        case "PG_PATTERN_APPLICATION": paragroup = BuiltInParameterGroup.PG_PATTERN_APPLICATION; break;

                        case "PG_GREEN_BUILDING": paragroup = BuiltInParameterGroup.PG_GREEN_BUILDING; break;

                        case "PG_PROFILE_2": paragroup = BuiltInParameterGroup.PG_PROFILE_2; break;

                        case "PG_PROFILE_1": paragroup = BuiltInParameterGroup.PG_PROFILE_1; break;

                        case "PG_PROFILE": paragroup = BuiltInParameterGroup.PG_PROFILE; break;

                        case "PG_TRUSS_FAMILY_BOTTOM_CHORD": paragroup = BuiltInParameterGroup.PG_TRUSS_FAMILY_BOTTOM_CHORD; break;

                        case "PG_TRUSS_FAMILY_TOP_CHORD": paragroup = BuiltInParameterGroup.PG_TRUSS_FAMILY_TOP_CHORD; break;

                        case "PG_TRUSS_FAMILY_DIAG_WEB": paragroup = BuiltInParameterGroup.PG_TRUSS_FAMILY_DIAG_WEB; break;

                        case "PG_TRUSS_FAMILY_VERT_WEB": paragroup = BuiltInParameterGroup.PG_TRUSS_FAMILY_VERT_WEB; break;

                        case "PG_TITLE": paragroup = BuiltInParameterGroup.PG_TITLE; break;

                        case "PG_FIRE_PROTECTION": paragroup = BuiltInParameterGroup.PG_FIRE_PROTECTION; break;

                        case "PG_ROTATION_ABOUT": paragroup = BuiltInParameterGroup.PG_ROTATION_ABOUT; break;

                        case "PG_TRANSLATION_IN": paragroup = BuiltInParameterGroup.PG_TRANSLATION_IN; break;

                        case "PG_ANALYTICAL_MODEL": paragroup = BuiltInParameterGroup.PG_ANALYTICAL_MODEL; break;

                        case "PG_REBAR_ARRAY": paragroup = BuiltInParameterGroup.PG_REBAR_ARRAY; break;

                        case "PG_REBAR_SYSTEM_LAYERS": paragroup = BuiltInParameterGroup.PG_REBAR_SYSTEM_LAYERS; break;

                        case "PG_CURTAIN_GRID": paragroup = BuiltInParameterGroup.PG_CURTAIN_GRID; break;

                        case "PG_CURTAIN_MULLION_2": paragroup = BuiltInParameterGroup.PG_CURTAIN_MULLION_2; break;

                        case "PG_CURTAIN_MULLION_HORIZ": paragroup = BuiltInParameterGroup.PG_CURTAIN_MULLION_HORIZ; break;

                        case "PG_CURTAIN_MULLION_1": paragroup = BuiltInParameterGroup.PG_CURTAIN_MULLION_1; break;

                        case "PG_CURTAIN_MULLION_VERT": paragroup = BuiltInParameterGroup.PG_CURTAIN_MULLION_VERT; break;

                        case "PG_CURTAIN_GRID_2": paragroup = BuiltInParameterGroup.PG_CURTAIN_GRID_2; break;

                        case "PG_CURTAIN_GRID_HORIZ": paragroup = BuiltInParameterGroup.PG_CURTAIN_GRID_HORIZ; break;

                        case "PG_CURTAIN_GRID_1": paragroup = BuiltInParameterGroup.PG_CURTAIN_GRID_1; break;

                        case "PG_CURTAIN_GRID_VERT": paragroup = BuiltInParameterGroup.PG_CURTAIN_GRID_VERT; break;

                        case "PG_IFC": paragroup = BuiltInParameterGroup.PG_IFC; break;

                        case "PG_AELECTRICAL": paragroup = BuiltInParameterGroup.PG_AELECTRICAL; break;

                        case "PG_ENERGY_ANALYSIS": paragroup = BuiltInParameterGroup.PG_ENERGY_ANALYSIS; break;

                        case "PG_STRUCTURAL_ANALYSIS": paragroup = BuiltInParameterGroup.PG_STRUCTURAL_ANALYSIS; break;

                        case "PG_MECHANICAL_AIRFLOW": paragroup = BuiltInParameterGroup.PG_MECHANICAL_AIRFLOW; break;

                        case "PG_MECHANICAL_LOADS": paragroup = BuiltInParameterGroup.PG_MECHANICAL_LOADS; break;

                        case "PG_ELECTRICAL_LOADS": paragroup = BuiltInParameterGroup.PG_ELECTRICAL_LOADS; break;

                        case "PG_ELECTRICAL_LIGHTING": paragroup = BuiltInParameterGroup.PG_ELECTRICAL_LIGHTING; break;

                        case "PG_TEXT": paragroup = BuiltInParameterGroup.PG_TEXT; break;

                        case "PG_VIEW_CAMERA": paragroup = BuiltInParameterGroup.PG_VIEW_CAMERA; break;

                        case "PG_VIEW_EXTENTS": paragroup = BuiltInParameterGroup.PG_VIEW_EXTENTS; break;

                        case "PG_PATTERN": paragroup = BuiltInParameterGroup.PG_PATTERN; break;

                        case "PG_CONSTRAINTS": paragroup = BuiltInParameterGroup.PG_CONSTRAINTS; break;

                        case "PG_PHASING": paragroup = BuiltInParameterGroup.PG_PHASING; break;

                        case "PG_MECHANICAL": paragroup = BuiltInParameterGroup.PG_MECHANICAL; break;

                        case "PG_STRUCTURAL": paragroup = BuiltInParameterGroup.PG_STRUCTURAL; break;

                        case "PG_PLUMBING": paragroup = BuiltInParameterGroup.PG_PLUMBING; break;

                        case "PG_ELECTRICAL": paragroup = BuiltInParameterGroup.PG_ELECTRICAL; break;

                        case "PG_STAIR_STRINGERS": paragroup = BuiltInParameterGroup.PG_STAIR_STRINGERS; break;

                        case "PG_STAIR_RISERS": paragroup = BuiltInParameterGroup.PG_STAIR_RISERS; break;

                        case "PG_STAIR_TREADS": paragroup = BuiltInParameterGroup.PG_STAIR_TREADS; break;

                        case "PG_MATERIALS": paragroup = BuiltInParameterGroup.PG_MATERIALS; break;

                        case "PG_GRAPHICS": paragroup = BuiltInParameterGroup.PG_GRAPHICS; break;

                        case "PG_CONSTRUCTION": paragroup = BuiltInParameterGroup.PG_CONSTRUCTION; break;

                        case "PG_GEOMETRY": paragroup = BuiltInParameterGroup.PG_GEOMETRY; break;

                        case "PG_IDENTITY_DATA": paragroup = BuiltInParameterGroup.PG_IDENTITY_DATA; break;

                        case "INVALID": paragroup = BuiltInParameterGroup.INVALID; break;
                        }
                        #endregion
                    }
                    if (xdt.Rows[i]["paratype"] == null)
                    {
                        paraType = ParameterType.Text;
                    }
                    else
                    {
                        #region 参数类型对照 用于RevitAPI2016
                        switch (xdt.Rows[i]["paratype"].ToString())
                        {
                        case "Text": paraType = ParameterType.Text; break;

                            //case "Invalid": paraType = ParameterType.Invalid; break;
                            //case "Integer": paraType = ParameterType.Integer; break;

                            //case "Number": paraType = ParameterType.Number; break;
                            //case "Length": paraType = ParameterType.Length; break;
                            //case "Volume": paraType = ParameterType.Volume; break;
                            //case "Area": paraType = ParameterType.Area; break;
                            //case "Angle": paraType = ParameterType.Angle; break;
                            //case "URL": paraType = ParameterType.URL; break;
                            //case "Material": paraType = ParameterType.Material; break;
                            //case "YesNo": paraType = ParameterType.YesNo; break;
                            //case "Force": paraType = ParameterType.Force; break;
                            //case "NumberOfPoles": paraType = ParameterType.NumberOfPoles; break;
                            //case "AreaForce": paraType = ParameterType.AreaForce; break;
                            //case "Moment": paraType = ParameterType.Moment; break;
                            //case "FixtureUnit": paraType = ParameterType.FixtureUnit; break;
                            //case "FamilyType": paraType = ParameterType.FamilyType; break;
                            //case "LoadClassification": paraType = ParameterType.LoadClassification; break;
                            //case "Image": paraType = ParameterType.Image; break;
                            //case "HVACDensity": paraType = ParameterType.HVACDensity; break;
                            //case "HVACEnergy": paraType = ParameterType.HVACEnergy; break;
                            //case "HVACFriction": paraType = ParameterType.HVACFriction; break;
                            //case "HVACPower": paraType = ParameterType.HVACPower; break;
                            //case "HVACPowerDensity": paraType = ParameterType.HVACPowerDensity; break;
                            //case "HVACPressure": paraType = ParameterType.HVACPressure; break;
                            //case "HVACTemperature": paraType = ParameterType.HVACTemperature; break;
                            //case "HVACVelocity": paraType = ParameterType.HVACVelocity; break;
                            //case "HVACAirflow": paraType = ParameterType.HVACAirflow; break;
                            //case "HVACDuctSize": paraType = ParameterType.HVACDuctSize; break;
                            //case "HVACCrossSection": paraType = ParameterType.HVACCrossSection; break;
                            //case "HVACHeatGain": paraType = ParameterType.HVACHeatGain; break;
                            //case "ElectricalCurrent": paraType = ParameterType.ElectricalCurrent; break;
                            //case "ElectricalPotential": paraType = ParameterType.ElectricalPotential; break;
                            //case "ElectricalFrequency": paraType = ParameterType.ElectricalFrequency; break;
                            //case "ElectricalIlluminance": paraType = ParameterType.ElectricalIlluminance; break;
                            //case "ElectricalLuminousFlux": paraType = ParameterType.ElectricalLuminousFlux; break;
                            //case "ElectricalPower": paraType = ParameterType.ElectricalPower; break;
                            //case "HVACRoughness": paraType = ParameterType.HVACRoughness; break;
                            //case "ElectricalApparentPower": paraType = ParameterType.ElectricalApparentPower; break;
                            //case "ElectricalPowerDensity": paraType = ParameterType.ElectricalPowerDensity; break;
                            //case "PipingDensity": paraType = ParameterType.PipingDensity; break;
                            //case "PipingFlow": paraType = ParameterType.PipingFlow; break;
                            //case "PipingFriction": paraType = ParameterType.PipingFriction; break;
                            //case "PipingPressure": paraType = ParameterType.PipingPressure; break;
                            //case "PipingTemperature": paraType = ParameterType.PipingTemperature; break;
                            //case "PipingVelocity": paraType = ParameterType.PipingVelocity; break;
                            //case "PipingViscosity": paraType = ParameterType.PipingViscosity; break;
                            //case "PipeSize": paraType = ParameterType.PipeSize; break;
                            //case "PipingRoughness": paraType = ParameterType.PipingRoughness; break;
                            //case "Stress": paraType = ParameterType.Stress; break;
                            //case "UnitWeight": paraType = ParameterType.UnitWeight; break;
                            //case "ThermalExpansion": paraType = ParameterType.ThermalExpansion; break;
                            //case "LinearMoment": paraType = ParameterType.LinearMoment; break;
                            //case "ForcePerLength": paraType = ParameterType.ForcePerLength; break;
                            //case "ForceLengthPerAngle": paraType = ParameterType.ForceLengthPerAngle; break;
                            //case "LinearForcePerLength": paraType = ParameterType.LinearForcePerLength; break;
                            //case "LinearForceLengthPerAngle": paraType = ParameterType.LinearForceLengthPerAngle; break;
                            //case "AreaForcePerLength": paraType = ParameterType.AreaForcePerLength; break;
                            //case "PipingVolume": paraType = ParameterType.PipingVolume; break;
                            //case "HVACViscosity": paraType = ParameterType.HVACViscosity; break;
                            //case "HVACCoefficientOfHeatTransfer": paraType = ParameterType.HVACCoefficientOfHeatTransfer; break;
                            //case "HVACAirflowDensity": paraType = ParameterType.HVACAirflowDensity; break;
                            //case "Slope": paraType = ParameterType.Slope; break;
                            //case "HVACCoolingLoad": paraType = ParameterType.HVACCoolingLoad; break;
                            //case "HVACCoolingLoadDividedByArea": paraType = ParameterType.HVACCoolingLoadDividedByArea; break;
                            //case "HVACCoolingLoadDividedByVolume": paraType = ParameterType.HVACCoolingLoadDividedByVolume; break;
                            //case "HVACHeatingLoad": paraType = ParameterType.HVACHeatingLoad; break;
                            //case "HVACHeatingLoadDividedByArea": paraType = ParameterType.HVACHeatingLoadDividedByArea; break;
                            //case "Weight": paraType = ParameterType.Weight; break;
                        }
                        #endregion
                    }
                    if (xdt.Rows[i]["paratag"].ToString() == "是")
                    {
                        isInstance = true;
                    }
                    else if (xdt.Rows[i]["paratag"].ToString() == "否")
                    {
                        isInstance = false;
                    }
                    if (xdt.Rows[i]["paravalue"].ToString() == null)
                    {
                        paravalue = "NA";
                    }
                    else
                    {
                        paravalue = xdt.Rows[i]["paravalue"].ToString();
                    }

                    //bool checkDistinct = false;
                    //foreach (FamilyParameter fp in familyMgr.Parameters)
                    //{
                    //    if (fp.Definition.Name == xdt.Rows[i]["paraname"].ToString())
                    //    {
                    //        checkDistinct = true;
                    //    }
                    //}
                    //if (checkDistinct == true)
                    //{
                    //    continue;
                    //}
                    //else
                    //{
                    try
                    {
                        FamilyParameter newParameter = familyMgr.AddParameter(paraname, paragroup, paraType, isInstance);
                    }
                    catch (Exception efec)
                    {
                        MessageBox.Show(efec.ToString());
                        continue;
                    }
                    //创建族参数(每个参数两秒)
                    //familyMgr.Set(newParameter, paravalue);
                    //}
                }

                try
                {
                    for (int i = 0; i < xdt.Rows.Count; i++)
                    {
                        paraname = xdt.Rows[i]["paraname"].ToString();
                        foreach (FamilyParameter fp in familyMgr.Parameters)
                        {
                            StorageType fst = fp.StorageType;
                            if (fp.Definition.Name == xdt.Rows[i]["paraname"].ToString())
                            {
                                if (xdt.Rows[i]["paravalue"].ToString() == null && fst.ToString() == "String")
                                {
                                    paravalue = "NA";
                                    familyMgr.Set(fp, paravalue);
                                }
                                else
                                {
                                    //paravalue = xdt.Rows[i]["paravalue"].ToString();
                                    #region
                                    switch (fst.ToString())
                                    {
                                    case "Integer": int paravint = Convert.ToInt32(xdt.Rows[i]["paravalue"].ToString()); familyMgr.Set(fp, paravint);; break;

                                    case "Double": double paravdouble = Convert.ToDouble(xdt.Rows[i]["paravalue"].ToString()); familyMgr.Set(fp, paravdouble); break;

                                    case "String": string paravstring = xdt.Rows[i]["paravalue"].ToString(); familyMgr.Set(fp, paravstring); break;

                                    case "ElementId": ElementId paravid = new ElementId(Convert.ToInt32(xdt.Rows[i]["paravalue"].ToString())); familyMgr.Set(fp, paravid); break;

                                    case "None":   break;
                                    }
                                    #endregion
                                }
                            }
                        }
                    }
                }
                catch (Exception eeef)
                { /*MessageBox.Show(eeef.ToString());*/ }

                SaveOptions opt = new SaveOptions();
                addParameter.Commit();
            }

            return(familyDoc);
        }
        public void settingFamilyParamentersValue(Document doc, string familyFilePath, string parameterFilePath)
        {
            //读取xls文件
            ExcelHelper ExcelHelper = new ExcelHelper();
            DataTable   dt          = ExcelHelper.Reading_Excel_Information(parameterFilePath);

            //获取参数集
            FamilyParameterSet rfadocParas         = doc.FamilyManager.Parameters;
            List <string>      rfadocParasListName = new List <string>();

            foreach (FamilyParameter rfadocPara in rfadocParas)
            {
                rfadocParasListName.Add(rfadocPara.Definition.Name);
            }

            #region
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                List <string> ls_ParameterNames = new List <string>();
                //ls_ParameterNames.Add(dt.Rows[i][0].ToString);
            }
            #endregion

            #region 族参数操作1
            FamilyManager familyMgr = doc.FamilyManager;

            //清空族内所有类型 仅保留默认族类型
            int typesizes = familyMgr.Types.Size;
            if (familyMgr.Types.Size > 1 && familyMgr.Types.Size != 0)
            {
                for (int typenumber = 0; typenumber < typesizes - 1; typenumber++)
                {
                    if (familyMgr.CurrentType != null)
                    {
                        Transaction DeleteType = new Transaction(doc, "DeleteType");
                        DeleteType.Start();
                        familyMgr.DeleteCurrentType();
                        DeleteType.Commit();
                    }
                }
            }

            //清空族内所有参数条目
            foreach (FamilyParameter fp in familyMgr.Parameters)
            {
                if (fp.Definition.ParameterGroup == BuiltInParameterGroup.PG_ELECTRICAL)
                {
                    Transaction RemoveParameter = new Transaction(doc, "RemoveParameter");
                    RemoveParameter.Start();
                    familyMgr.RemoveParameter(fp);
                    RemoveParameter.Commit();
                }
            }

            //开始添加

            Transaction addParameter = new Transaction(doc, "AddParameters");
            addParameter.Start();

            List <string> paraNames   = new List <string>();
            List <bool>   isInstances = new List <bool>();
            List <string> paravalues  = new List <string>();
            //设置族参数的类别和类型
            BuiltInParameterGroup paraGroup   = BuiltInParameterGroup.PG_ELECTRICAL;
            BuiltInParameterGroup paraGroupEx = BuiltInParameterGroup.PG_GENERAL;
            ParameterType         paraType    = ParameterType.Text;

            for (int i = 0; i < dt.Rows.Count; i++)
            {
                string paraName = dt.Rows[i]["paraname"].ToString();
                paraNames.Add(paraName);

                //设置族参数为实例参数
                bool isInstance = true;
                if (dt.Rows[i]["paratag"].ToString() == "是")
                {
                    isInstance = true;
                }
                else
                {
                    isInstance = false;
                }
                isInstances.Add(isInstance);

                paravalues.Add(dt.Rows[i]["paravalue"].ToString());
            }

            for (int k = 0; k < paraNames.Count(); k++)
            {
                int tag = 0;
                if (paraNames[k].Contains("M_") || paraNames[k].Contains("D_") || paraNames[k].Contains("设计-") || paraNames[k].Contains("管理-"))
                {
                    FamilyParameter newParameter = familyMgr.AddParameter(paraNames[k], paraGroup, paraType, isInstances[k]);
                    //创建族参数(每个参数两秒)
                    familyMgr.Set(newParameter, paravalues[k]);
                }
                else
                {
                    foreach (var fpln in rfadocParasListName)
                    {
                        if (paraNames[k] == fpln)
                        {
                            tag = 1;
                        }
                    }
                    if (tag == 1)
                    {
                        continue;
                    }
                    else
                    {
                        FamilyParameter newParameter = familyMgr.AddParameter(paraNames[k], paraGroupEx, paraType, isInstances[k]);
                    }
                }
            }
            SaveOptions opt = new SaveOptions();
            //doc.Save(opt);
            //doc.SaveAs(@"D:\"+);
            //doc.Close();
            addParameter.Commit();
            #endregion
        }
Esempio n. 11
0
        public AdminFamiliesBRPRequest(UIApplication uiApp, String text)
        {
            MainUI        uiForm        = BARevitTools.Application.thisApp.newMainUi;
            RVTDocument   doc           = uiApp.ActiveUIDocument.Document;
            SaveAsOptions saveAsOptions = new SaveAsOptions();

            saveAsOptions.Compact               = true;
            saveAsOptions.MaximumBackups        = 3;
            saveAsOptions.OverwriteExistingFile = true;

            //Get how many families to evaluate for the progress bar steps and resetting the progress bar
            int filesToProcess = 0;

            foreach (DataGridViewRow rowCount in uiForm.adminFamiliesBRPFamiliesDGV.Rows)
            {
                if (rowCount.Cells[0].Value.ToString() == "True")
                {
                    filesToProcess++;
                }
            }
            uiForm.adminFamiliesBRPProgressBar.Value   = 0;
            uiForm.adminFamiliesBRPProgressBar.Minimum = 0;
            uiForm.adminFamiliesBRPProgressBar.Maximum = filesToProcess;
            uiForm.adminFamiliesBRPProgressBar.Step    = 1;
            uiForm.adminFamiliesBRPProgressBar.Visible = true;

            //Stop all edits to the DataGridView table
            uiForm.adminFamiliesBAPParametersDGV.EndEdit();
            foreach (DataGridViewRow row in uiForm.adminFamiliesBRPFamiliesDGV.Rows)
            {
                //If the checkbox to select the family is not in a null state, continue
                if (row.Cells["Family Select"].Value != null)
                {
                    //If the checkbox to select the family is checked, continue
                    if (row.Cells["Family Select"].Value.ToString() == "True")
                    {
                        //Get the family path for the selected row and make a dictionary to store the parameters by name
                        string filePath = row.Cells["Family Path"].Value.ToString();
                        Dictionary <string, FamilyParameter> famParams = new Dictionary <string, FamilyParameter>();
                        try
                        {
                            //Open the file and verify it is a family document
                            RVTDocument famDoc = RVTOperations.OpenRevitFile(uiApp, filePath);
                            if (famDoc.IsFamilyDocument)
                            {
                                //saveFamily will be used to determine if the family needs saved or just closed. No need to save the family if nothing was modified
                                bool saveFamily = false;
                                //Get the Family Manager to retrieve the parameters, then add each parameter to the dictionary by name
                                FamilyManager familyManager = famDoc.FamilyManager;
                                foreach (FamilyParameter famParam in familyManager.Parameters)
                                {
                                    if (!famParams.Keys.Contains(famParam.Definition.Name))
                                    {
                                        famParams.Add(famParam.Definition.Name, famParam);
                                    }
                                    else
                                    {
                                        continue;
                                    }
                                }

                                //Cycle through the rows of parameter to remove
                                foreach (DataGridViewRow paramRow in uiForm.adminFamiliesBRPParametersDGV.Rows)
                                {
                                    //If the cell for the parameter name is not null, continue
                                    if (paramRow.Cells["Parameter Name"].Value != null)
                                    {
                                        //Get the name of the parameter to attempt removal, and see if it exists in the dictionary
                                        string name = paramRow.Cells["Parameter Name"].Value.ToString();
                                        if (famParams.Keys.Contains(name))
                                        {
                                            try
                                            {
                                                //Attempt to remove the parameter. This may not be possible if a built-in parameter was specified by name, so the Catch will throw the message stating the name of the parameter that could not be removed and which family it was attempted on
                                                using (Transaction t = new Transaction(famDoc, "Remove Parameter"))
                                                {
                                                    t.Start();
                                                    familyManager.RemoveParameter(famParams[name]);
                                                    t.Commit();
                                                    saveFamily = true;
                                                }
                                            }
                                            catch
                                            {
                                                MessageBox.Show(String.Format("Could not remove parameter '{0}' for family {1}", name, famDoc.Title));
                                            }
                                        }
                                    }
                                }

                                //If there were any changes, save the family. If not, continue on to close the family
                                if (saveFamily == true)
                                {
                                    ModelPath modelPath = ModelPathUtils.ConvertUserVisiblePathToModelPath(filePath);
                                    famDoc.SaveAs(filePath, saveAsOptions);
                                }
                            }
                            //Close the family document
                            famDoc.Close(false);
                        }
                        catch
                        {
                            MessageBox.Show("The family could not be opened, likely due to being a newer version of Revit");
                        }
                        finally
                        {
                            //No matter what, step forward the progress bar
                            uiForm.adminFamiliesBRPProgressBar.PerformStep();
                        }
                    }
                    else
                    {
                        continue;
                    }
                }
            }
            GeneralOperations.CleanRfaBackups(uiForm.adminFamiliesBRPFamilyDirectory);
            uiForm.adminFamiliesBRPProgressBar.Visible = false;
        }
Esempio n. 12
0
        private void EditFamily(Document famDoc, ExternalDefinition ExDef)
        {
            View view = famDoc.FindElement(typeof(View), targetName: "视图 1") as View;

            if (view == null)
            {
                throw new InvalidOperationException("view is null! ");
            }
            // 对于开挖土体族,其与模型土体不同的地方在于,它还是
            using (Transaction tranFam = new Transaction(famDoc))
            {
                try
                {
                    tranFam.SetName("对族文档进行修改");
                    tranFam.Start();
                    // ---------------------------------------------------------------------------------------------------------

                    // 添加参数
                    FamilyManager FM = famDoc.FamilyManager;

                    //’在进行参数读写之前,首先需要判断当前族类型是否存在,如果不存在,读写族参数都是不可行的
                    if (FM.CurrentType == null)
                    {
                        FM.NewType("CurrentType"); // 随便取个名字即可,后期会将族中的第一个族类型名称统一进行修改。
                    }

                    //
                    FamilyParameter Para_Depth;
                    Para_Depth = FM.get_Parameter("Depth");


                    FM.RemoveParameter(Para_Depth);

                    Para_Depth = FM.AddParameter(ExDef, BuiltInParameterGroup.PG_GEOMETRY, isInstance: true);

                    //' give initial values
                    // FM.Set(Para_Depth, depth); // 这里不知为何为给出报错:InvalidOperationException:There is no current type.
                    Extrusion extru = famDoc.FindElement(typeof(Extrusion)) as Extrusion;

                    // 添加标注
                    PlanarFace TopFace = GeoHelper.FindFace(extru, new XYZ(0, 0, 1));
                    PlanarFace BotFace = GeoHelper.FindFace(extru, new XYZ(0, 0, -1));

                    // make an array of references
                    ReferenceArray refArray = new ReferenceArray();
                    refArray.Append(TopFace.Reference);
                    refArray.Append(BotFace.Reference);
                    // define a demension line
                    var  a       = GeoHelper.FindFace(extru, new XYZ(0, 0, 1)).Origin;
                    Line DimLine = Line.CreateBound(TopFace.Origin, BotFace.Origin);
                    // create a dimension
                    Dimension DimDepth = famDoc.FamilyCreate.NewDimension(view, DimLine, refArray);

                    // 将深度参数与其拉伸实体的深度值关联起来
                    DimDepth.FamilyLabel = Para_Depth;

                    // famDoc.Close();
                    tranFam.Commit();
                }
                catch (Exception ex)
                {
                    // Utils.ShowDebugCatch(ex, $"事务“{tranFam.GetName()}” 出错!");
                    tranFam.RollBack();
                    throw new InvalidOperationException($"事务“{tranFam.GetName()}”出错", ex);
                }
            }
        }
Esempio n. 13
0
        private void backgroundWorker4_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            try
            {
                if (e.Cancelled)
                {
                    MessageBox.Show("The Task Has Been Cancelled", "Cancelled", MessageBoxButtons.OK, MessageBoxIcon.Stop);
                    progressBar1.Value  = 0;
                    StatusLabel.Visible = false;
                }
                else if (e.Error != null)
                {
                    MessageBox.Show("Error. Details: " + (e.Error as Exception).ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    progressBar1.Value  = 0;
                    StatusLabel.Visible = false;
                }
                else
                {
                    RevitServices.Transactions.TransactionManager.Instance.ForceCloseTransaction();


                    var distinctItems = deleteParametersWindows.GroupBy(x => x.Id).Select(y => y.First()); //Sorts the list into only unique items

                    foreach (var item in distinctItems)
                    {
                        Document      famDoc        = localDoc.Document.EditFamily(item); //get the family property of the family
                        FamilyManager familyManager = famDoc.FamilyManager;

                        using (Transaction t = new Transaction(famDoc, "Set Parameter")) //Change Door values
                        {
                            t.Start();

                            try
                            {
                                ///delete here
                                ///

                                FamilyParameter param = familyManager.get_Parameter("Fire_Rating");

                                familyManager.RemoveParameter(param);
                            }
                            catch
                            {
                                //silent catch to continue if Fire_Rating is already on a door from a previous activation
                            }

                            t.Commit();

                            LoadOpts famLoadOptions         = new LoadOpts();
                            Autodesk.Revit.DB.Family newFam = famDoc.LoadFamily(localDoc.Document, famLoadOptions);
                        }
                    }



                    MessageBox.Show("The Task Has Been Completed.", "Completed", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    progressBar1.Value = 0;
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }

            DoorToWall.Enabled              = true;
            WindowToWall.Enabled            = true;
            DeleteFireRatingsDoors.Enabled  = true;
            DeleteFireRatingsWindow.Enabled = true;

            deleteParametersWindows.Clear();

            buttonCancel.Enabled = false;
            StatusLabel.Visible  = false;
        }