/// <summary>
        /// new layer
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void LayerAdd_Click(object sender, RoutedEventArgs e)
        {
            var layer = new LayerControl();

            MainCanvas.Children.Add(layer);
            LayersWidgets.Add(layer.Widget);

            // new level ZOrder to top
            LayerWidget last = LayersWidgets.Last();

            for (int i = LayersWidgets.Count - 1; i > 0; i--)
            {
                LayersWidgets[i] = LayersWidgets[i - 1];
            }
            LayersWidgets[0] = last;

            GlobalState.LayersIndexes++;

            if (LayerList.Items.Count > 0)
            {
                LayerList.SelectedIndex = 0;
            }

            layer.CheckedChanged += SelectLayer;
            layer.Delete         += DeleteLayer;
        }
Beispiel #2
0
 public void LayerAdded()
 {
     if (LayerControl != null)
     {
         LayerControl.AddLayer(CollectionLayer);
     }
 }
        public LayerEffectAddedAction(LayerEffect effect)
        {
            _newEffect = effect;
            if (LayerControl.CurrentDrag != null)
            {
                _layerControl = LayerControl.CurrentDrag;
            }
            else
            {
                _layerControl = LayerControl.Current;
            }

            if (effect.Type == EffectType.Entry)
            {
                _oldEffect = _layerControl.Layer.EntryEffect.Copy(false);
            }
            else if (effect.Type == EffectType.Emphasis)
            {
                _oldEffect = _layerControl.Layer.EmphasisEffect.Copy(false);
            }
            else if (effect.Type == EffectType.Exit)
            {
                _oldEffect = _layerControl.Layer.ExitEffect.Copy(false);
            }
            else
            {
                _oldEffect = LayerEffect.Empty;
            }
            //_oldEffect.ShapeLayer = _layerControl.Layer;

            Name = string.Format("add a <{0}> Effect", effect.Type);
        }
Beispiel #4
0
        /// <summary>
        ///     Добавление нового слоя на холст и обновление коллекции виджетов
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void LayerAdd_Click(object sender, RoutedEventArgs e)
        {
            var layer = new LayerControl();

            MainCanvas.Children.Add(layer);
            LayersWidgets.Add(layer.Widget);

            // Перемещение элемента в самый верх списка, для наглядности отображения верхних слоев пользователю
            LayerWidget last = LayersWidgets.Last();

            for (int i = LayersWidgets.Count - 1; i > 0; i--)
            {
                LayersWidgets[i] = LayersWidgets[i - 1];
            }
            LayersWidgets[0] = last;

            GlobalState.LayersIndexes++;

            if (LayerList.Items.Count > 0)
            {
                LayerList.SelectedIndex = 0;
            }

            layer.CheckedChanged += SelectLayer;
            layer.Delete         += DeleteLayer;
        }
 public LayerMoveActionNew(MessageControl layerContainer, LayerControl source, LayerControl dest)
 {
     this.layerContainer = layerContainer;
     this.source         = source;
     this.dest           = dest;
     Name = "item move";
 }
        private void Mc_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
        {
            WellLocation wl = GetClickWell(e);

            if (wl != null)
            {
                LayerControl lc = this.AssociatedObject as LayerControl;
                SelectWellLocations.Add(wl.WellNum);
                WellPosition = new Point(wl.X, wl.Y);
                Point p = lc.Root.RenderTransform.Transform(WellPosition);//转换到圆心
                WellPointList.Add(p);

                this.TrackAdorner.RemoveLastPoint();
                this.TrackAdorner.AddPoint(p);
                this.TrackAdorner.AddPoint(p);

                //执行画线事件
                if (OnDrawWellLine != null)
                {
                    UndoWellPointListHistory.Clear();
                    UndoSelectWellLocationstHistory.Clear();
                    OnDrawWellLine.Invoke(this);
                }
            }
        }
