没有超载方法来创建'?

时间:2016-11-17 03:50:40

标签: methods overloading revit

我编写了代码,并且在创建'中遇到了一个问题。方法。我无法弄清楚......任何想法都会受到赞赏吗?这是2016年的复兴。

public static void createSharedParam(Document doc, string name)
    {
        DefinitionFile defFile = doc.Application.OpenSharedParameterFile();
        DefinitionGroup dg = null;
        if (defFile == null) throw new Exception("No Shared Parameter File!");

        if (doc.ProjectInformation.Parameters.Cast<Parameter>().FirstOrDefault(q => q.Definition.Name.Equals(name)) != null)
        {
            return;
        }
        else
        {
            string pgroup = "Parameter Group";
            dg = defFile.Groups.FirstOrDefault(g => g.Name == pgroup);
            if (dg == null)
            {
                dg = defFile.Groups.Create(pgroup);
            }
        }
        Category myCategory = doc.Settings.Categories.get_Item(BuiltInCategory.OST_Views);
        CategorySet myCategories = doc.Application.Create.NewCategorySet();
        myCategories.Insert(myCategory);

        ElementBinding binding = doc.Application.Create.NewInstanceBinding(myCategories);

        Definition def = dg.Definitions.Cast<Definition>().FirstOrDefault(q => q.Name == name);

        if (def == null)
            def = dg.Definitions.Create(name, ParameterType.Text);

        bool result = doc.ParameterBindings.Insert(def, binding, BuiltInParameterGroup.PG_DATA);
    }
}

1 个答案:

答案 0 :(得分:1)

这是标准的迁移问题。请查看Revit 2016 API的“新功能”部分。在您的情况下,Revit 2015 API中可能会发生相关更改:在创建新共享参数时引入选项类:

http://thebuildingcoder.typepad.com/blog/2014/04/whats-new-in-the-revit-2015-api.html#2.04

共享参数创建 - 描述和用户可修改性

新方法:

  • Definitions.Create(Autodesk.Revit.DB.ExternalDefinitonCreationOptions options);

使用options类创建一个新的共享参数定义,其中可以设置任何或所有可用选项(名称和类型是必需的,但GUID,用户可见,用户可修改和描述是可选的)。此方法替换了现在已过时的所有其他特定版本的Definitions.Create()。

以下是一个合适的示例代码段:

https://github.com/jeremytammik/the_building_coder_samples/blob/master/BuildingCoder/BuildingCoder/CmdCreateSharedParams.cs#L201-L209

    //definition = group.Definitions.Create( defname, _deftype, visible ); // 2014

    ExternalDefinitionCreationOptions opt
      = new ExternalDefinitionCreationOptions(
        defname, _deftype );

    opt.Visible = visible;

    definition = group.Definitions.Create( opt ); // 2015