private static PersistableGeometry CreateGeometry(IMacroStabilityInwardsSoilProfileUnderSurfaceLine soilProfile, MacroStabilityInwardsExportStageType stageType,
                                                          IdFactory idFactory, MacroStabilityInwardsExportRegistry registry)
        {
            var geometry = new PersistableGeometry
            {
                Id     = idFactory.Create(),
                Layers = MacroStabilityInwardsSoilProfile2DLayersHelper.GetLayersRecursively(soilProfile.Layers)
                         .Select(l => CreateLayer(l, stageType, idFactory, registry))
                         .ToArray()
            };

            registry.AddGeometry(stageType, geometry.Id);

            return(geometry);
        }
Exemplo n.º 2
0
        virtual public void Save(IPersistStream stream)
        {
            if (this is IConstructable && ((IConstructable)this).hasVertices && _template != null)
            {
                IGeometry geometry = TransformGeometry();
                if (geometry != null)
                {
                    PersistableGeometry pGeometry = new PersistableGeometry(geometry);
                    stream.Save("Geometry", pGeometry);
                }
            }

            stream.Save("scaleX", _scaleX);
            stream.Save("scaleY", _scaleY);
            stream.Save("xOffset", _xOffset);
            stream.Save("yOffset", _yOffset);
            stream.Save("Angle", _angle);
        }
Exemplo n.º 3
0
        virtual public void Load(IPersistStream stream)
        {
            _scaleX  = (double)stream.Load("scaleX", 1.0);
            _scaleY  = (double)stream.Load("scaleY", 1.0);
            _xOffset = (double)stream.Load("xOffset", 0.0);
            _yOffset = (double)stream.Load("yOffset", 0.0);
            _angle   = (double)stream.Load("Angle");

            if (this is IConstructable && ((IConstructable)this).hasVertices)
            {
                PersistableGeometry pGeometry = stream.Load("Geometry", null, new PersistableGeometry()) as PersistableGeometry;
                if (pGeometry != null && pGeometry.Geometry != null)
                {
                    TemplateFromTransformedGeomety(pGeometry.Geometry);
                }
            }

            if (Ghost != null)
            {
                Ghost.Scale(_scaleX, _scaleY);
                Ghost.Rotation = _angle * 180.0 / Math.PI;
                Ghost.Translation(_xOffset, _yOffset);
            }
        }
        public void Create_WithValidData_ReturnsStages()
        {
            // Setup
            var idFactory = new IdFactory();
            var registry  = new MacroStabilityInwardsExportRegistry();

            var stageTypes = new[]
            {
                MacroStabilityInwardsExportStageType.Daily,
                MacroStabilityInwardsExportStageType.Extreme
            };

            var settingsList   = new List <PersistableCalculationSettings>();
            var geometryList   = new List <PersistableGeometry>();
            var soilLayersList = new List <PersistableSoilLayerCollection>();
            var waternetList   = new List <PersistableWaternet>();
            var waternetCreatorSettingsList = new List <PersistableWaternetCreatorSettings>();
            var stateList = new List <PersistableState>();

            foreach (MacroStabilityInwardsExportStageType stageType in stageTypes)
            {
                var settings = new PersistableCalculationSettings
                {
                    Id = idFactory.Create()
                };
                settingsList.Add(settings);

                var geometry = new PersistableGeometry
                {
                    Id = idFactory.Create()
                };
                geometryList.Add(geometry);

                var persistableSoilLayerCollection = new PersistableSoilLayerCollection
                {
                    Id = idFactory.Create()
                };
                soilLayersList.Add(persistableSoilLayerCollection);

                var waternet = new PersistableWaternet
                {
                    Id = idFactory.Create()
                };
                waternetList.Add(waternet);

                var waternetCreatorSettings = new PersistableWaternetCreatorSettings
                {
                    Id = idFactory.Create()
                };
                waternetCreatorSettingsList.Add(waternetCreatorSettings);

                var state = new PersistableState
                {
                    Id = idFactory.Create()
                };
                stateList.Add(state);

                registry.AddSettings(stageType, settings.Id);
                registry.AddGeometry(stageType, geometry.Id);
                registry.AddSoilLayer(stageType, persistableSoilLayerCollection.Id);
                registry.AddWaternet(stageType, waternet.Id);
                registry.AddWaternetCreatorSettings(stageType, waternetCreatorSettings.Id);
                registry.AddState(stageType, state.Id);
            }

            // Call
            IEnumerable <PersistableStage> stages = PersistableStageFactory.Create(idFactory, registry);

            // Assert
            PersistableDataModelTestHelper.AssertStages(stages, settingsList, geometryList, soilLayersList, waternetList, waternetCreatorSettingsList, stateList);
        }