Beispiel #7
0
        public LayerManagerPanel()
        {
            InitializeComponent();

            // Create other command
            var control = new LayerControl();
            control.ControlsClicked += LayerCommand_ControlsClicked;
            // Add to dropdown list
            var dropdown = new ToolStripDropDown();
            dropdown.Items.Add(new ToolStripControlHost(control));
            btnLayer.DropDown = dropdown;

            // Add sign
            btnAdd.Tag = LayerCommand.Add;

            // Set border width
            _borderWidth = 4F;

            // Set serveral option for paint
            SetStyle(
                ControlStyles.AllPaintingInWmPaint |
                ControlStyles.OptimizedDoubleBuffer |
                ControlStyles.ResizeRedraw |
                ControlStyles.UserPaint, true);
        }
        private WellLocation GetClickWell(MouseButtonEventArgs e)
        {
            if (IsStopMove)
            {
                return(null);
            }
            LayerControl  lc = this.AssociatedObject as LayerControl;
            Point         p  = e.GetPosition(lc);
            HitTestResult hr = VisualTreeHelper.HitTest(lc, p);

            if (hr == null || hr.VisualHit == null)
            {
                return(null);
            }
            Shape sp = hr.VisualHit as Shape;

            if (sp == null)
            {
                return(null);
            }
            WellLocation wl = sp.DataContext as WellLocation;

            if (wl == null)
            {
                return(null);
            }
            return(wl);
        }
Beispiel #9
0
        public LayerManagerPanel()
        {
            InitializeComponent();

            // Create other command
            var control = new LayerControl();

            control.ControlsClicked += LayerCommand_ControlsClicked;
            // Add to dropdown list
            var dropdown = new ToolStripDropDown();

            dropdown.Items.Add(new ToolStripControlHost(control));
            btnLayer.DropDown = dropdown;

            // Add sign
            btnAdd.Tag = LayerCommand.Add;

            // Set border width
            _borderWidth = 4F;

            // Set serveral option for paint
            SetStyle(
                ControlStyles.AllPaintingInWmPaint |
                ControlStyles.OptimizedDoubleBuffer |
                ControlStyles.ResizeRedraw |
                ControlStyles.UserPaint, true);
        }
Beispiel #10
0
        public LayerEffectRemovedAction(LayerControl frameLayer, LayerEffect effect)
        {
            _removedEffect = effect;
            _layerControl  = frameLayer;

            Name = string.Format("remove a <{0}> Effect", effect.Type);
        }
Beispiel #11
0
 public void UpdatePages()
 {
     MatrControl.UpdateMatrices();
     CompControl.Update();
     PlaceControl.Update();
     TraceControl.Update();
     LayerControl.Update();
 }
 public LayerAddedAction(LayerControl frameLayer)
     : base(frameLayer)
 {
     Name = string.Format("add <{0}> shape ", frameLayer.Shape.Type);
     if (frameLayer.Layer != null)
     {
         //_layer = frameLayer.Layer.Copy();
         _layer = frameLayer.Layer;
     }
 }
Beispiel #13
0
 /// <summary>
 /// add item added uploadAction
 /// </summary>
 /// <param name="shape"></param>
 /// <param name="frameLayer"></param>
 public static void AddLayerAddedAction(LayerControl frameLayer)
 {
     if (_current != null &&
         _current.CanAddAction &&
         MessageControl.Current != null &&
         frameLayer != null)
     {
         UndoService.AddAction(new LayerAddedAction(frameLayer));
     }
 }
Beispiel #14
0
 public static void AddLayerEffectRemovedAction(LayerControl framelayer, LayerEffect effect)
 {
     if (_current != null &&
         _current.CanAddAction &&
         effect != null &&
         framelayer != null)
     {
         _current.AddAction(new LayerEffectRemovedAction(framelayer, effect));
     }
 }
Beispiel #15
0
 private void CustomLayerControl_Selected(LayerControl LayerControl)
 {
     if (selectedLayerControl != null)
     {
         selectedLayerControl.IsSelected = false;
         selectedLayerControl.Refresh();
     }
     LayerControl.IsSelected = true;
     LayerControl.Refresh();
     selectedLayerControl = LayerControl;
 }
