【问题标题】:Checking to see if definition exists in Revit API检查 Revit API 中是否存在定义
【发布时间】:2022-11-10 07:33:37
【问题描述】:

遇到一个问题,我无法弄清楚如何告诉它在添加之前检查定义或共享参数是否存在。我已经尝试过 if else 语句的组合以及合并。我还有很多东西要学,所以任何帮助都将不胜感激。 ` 公共 Autodesk.Revit.UI.Result 执行( ExternalCommandData commandData、参考字符串消息、Autodesk.Revit.DB.ElementSet 元素) {

        Transaction transaction = new Transaction(commandData.Application.ActiveUIDocument.Document, "External Tool");
        try
        {

            transaction.Start();

            //Create a clear file as parameter file.
            String path = Assembly.GetExecutingAssembly().Location;
            int index = path.LastIndexOf("\\");
            String newPath = path.Substring(0, index);
            newPath += "\\TPMechanicalRevitParameters.txt";
            if (File.Exists(newPath))
            {
                File.Delete(newPath);
            }
            FileStream fs = File.Create(newPath);
            fs.Close();

            //cache application handle
            Application revitApp = commandData.Application.Application;
            //prepare shared parameter file
            commandData.Application.Application.SharedParametersFilename = newPath;

            //Open shared parameter file
            DefinitionFile parafile = revitApp.OpenSharedParameterFile();
            
            //get Fabricaation Pipe category
            Category TpCat = commandData.Application.ActiveUIDocument.Document.Settings.Categories.get_Item(BuiltInCategory.OST_FabricationPipework);
            CategorySet categories = revitApp.Create.NewCategorySet();
            categories.Insert(TpCat);

            InstanceBinding binding = revitApp.Create.NewInstanceBinding(categories);
         
            //Create a group
            DefinitionGroup apiGroup = parafile.Groups.Create("TpFabricationPipe");


            //Create a visible "VisibleParam" of text type.
            ExternalDefinitionCreationOptions ExternalDefinitionCreationOptions1 = new ExternalDefinitionCreationOptions("FullFabricationServiceName", ParameterType.Text);
                Definition visibleParamDef = apiGroup.Definitions.Create
                    (ExternalDefinitionCreationOptions1);

            BindingMap bindingMap = commandData.Application.ActiveUIDocument.Document.ParameterBindings;
                bindingMap.Insert(visibleParamDef, binding);

                //Create a invisible "InvisibleParam" of text type.
                ExternalDefinitionCreationOptions ExternalDefinitionCreationOptions2 = new ExternalDefinitionCreationOptions("InvisibleParam", ParameterType.Text);
                Definition invisibleParamDef = apiGroup.Definitions.Create
                    (ExternalDefinitionCreationOptions2);
                bindingMap.Insert(invisibleParamDef, binding);

           

        }

        catch (Exception e)
        {
            transaction.RollBack();
            message = e.ToString();
            return Autodesk.Revit.UI.Result.Cancelled;
        }
        finally
        {
            transaction.Commit();
        }
        return Autodesk.Revit.UI.Result.Succeeded;
    }`

【问题讨论】:

    标签: c# sdk revit-api


    【解决方案1】:

    认为我找到了解决方案。我只是更改了它以查看文件是否存在而不是定义并且它有效。如果有更好的方法来实现这一点,请告诉我。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-02-23
      • 1970-01-01
      • 1970-01-01
      • 2020-04-26
      • 1970-01-01
      • 1970-01-01
      • 2010-11-10
      相关资源
      最近更新 更多