Example #1
0
            public int Compare(object x, object y)
            {   // Typ-Casting
                IGeoObject o1 = (IGeoObject)x;
                IGeoObject o2 = (IGeoObject)y;
                // Sortierung nach Mittelpunkten
                BoundingRect re = IGeoObjectImpl.GetExtent(o1, projection, false);
                GeoPoint2D   p1 = re.GetCenter();

                re = IGeoObjectImpl.GetExtent(o2, projection, false);
                GeoPoint2D p2 = re.GetCenter();

                if (dirx)
                {
                    if (p1.x < p2.x)
                    {
                        return(-1);
                    }
                    if (p1.x > p2.x)
                    {
                        return(1);
                    }
                }
                else
                {
                    if (p1.y < p2.y)
                    {
                        return(-1);
                    }
                    if (p1.y > p2.y)
                    {
                        return(1);
                    }
                }
                return(0);
            }
Example #2
0
 static public void SpaceDown(GeoObjectList gl, Projection projection, Project pr)
 {
     using (pr.Undo.UndoFrame)
     {
         IGeoObject[] geoArray = new IGeoObject[gl.Count];
         for (int i = 0; i < gl.Count; ++i) // umkopieren auf ein Array, um den Sort machen zu können
         {
             geoArray[i] = gl[i];
         }
         // hier nun Sort, der Compare steht oben als lokal class und braucht die Parameter: Sort nach y = false und pm
         Array.Sort(geoArray, 0, geoArray.Length, new CompareGeoObject(false, projection));
         // die Rechtecke des ersten und letzten Objeks für die Gesamtausdehnung
         BoundingRect reStart = IGeoObjectImpl.GetExtent(geoArray[0], projection, false);
         BoundingRect reEnd   = IGeoObjectImpl.GetExtent(geoArray[geoArray.Length - 1], projection, false);
         double       reTotal = reEnd.Top - reStart.Bottom; // Gesamtausdehnung
         double       distRe  = 0;
         for (int i = 0; i < geoArray.Length; ++i)          // Summe der Ausdehnung der Einzelnen:
         {
             BoundingRect re = IGeoObjectImpl.GetExtent(geoArray[i], projection, false);
             distRe = distRe + re.Height;
         }
         double space = (reTotal - distRe) / (geoArray.Length - 1); // Gesamt - Summe Einzelne / Zwischenräume
         double pos   = reStart.Top;
         for (int i = 1; i < geoArray.Length - 1; ++i)              // vom zweiten bis zum vorletzten, die Äußeren bleiben unverändert
         {
             BoundingRect re      = IGeoObjectImpl.GetExtent(geoArray[i], projection, false);
             GeoVector2D  trans2D = new GeoVector2D(0, pos + space - re.Bottom);
             pos = pos + space + re.Height; // pos hochzählen auf den oberen Rand des aktuellen
             GeoVector trans = projection.DrawingPlane.ToGlobal(trans2D);
             ModOp     m     = ModOp.Translate(trans);
             geoArray[i].Modify(m);
         }
     }
 }
Example #3
0
        internal void Repaint(Rectangle IsInvalid, IView View, IPaintTo3D paintTo3D)
        {
            if (Settings.GlobalSettings.GetBoolValue("ActionFeedBack.UseZBuffer", true))
            {
                paintTo3D.UseZBuffer(true);
            }

            Color selectColor = frame.GetColorSetting("Select.SelectColor", Color.Yellow);   // die Farbe für die selektierten Objekte
            Color focusColor  = frame.GetColorSetting("Select.FocusColor", Color.LightBlue); // die Farbe für das Objekt mit dem Focus

            foreach (IView vw in frame.AllViews)
            {
                for (int i = 0; i < repaintObjects.Count; ++i)
                {
                    IFeedBack go = repaintObjects[i] as IFeedBack;
                    if (go != null)
                    {
                        go.PaintTo3D(paintTo3D);
                    }
                }

                bool oldSelectMode = paintTo3D.SelectMode;
                paintTo3D.SelectMode = true;
                for (int i = 0; i < paintAsSelected.Count; ++i)
                {
                    IGeoObjectImpl go = paintAsSelected[i] as IGeoObjectImpl;
                    if (go != null)
                    {
                        paintTo3D.SelectColor = selectColor;
                        paintTo3D.OpenList("feedback");
                        go.PaintTo3D(paintTo3D);
                        IPaintTo3DList list = paintTo3D.CloseList();
                        if (list != null)
                        {
                            paintTo3D.SelectedList(list, selectWidth);
                        }
                    }
                }
                paintTo3D.SelectMode = oldSelectMode;
            }

            if (paintAsTransparent.Count > 0)
            {
                paintTo3D.OpenList("feedback-transparent");

                foreach (IGeoObject go in paintAsTransparent)
                {
                    go.PaintTo3D(paintTo3D);
                }

                IPaintTo3DList displayList = paintTo3D.CloseList();

                paintTo3D.Blending(true);
                paintTo3D.List(displayList);
                paintTo3D.Blending(false);
            }
        }