Beispiel #16
0
 /// <summary>
 /// Function: Add item move uploadAction
 /// Author  : Jerry Xu
 /// Date    : 2008-8-22
 /// </summary>
 /// <param name="layerContainer">FrameLayerContainerNew</param>
 /// <param name="source">FrameLayerNew</param>
 /// <param name="dest">FrameLayerNew</param>
 public static void AddLayerMoveAction(MessageControl layerContainer, LayerControl source, LayerControl dest)
 {
     if (_current != null &&
         _current.CanAddAction &&
         layerContainer != null &&
         source != null &&
         dest != null)
     {
         UndoService.AddAction(new LayerMoveActionNew(layerContainer, source, dest));
     }
 }
Beispiel #17
0
        public static bool ClearManipulator(LayerControl SectionLayer)
        {
            if (SectionLayer == null)
            {
                return(false);
            }

            BehaviorCollection bc = Interaction.GetBehaviors(SectionLayer);

            bc.Clear();
            return(true);
        }
        protected override void OnDetaching()
        {
            base.OnDetaching();
            if (this.AssociatedObject == null)
            {
                return;
            }
            LayerControl lc = this.AssociatedObject as LayerControl;
            MapControl   mc = FindChild.FindVisualParent <MapControl>(lc);

            mc.MouseMove         -= Mc_MouseMove;
            mc.MouseLeftButtonUp -= Mc_MouseLeftButtonUp;
        }
Beispiel #19
0
        public static bool SetManipulator(ManipulatorBase mp, LayerControl SectionLayer)
        {
            if (mp == null || SectionLayer == null)
            {
                return(false);
            }

            BehaviorCollection bc = Interaction.GetBehaviors(SectionLayer);

            bc.Clear();
            bc.Add(mp);
            return(true);
        }
Beispiel #20
0
        public static bool IsContainManipulator(this LayerControl SectionLayer)
        {
            if (SectionLayer == null)
            {
                return(false);
            }
            BehaviorCollection bc = Interaction.GetBehaviors(SectionLayer);

            if (bc.Count > 0)
            {
                return(true);
            }
            return(false);
        }
Beispiel #21
0
        private void Layers_LayerChanged(LayerControl sender, LayerItem layer)
        {
            List <Layer> layers = sender.Items.Select(li => li.Layer).ToList();
            byte         start  = (byte)((layer.Start) ? layer.Index : sender.StartLayer);

            if (layer.State == ListViewItemStates.Selected)
            {
                MapControl.CurrentLayer = (short)layer.Index;
            }

            MapControl.SetLayers(layers, start);
            redoButton.Enabled = MapControl.CanRedo;
            undoButton.Enabled = MapControl.CanUndo;
            IsDirty            = true;
        }
Beispiel #22
0
 private void btDown_Click(object Sender, System.EventArgs E)
 {
     if (selectedLayerControl != null)
     {
         int currentIndex = flpLayers.Controls.GetChildIndex(selectedLayerControl);
         if (currentIndex < flpLayers.Controls.Count - 1)
         {
             int          targetIndex   = currentIndex + 1;
             LayerControl targetControl = (LayerControl)flpLayers.Controls[targetIndex];
             flpLayers.Controls.SetChildIndex(targetControl, currentIndex);
             flpLayers.Controls.SetChildIndex(selectedLayerControl, targetIndex);
             LayerIndexChanged?.Invoke(selectedLayerControl.LayerName,
                                       flpLayers.Controls.IndexOf(selectedLayerControl));
         }
     }
 }
