public XbimGridCollection(IEnumerable <IIfcGrid> ifcGrids, IXbimGeometryEngine engine)
 {
     foreach (var ifcGrid in ifcGrids)
     {
         Add(new XbimGrid(ifcGrid, engine));
     }
 }
Пример #2
0
 public XbimGrid(IIfcGrid ifcGrid, IXbimGeometryEngine engine)
 {
     _ifcGrid = ifcGrid;
     foreach (var gridAxis in ifcGrid.UAxes)
     {
         IXbimCurve curve = engine.CreateCurve(gridAxis.AxisCurve);
         _axis.Add(gridAxis, curve);
     }
     foreach (var gridAxis in ifcGrid.VAxes)
     {
         IXbimCurve curve = engine.CreateCurve(gridAxis.AxisCurve);
         _axis.Add(gridAxis, curve);
     }
     foreach (var gridAxis in ifcGrid.WAxes)
     {
         IXbimCurve curve = engine.CreateCurve(gridAxis.AxisCurve);
         _axis.Add(gridAxis, curve);
     }
 }
Пример #3
0
        public XbimGeometryEngine()
        {
            // Warn if runtime for Engine is not present
            XbimPrerequisitesValidator.Validate();

            var    conventions  = new XbimArchitectureConventions(); // understands the process we run under
            string assemblyName = conventions.ModuleName + conventions.Suffix;

            try
            {
                var ass = Assembly.Load(assemblyName);
                var oh  = Activator.CreateInstance(ass.FullName, "Xbim.Geometry.XbimGeometryCreator");
                _engine = oh.Unwrap() as IXbimGeometryEngine;
            }
            catch (Exception e)
            {
                throw e;
            }
        }
Пример #4
0
        public XbimGeometryEngine(ILogger <XbimGeometryEngine> logger)
        {
            // Warn if runtime for Engine is not present, this is not necessary any more as we are net472
            //XbimPrerequisitesValidator.Validate();


            _logger = logger ?? XbimLogging.CreateLogger <XbimGeometryEngine>();

            var    conventions  = new XbimArchitectureConventions();               // understands the process we run under
            string assemblyName = $"{conventions.ModuleName}{conventions.Suffix}"; // Fixed error "simple name should be the same as resolved assembly", eirik 1/15/2021

            _logger.LogDebug("Loading {assemblyName}", assemblyName);
            try
            {
                var ass = Assembly.Load(assemblyName);
                _logger.LogTrace("Loaded {fullName} from {codebase}", ass.GetName().FullName, ass.CodeBase);
                var t   = ass.GetType("Xbim.Geometry.XbimGeometryCreator");
                var obj = Activator.CreateInstance(t);
                _logger.LogTrace("Created Instance of {fullName}", obj.GetType().FullName);
                if (obj == null)
                {
                    throw new Exception("Failed to create Geometry Engine");
                }

                _engine = obj as IXbimGeometryEngine;
                if (_engine == null)
                {
                    throw new Exception("Failed to cast Geometry Engine to IXbimGeometryEngine");
                }

                _logger.LogDebug("XbimGeometryEngine constructed successfully");
            }
            catch (Exception e)
            {
                _logger.LogError(0, e, "Failed to construct XbimGeometryEngine");
                throw new FileLoadException($"Failed to load Xbim.Geometry.Engine.dll{conventions.Suffix}", e);
            }
        }
Пример #5
0
 static public void Cleanup()
 {
     loggerFactory = null;
     geomEngine    = null;
     logger        = null;
 }
Пример #6
0
 static public void Initialise(TestContext context)
 {
     loggerFactory = new LoggerFactory().AddConsole(LogLevel.Trace);
     geomEngine    = new XbimGeometryEngine();
     logger        = loggerFactory.CreateLogger <Ifc4GeometryTests>();
 }
Пример #7
0
        private static IXbimSolidSet CreateSolids(this IIfcGeometricRepresentationItem repItem, IXbimGeometryEngine engine, ILogger logger)
        {
            var sSet      = engine.CreateSolidSet();
            var sweptArea = repItem as IIfcSweptAreaSolid;

            if (sweptArea != null && (sweptArea.SweptArea is IIfcCompositeProfileDef))
            {
                //this is necessary as composite profile definitions produce multiple solid
                return(engine.CreateSolidSet(sweptArea, logger));
            }
            else if (repItem is IIfcSweptAreaSolid)
            {
                sSet.Add(engine.CreateSolid(repItem as IIfcSweptAreaSolid, logger));
                return(sSet);
            }
            else if (repItem is IIfcSweptDiskSolid)
            {
                sSet.Add(engine.CreateSolid(repItem as IIfcSweptDiskSolid, logger));
                return(sSet);
            }
            else if (repItem is IIfcBooleanResult)
            {
                return(engine.CreateSolidSet(repItem as IIfcBooleanResult, logger));
            }
            else if (repItem is IIfcBooleanClippingResult)
            {
                return(engine.CreateSolidSet(repItem as IIfcBooleanClippingResult, logger));
            }
            else if (repItem is IIfcCsgSolid)
            {
                return(engine.CreateSolidSet(repItem as IIfcCsgSolid, logger));
            }
            else if (repItem is IIfcFacetedBrep)
            {
                return(engine.CreateSolidSet(repItem as IIfcFacetedBrep, logger));
            }
            else if (repItem is IIfcTriangulatedFaceSet)
            {
                return(engine.CreateSolidSet(repItem as IIfcTriangulatedFaceSet));
            }
            else if (repItem is IIfcShellBasedSurfaceModel)
            {
                return(engine.CreateSolidSet(repItem as IIfcShellBasedSurfaceModel));
            }
            else if (repItem is IIfcFaceBasedSurfaceModel)
            {
                return(engine.CreateSolidSet(repItem as IIfcFaceBasedSurfaceModel));
            }
            else if (repItem is IIfcBoundingBox)
            {
                sSet.Add(engine.CreateSolid(repItem as IIfcBoundingBox, logger)); return(sSet);
            }
            else if (repItem is IIfcSectionedSpine)
            {
                sSet.Add(engine.CreateSolid(repItem as IIfcSectionedSpine, logger)); return(sSet);
            }
            else if (repItem is IIfcCsgPrimitive3D)
            {
                sSet.Add(engine.CreateSolid(repItem as IIfcCsgPrimitive3D, logger)); return(sSet);
            }
            else if (repItem is IIfcAdvancedBrep)
            {
                sSet.Add(engine.CreateSolid(repItem as IIfcAdvancedBrep, logger)); return(sSet);
            }
            else
            {
                return(null);
            }
        }
Пример #8
0
 static public void Cleanup()
 {
     geomEngine = null;
 }
Пример #9
0
 static public void Initialise(TestContext context)
 {
     geomEngine = new XbimGeometryEngine();
 }