2016-08-22 5 views
0

Я пытаюсь использовать Xbim Extract project для приложения, над которым я работаю. Однако Visual Studio подчеркивает красным некоторые классы, говоря, что они не могут их найти. Мне удалось решить некоторые ошибки, например, я напечатал:Класс IfcStore не распознан в проекте XbimExtract

using Xbim.XbimExtensions.Interfaces; 

и так ReportProgressDelegate не более подчеркнутый. Однако, Я не могу найти, какой пакет для импорта для IfcStore. Это весь код:

using System; 
using System.IO; 
using System.Linq; 
using System.Reflection; 
using log4net; 
using log4net.Config; 
using Xbim.Common; 
using Xbim.Ifc; 
using Xbim.XbimExtensions.Interfaces; 
using System.Collections.Generic; 
using Xbim.IO; 
using Xbim.ModelGeometry.Scene; 
using Xbim.Common.Logging; 
using Xbim.Ifc2x3.Kernel; 
using Xbim.Common.Exceptions; 
using Xbim.Common.Geometry; 
using Xbim.Ifc2x3.ProductExtension; 
using Xbim.XbimExtensions.Interfaces; 



namespace XbimExtract 
{ 
    class Program 
    { 
     public static ILog Logger = LogManager.GetLogger(typeof(Program)); 

     private static readonly string ApplicationName = Path.GetFileName(Assembly.GetExecutingAssembly().CodeBase); 
     public static string AppName 
     { 
      get { return ApplicationName; } 
     } 


     static void Main(string[] args) 
     { 
      XmlConfigurator.Configure(); 
      Logger.InfoFormat("{0} Started", AppName); 

      var arguments = Params.ParseParams(args); 

      if (arguments.IsValid) 
      { 
       try 
       { 
        ReportProgressDelegate progDelegate = delegate(int percentProgress, object userState) 
        { 
         Console.Write("{0:D5}", percentProgress); 
         ResetCursor(Console.CursorTop); 
        }; 

        using (var source = IfcStore.Open(arguments.SourceModelName)) 
        { 
         Logger.InfoFormat("Reading {0}", arguments.SourceModelName); 
         Logger.InfoFormat("Extracting and copying to " + arguments.TargetModelName); 
         using (var target = IfcStore.Create(source.IfcSchemaVersion, XbimStoreType.InMemoryModel)) 
         { 
          var maps = new XbimInstanceHandleMap(source, target); //prevents the same thing being written twice 
          using (var txn = target.BeginTransaction()) 
          { 
           try 
           { 
            var toInsert = arguments.EntityLabels.Select(label => source.Instances[label]).ToList(); 
            var products = toInsert.OfType<IfcProduct>().ToList(); 
            var others = toInsert.Except(products).ToList(); 

            if (products.Any()) 


             target.InsertCopy(products, true, true, maps); 
            if (others.Any()) 

             foreach (var entity in others) 
              target.InsertCopy(entity, maps, null, false, true); 
           } 
           catch (Exception) 
           { 
            Logger.Error("Some entity labels don't exist in the source file."); 
            return; 
           } 
           txn.Commit(); 
          } 

          File.Delete(arguments.TargetModelName); 
          Logger.Info("Saving to " + arguments.TargetModelName); 
          target.SaveAs(arguments.TargetModelName, null, progDelegate); 
          Logger.Info("Success"); 
         } 

        } 
       } 
       catch (Exception e) 
       { 
        Logger.FatalFormat("{0}\n{1}", e.Message, e.StackTrace); 
       } 
      } 
      else 
      { 
       Logger.Error("Supplied params are invalid"); 
      } 

      Logger.InfoFormat("{0} Ended", AppName); 

#if DEBUG 
      Console.WriteLine("Press any key..."); 
      Console.ReadKey(); 
#endif 
     } 

     private static void ResetCursor(int top) 
     { 
      try 
      { 

       if (top >= Console.BufferHeight) 
        return; 
       Console.SetCursorPosition(0, top); 
      } 
      catch (Exception e) 
      { 
       Console.WriteLine(e); 
      } 
     } 
    } 
} 

Класс IfcStore подчеркнут красным цветом нигде не существует. Что я должен включить?

ответ

1

Вам необходимо обновить пакет nuget до последней версии.

Xbim.Essentials.3.1.0 не ссылался на Xbim.Ifc.dll, который содержит пространство имен Xbim.Ifc и классы.

обновление до Xbim.Essentials.4.0.4 добавить эту ссылку и позволить работать с классом IfcStore.

 Смежные вопросы

  • Нет связанных вопросов^_^