Beispiel #23
0
 /// <summary>
 /// Adds a layer.
 /// </summary>
 /// <param name="LayerName">Name of the layer</param>
 /// <param name="IsCustom">Flag indicating whether the layer is a custom layer</param>
 public void AddLayer(string LayerName, bool IsCustom)
 {
     if (IsCustom)
     {
         var newLayerControl = new LayerControl(LayerName, true);
         newLayerControl.Selected    += CustomLayerControl_Selected;
         newLayerControl.NameChanged += CustomLayerControl_NameChanged;
         flpLayers.Controls.Add(newLayerControl);
         flpLayers.Height += newLayerControl.Height + 6;
     }
     else
     {
         flpLayers.Controls.Add(new LayerControl(LayerName));
     }
     Refresh();
 }
 private void Mc_MouseDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
 {
     if (e.MiddleButton == System.Windows.Input.MouseButtonState.Pressed)
     {
         MapControl mc = this.AssociatedObject as MapControl;
         if (mc == null || mc.Items.IsEmpty)
         {
             return;
         }
         LayerControl lc = mc.GetLayerControl(0);
         if (lc == null)
         {
             return;
         }
         AdornerDecorator ad = mc.GetLayerControlAdornerDecorator(0);
         mousedown = e.GetPosition(ad);
     }
 }
        private void LayerList_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (LayerList.SelectedItems.Count > 0)
            {
                LayerWidget selectedWidget = LayersWidgets[LayerList.SelectedIndex];
                object      layer          = null;
                if (MainCanvas.Children.Count > selectedWidget.ThisLayer.LayerIndex)
                {
                    layer = MainCanvas.Children[selectedWidget.ThisLayer.LayerIndex];
                }
                if (layer != null && layer is UIElement)
                {
                    (layer as UIElement).Focus();
                }
                else
                {
                    return;
                }

                foreach (var child in MainCanvas.Children)
                {
                    if (child is LayerControl && child != layer)
                    {
                        LayerControl layCtrl = child as LayerControl;
                        layCtrl.NonFocus(null, null);
                    }
                }
            }

            if (LayersWidgets.Count == 0)
            {
                return;
            }
            if (LayerList.SelectedIndex < 0)
            {
                LayerList.SelectedIndex = 0;
            }

            var selectedObj = LayersWidgets[LayerList.SelectedIndex];
            var host        = selectedObj.ThisLayer.VisualHost;

            SizeX.Text = Math.Round(host.SpaceSize.Width, 0).ToString();
            SizeY.Text = Math.Round(host.SpaceSize.Height, 0).ToString();
        }
Beispiel #26
0
 private void Layers_LayerVisibilityChanged(LayerControl sender, LayerItem layer)
 {
     Map.Layers[layer.Index].Visible = layer.Visible;
     foreach (Entity ent in Map.Entities)
     {
         if (ent.Layer == layer.Index)
         {
             ent.Visible = layer.Visible;
         }
     }
     foreach (Zone zone in Map.Zones)
     {
         if (zone.Layer == layer.Index)
         {
             zone.Visible = layer.Visible;
         }
     }
     MapControl.Invalidate();
     IsDirty = true;
 }
        private void AssociatedObject_MouseWheel(object sender, System.Windows.Input.MouseWheelEventArgs e)
        {
            MapControl mc = this.AssociatedObject as MapControl;

            if (mc == null || mc.Items.IsEmpty)
            {
                return;
            }

            LayerControl lc = mc.GetLayerControl(0);

            if (lc == null)
            {
                return;
            }

            AdornerDecorator ad = mc.GetLayerControlAdornerDecorator(0);
            Point            cp = e.GetPosition(ad);

            Zoom(mc, cp, e.Delta);
        }
Beispiel #28
0
        private void btDel_Click(object Sender, System.EventArgs E)
        {
            if (selectedLayerControl == null)
            {
                return;
            }
            LayerRemoved?.Invoke(selectedLayerControl);
            int layerIndex = flpLayers.Controls.IndexOf(selectedLayerControl);

            flpLayers.Height -= selectedLayerControl.Height + 6;
            flpLayers.Controls.Remove(selectedLayerControl);
            int currentIndex = 0;

            foreach (LayerControl lc in flpLayers.Controls)
            {
                if (layerIndex <= currentIndex)
                {
                    LayerIndexChanged?.Invoke(lc.LayerName, currentIndex);
                }
                currentIndex++;
            }
            selectedLayerControl = null;
            Refresh();
        }