Example #4
0
        protected override void Show(IDialogVisualizerService windowService, IVisualizerObjectProvider objectProvider)
        {
            IDebugForm form = CF.DebugForm;
            Model      m    = form.Model;

            IGeoObjectImpl go = (IGeoObjectImpl)objectProvider.GetObject();

            m.Add(VisualizerHelper.AssertColor(go));

            form.ShowDialog(windowService);
        }
Example #5
0
 static public void AlignCenter(GeoObjectList gl, Projection projection, Project pr)
 {   // nur zum Nullpunkt zentieren
     using (pr.Undo.UndoFrame)
     {
         for (int i = 0; i < gl.Count; ++i)
         {
             BoundingRect re      = IGeoObjectImpl.GetExtent(gl[i], projection, false);
             GeoVector2D  trans2D = new GeoVector2D(-(re.Left + re.Right) / 2, -(re.Bottom + re.Top) / 2);
             GeoVector    trans   = projection.DrawingPlane.ToGlobal(trans2D);
             ModOp        m       = ModOp.Translate(trans);
             gl[i].Modify(m);
         }
     }
 }
Example #6
0
 static public void AlignLeft(GeoObjectList gl, Projection projection, Project pr)
 {
     using (pr.Undo.UndoFrame)
     {
         BoundingRect re1 = IGeoObjectImpl.GetExtent(gl[gl.Count - 1], projection, false);
         for (int i = 0; i < gl.Count - 1; ++i)
         {
             BoundingRect re      = IGeoObjectImpl.GetExtent(gl[i], projection, false);
             GeoVector2D  trans2D = new GeoVector2D(re1.Left - re.Left, 0);
             GeoVector    trans   = projection.DrawingPlane.ToGlobal(trans2D);
             ModOp        m       = ModOp.Translate(trans);
             gl[i].Modify(m);
         }
     }
 }
Example #7
0
 static public void SameHeight(GeoObjectList gl, Projection projection, Project pr)
 {
     using (pr.Undo.UndoFrame)
     {
         BoundingRect re1 = IGeoObjectImpl.GetExtent(gl[gl.Count - 1], projection, false);
         for (int i = 0; i < gl.Count - 1; ++i)
         {
             BoundingRect re  = IGeoObjectImpl.GetExtent(gl[i], projection, false);
             double       hig = 1;
             if (re.Height != 0)
             {
                 hig = re1.Height / re.Height;
             }
             GeoPoint refPkt = projection.DrawingPlane.ToGlobal(re.GetCenter());
             ModOp    m      = ModOp.Scale(refPkt, new GeoVector(0.0, 1.0, 0.0), hig);
             gl[i].Modify(m);
         }
     }
 }
Example #8
0
 static public void AlignHcenter(GeoObjectList gl, Projection projection, Project pr)
 {
     using (pr.Undo.UndoFrame)
     {
         BoundingRect re1     = IGeoObjectImpl.GetExtent(gl[gl.Count - 1], projection, false);
         double       center1 = (re1.Left + re1.Right) / 2;
         if (gl.Count == 1)
         {
             center1 = 0.0;                // um den Ursprung, wenns nur eines ist
         }
         for (int i = 0; i < Math.Max(1, gl.Count - 1); ++i)
         {
             BoundingRect re      = IGeoObjectImpl.GetExtent(gl[i], projection, false);
             GeoVector2D  trans2D = new GeoVector2D(center1 - (re.Left + re.Right) / 2, 0);
             GeoVector    trans   = projection.DrawingPlane.ToGlobal(trans2D);
             ModOp        m       = ModOp.Translate(trans);
             gl[i].Modify(m);
         }
     }
 }