2016-11-17 64 views
1

我編譯了代碼,並且有'創建'方法的問題。我無法弄清楚...任何想法,將不勝感激?這是用於修復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

這是一個標準的遷移問題。請查看Revit 2016 API的「新增功能」部分。描述和用戶可修改

-

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

共享參數創建:創建一個新的共享參數當引入期權類:在你的情況,相關的變化可能發生的的Revit 2015年API中

新方法:

  • Definitions.Create(Autodesk.Revit.DB.ExternalDefinitonCreationOptions 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 
+0

謝謝你的職位。我根據你的帖子調整了我的代碼,然後編譯,但我現在收到以下錯誤消息? 'System.TypeLoadException' –

相關問題