Beispiel #29
0
        private void BuildColumn2DGraph(Column column)
        {
            foreach (var layer in column.ListOfLayers.AsEnumerable().Reverse())
            {
                var layerControl = new LayerControl($"{layer.LayerName}:{layer.LayerNumber}");
                switch (layer.LayerName)
                {
                case "DP-I":
                    layerControl.LayerName.FontSize = 10;
                    layerControl.Height             = 85;
                    layerControl.FillWithGatesContainedInALayer(layer);
                    StackPanelForLayers.Children.Add(layerControl);
                    break;

                case "DP-II":
                    layerControl.LayerName.FontSize = 10;
                    layerControl.Height             = 85;
                    layerControl.FillWithGatesContainedInALayer(layer);
                    StackPanelForLayers.Children.Add(layerControl);
                    break;

                case "AND":
                    layerControl.Height = 500;
                    layerControl.FillWithGatesContainedInALayer(layer);
                    layerControl.AddLevel((layer.LayerUp.LayerNumber + layer.LayerDown.LayerNumber) / 2);
                    StackPanelForLayers.Children.Add(layerControl);
                    break;

                case "INPUT":
                case "OR":
                    layerControl.LayerName.FontSize = 15;
                    layerControl.Height             = 85;
                    layerControl.FillWithGatesContainedInALayer(layer);
                    StackPanelForLayers.Children.Add(layerControl);
                    break;

                case "FUZZY":
                    layerControl.LayerName.FontSize = 15;
                    layerControl.Height             = 500;
                    var listOfXCellsFuzzyMaster = ((FUZZYLayer)layer).ListOfXCellsFuzzyMaster;
                    if (listOfXCellsFuzzyMaster != null)
                    {
                        foreach (var xCellFuzzyMaster in listOfXCellsFuzzyMaster)
                        {
                            var userControlXCeldaFuzzyMaster = new UserControlXCeldaFuzzyMaster();

                            foreach (var xCellOrExplode in xCellFuzzyMaster.ORExplodeLayer.ListOfXCellsOrExplode)
                            {
                                var gateOrExplode = new Gate(1, 20, 20, xCellOrExplode.GetType().ToString(), xCellOrExplode.Id);
                                userControlXCeldaFuzzyMaster.PutAGateInAOrXplodeLevel((layer.LayerUp.LayerNumber + layer.LayerNumber - 1) / 2, gateOrExplode);  //.LayerControlOrExplode.StackPanelInScrollViewerLevel.Children.Add(gateOrExplode);
                            }

                            double widthXCellsFuzzy = 0;

                            foreach (var xCellFuzzy in xCellFuzzyMaster.ListOfXCellFuzzy)
                            {
                                var userControlXCeldaFuzzy = new UserControlXCeldaFuzzy(xCellFuzzy.Id);
                                userControlXCeldaFuzzyMaster.PutAXCellFuzzyInLayerControlForXCellsFuzzy(userControlXCeldaFuzzy);
                                widthXCellsFuzzy += 53;
                            }

                            (double lowerLimit, double upperLimit)previousRegion = (default(double), default(double));
                            var widthRegionsManagerUC = widthXCellsFuzzy;    // userControlXCeldaFuzzyMaster.ActualWidth;// = 100;// userControlXCeldaFuzzyMaster.RegionsManagerUC.ActualWidth;
                            foreach (var region in xCellFuzzyMaster.RegionsManager.ListOfRegions.OrderBy(reg => reg.lowerLimit).ToList())
                            {
                                userControlXCeldaFuzzyMaster.RegionsManagerUC.AddRegion(widthRegionsManagerUC * (region.lowerLimit - previousRegion.upperLimit) / Convert.ToDouble(xCellFuzzyMaster.RegionsManager.R), false);
                                userControlXCeldaFuzzyMaster.RegionsManagerUC.AddRegion(widthRegionsManagerUC * (region.upperLimit - region.lowerLimit) / Convert.ToDouble(xCellFuzzyMaster.RegionsManager.R), true);
                                previousRegion = region;
                            }

                            var widthColumnHistogram = 2 * widthRegionsManagerUC / Convert.ToDouble(((XCellInput)(xCellFuzzyMaster.ListOfInputChannels[0].XCellOrigin)).CounterOfValues.Count());
                            var sumOfCountsHistogram = Convert.ToDouble(((XCellInput)(xCellFuzzyMaster.ListOfInputChannels[0].XCellOrigin)).GetSumOfAllCounters());
                            foreach (var count in ((XCellInput)(xCellFuzzyMaster.ListOfInputChannels[0].XCellOrigin)).CounterOfValues)
                            {
                                userControlXCeldaFuzzyMaster.HistogramUC.AddColumn(count, sumOfCountsHistogram, 100.0, widthColumnHistogram);
                            }

                            layerControl.StackPanelInScrollViewerLevel.Children.Add(userControlXCeldaFuzzyMaster);
                        }
                    }
                    StackPanelForLayers.Children.Add(layerControl);
                    break;
                }
            }
        }
Beispiel #30
0
        protected override bool DoPaste()
        {
            if (ClipboardService.ContainsImage())
            {
                var img     = ClipboardService.GetImage();
                var imgFile = Constance.LibraryImageDir + Constance.DirectorySeparator + DateTime.Now.Ticks.ToString() + ".jpg";
                IOHelper.SaveImage(img, imgFile);
                innerControl.AddImageLayer(imgFile);
                return(true);
            }

            foreach (var item in items)
            {
                if (item.Layer.Shape.LayerType == LayerType.Paint)
                {
                    LayerControl lc = innerControl.GetLayerControl(item.Shape);

                    if (lc != null || innerControl.IsExistShapeDraw)
                    {
                        ShapeBase pastedShape = item.Shape;
                        pastedShape.ID = KeyGenerator.Shape;
                        pastedShape.Move(Point.Empty);
                        innerControl.AddLayer(pastedShape, ShapeAddMode.Clone);
                    }
                    else
                    {
                        IShapeLayer sl = item.Layer.Copy();
                        if (sl.Shape.Type == ShapeType.ShapeDraw)
                        {
                            ShapeDraw sd = sl.Shape as ShapeDraw;
                            sd.Clear();
                            sd.AddChildShape(item.Shape);
                            //sl.Shape = sd;
                        }
                        sl.Shape.Move(Point.Empty);
                        LayerControl tmlayer = innerControl.NewLayerControl(sl as ShapeLayer, true);
                        innerControl.AddLayer(tmlayer, ShapeAddMode.Clone);
                        tmlayer.Shape.Zoom = item.Shape.Zoom;
                    }
                }
                else
                {
                    //LayerControl layerControl = innerControl.GetLayerControl(item.Shape);

                    //if (layerControl != null)
                    //{
                    //    bool isBackGround = layerControl.Shape.IsBackground;
                    //    ShapeLayer item = layerControl.Layer.Copy();
                    //    item.Shape = item.Shape.Copy();
                    //    item.Shape.Move(Point.Empty);
                    //    if (isBackGround)
                    //    {
                    //        item.Shape.BeginEdit();
                    //        item.Shape.IsBackground = false;
                    //        item.Shape.EndEdit();
                    //    }
                    //    innerControl.AddLayer(innerControl.NewLayerControl(item, true), ShapeAddMode.Clone);
                    //    if(isBackGround)
                    //        item.Shape.IsBackground = isBackGround;
                    //}
                    //else
                    //{
                    bool isBackGround = item.Layer.Shape.IsBackground;
                    if (isBackGround)
                    {
                        item.Layer.Shape.BeginEdit();
                        item.Layer.Shape.IsBackground = false;
                        item.Layer.Shape.EndEdit();
                    }
                    var sl = item.Layer.Copy();
                    sl.Shape.Move(Point.Empty);
                    innerControl.AddLayer(innerControl.NewLayerControl(sl as ShapeLayer, true), ShapeAddMode.Clone);

                    if (isBackGround)
                    {
                        item.Layer.Shape.IsBackground = isBackGround;
                    }
                    //}
                }
            }
            innerControl.ShapeControl.Invalidate();
            return(true);
        }
Beispiel #31
0
        //private void rotateX_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
        //{
        //    RotateX(e.NewValue);
        //}

        //private void rotationY_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
        //{
        //    RotateY(e.NewValue);
        //}

        //private void rotationZ_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
        //{
        //    RotateZ(e.NewValue);
        //}

        //public void RotateX(double angle)
        //{
        //    rotX.Angle = angle;
        //}

        //public void RotateY(double angle)
        //{
        //    rotY.Angle = angle;
        //}

        //public void RotateZ(double angle)
        //{
        //    rotZ.Angle = angle;
        //}

        //private void Window_MouseWheel(object sender, MouseWheelEventArgs e)
        //{
        //    mCamera.Position = new System.Windows.Media.Media3D.Point3D(
        //        mCamera.Position.X,
        //        mCamera.Position.Y,
        //        mCamera.Position.Z - e.Delta / 250D);

        //}

        private void BuildColumn3DGraph(Column column)
        {
            CubeBuilder           cubeBuilder           = null;
            CuadraticPrismBuilder cuadraticPrismBuilder = null;
            //PiramidBuilder piramidBuilder = null;

            var offsetX    = 0;
            var offsetY    = 0;
            var cubeSide   = 5;
            var lastHeight = 0;
            var i          = 0;
            var j          = 0;

            while (i < 5)
            {
                offsetX += 7;
                while (j < 5)
                {
                    offsetY += 7;

                    foreach (var layer in column.ListOfLayers.AsEnumerable().Reverse())
                    {
                        var layerControl = new LayerControl(layer.LayerName);
                        switch (layer.LayerName)
                        {
                        case "DP-I":
                            cubeBuilder = new CubeBuilder(ModelBuilder.ColorGreen);
                            cubeBuilder.CreateCube(offsetX, offsetY, lastHeight, cubeSide, group);
                            //mainViewport.Children.Add(cubeBuilder.CreateCube(offsetX, offsetY, lastHeight, cubeSide));
                            lastHeight += cubeSide;
                            break;

                        case "DP-II":
                            cubeBuilder = new CubeBuilder(ModelBuilder.ColorOrange);
                            cubeBuilder.CreateCube(offsetX, offsetY, lastHeight, cubeSide, group);
                            //mainViewport.Children.Add(cubeBuilder.CreateCube(offsetX, offsetY, lastHeight, cubeSide));
                            lastHeight += cubeSide;
                            break;

                        case "AND":
                            cuadraticPrismBuilder = new CuadraticPrismBuilder(ModelBuilder.ColorYellow);
                            cuadraticPrismBuilder.CreateCuadraticPrism(offsetX, offsetY, lastHeight, cubeSide, 20, group);
                            //mainViewport.Children.Add(cuadraticPrismBuilder.CreateCuadraticPrism(offsetX, offsetY, lastHeight, cubeSide, 20));
                            lastHeight += 20;
                            break;

                        case "INPUT":
                            cuadraticPrismBuilder = new CuadraticPrismBuilder(ModelBuilder.ColorViolet);
                            cuadraticPrismBuilder.CreateCuadraticPrism(offsetX, offsetY, lastHeight, cubeSide, 10, group);
                            //mainViewport.Children.Add(cuadraticPrismBuilder.CreateCuadraticPrism(offsetX, offsetY, lastHeight, cubeSide, 10));
                            lastHeight += 10;
                            break;

                        case "OR":
                            cuadraticPrismBuilder = new CuadraticPrismBuilder(ModelBuilder.ColorRed);
                            cuadraticPrismBuilder.CreateCuadraticPrism(offsetX, offsetY, lastHeight, cubeSide, 10, group);
                            //mainViewport.Children.Add(cuadraticPrismBuilder.CreateCuadraticPrism(offsetX, offsetY, lastHeight, cubeSide, 10));
                            lastHeight += 10;
                            break;
                        }
                    }
                    lastHeight = 0;
                    j++;
                }
                offsetY = 0;
                j       = 0;
                i++;
            }


            var      center = ModelBuilder.GetCenter(group);
            Vector3D cVect  = new Vector3D(center.X, center.Y, center.Z);

            group.Transform = new TranslateTransform3D(-cVect);
        }