Esempio n. 1
0
        bool OnMouseOverFace(ConstructAction.GeoObjectInput sender, IGeoObject[] TheGeoObjects, bool up)
        {
            bool ok = false;

            for (int i = 0; i < TheGeoObjects.Length; ++i)
            {
                if (TheGeoObjects[i] is Face)
                {
                    ok = true;
                    if (up)
                    {
                        theFace = (TheGeoObjects[i] as Face);
                        foreach (Edge edge in edges)
                        {
                            base.FeedBack.RemoveSelected(edge.Curve3D as IGeoObject);
                        }
                        edges.Clear();
                        edges.AddRange(theFace.AllEdges);
                        List <IGeoObject> geoObjects = new List <IGeoObject>();
                        foreach (Edge edge in edges)
                        {
                            IGeoObject go = edge.Curve3D as IGeoObject;
                            if (go != null)
                            {
                                base.FeedBack.AddSelected(go);
                                geoObjects.Add(go);
                            }
                        }
                        edgesInput.SetGeoObject(geoObjects.ToArray(), null);
                        firstClickClearsAll = true;
                    }
                }
            }
            return(ok);
        }
Esempio n. 2
0
 bool geoObjectInputFace(ConstructAction.GeoObjectInput sender, IGeoObject[] TheGeoObjects, bool up)
 {   // ... nur die sinnvollen Kurven verwenden
     // TODO: evtl Mehrfachanwahl ermöglichen
     if (up)
     {
         if (TheGeoObjects.Length == 0)
         {
             sender.SetGeoObject(TheGeoObjects, null);                            // ...die werden jetzt im ControlCenter dargestellt (nur bei up)
         }
         else
         {
             sender.SetGeoObject(TheGeoObjects, TheGeoObjects[0]);
         }
     }
     if (TheGeoObjects.Length > 0)
     {   // er hat was gewählt
         selectedObjectsList.Clear();
         base.FeedBack.ClearSelected();
         selectedObjectsList.Add(TheGeoObjects[0]); // das eine in die Liste
         ListDefault(1);                            // die Listen löschen und mit "1" vorbesetzen
         if (makeFaceOrg())
         {
             return(true);
         }
     }
     base.ShowActiveObject = false;
     base.FeedBack.ClearSelected();
     return(false);
 }
Esempio n. 3
0
 void geoObjectInputFaceChanged(ConstructAction.GeoObjectInput sender, IGeoObject SelectedGeoObject)
 {
     selectedObjectsList.Clear();
     base.FeedBack.ClearSelected();
     selectedObjectsList.Add(SelectedGeoObject); // das eine in die Liste
     ListDefault(1);                             // die Listen löschen und mit "1" vorbesetzen
     makeFaceOrg();
 }
Esempio n. 4
0
        bool OnMouseOverShell(ConstructAction.GeoObjectInput sender, IGeoObject[] TheGeoObjects, bool up)
        {
            bool ok = false;

            for (int i = 0; i < TheGeoObjects.Length; ++i)
            {
                if ((TheGeoObjects[i] is Solid) || (TheGeoObjects[i] is Shell))
                {
                    ok = true;
                    if (up)
                    {
                        List <Edge> edgesTemp;
                        if (TheGeoObjects[i] is Solid)
                        {
                            Solid theSolid = (TheGeoObjects[i] as Solid);
                            edgesTemp = new List <Edge>(theSolid.Edges);
                        }
                        else
                        {
                            Shell theShell = (TheGeoObjects[i] as Shell);
                            edgesTemp = new List <Edge>(theShell.Edges);
                        }
                        List <IGeoObject> geoObjects = new List <IGeoObject>();
                        foreach (Edge edge in edgesTemp)
                        {
                            IGeoObject go = edge.Curve3D as IGeoObject;
                            if (go != null)
                            {
                                // base.FeedBack.AddSelected(go);
                                if (edges.Contains(edge))
                                {
                                    edges.Remove(edge);
                                    base.FeedBack.RemoveSelected(edge.Curve3D as IGeoObject);
                                }
                                else
                                {
                                    if (edge.SecondaryFace != null)
                                    {
                                        edges.Add(edge);
                                        base.FeedBack.AddSelected(edge.Curve3D as IGeoObject);
                                        geoObjectInput.Optional = true;
                                    }
                                }
                                geoObjects.Add(go);
                            }
                        }
                        geoObjectInput.SetGeoObject(geoObjects.ToArray(), null);
                    }
                }
            }
            return(ok);
        }
Esempio n. 5
0
        bool OnMouseOverEdges(ConstructAction.GeoObjectInput sender, IGeoObject[] TheGeoObjects, bool up)
        {
            bool ok       = false;
            Edge toSelect = null;

            for (int i = 0; i < TheGeoObjects.Length; ++i)
            {
                if (TheGeoObjects[i].Owner is Edge)
                {
                    ok = true;
                    if (up)
                    {
                        Edge edge = TheGeoObjects[i].Owner as Edge;
                        if (edges.Contains(edge))
                        {
                            edges.Remove(edge);
                            base.FeedBack.RemoveSelected(edge.Curve3D as IGeoObject);
                        }
                        else
                        {
                            toSelect = edge;
                            edges.Add(edge);
                            base.FeedBack.AddSelected(edge.Curve3D as IGeoObject);
                            geoObjectInput.Optional = true;
                        }
                    }
                }
            }
            if (up)
            {
                List <IGeoObject> sel = new List <IGeoObject>();
                for (int i = 0; i < edges.Count; ++i)
                {
                    sel.Add(edges[i].Curve3D as IGeoObject);
                }
                if (toSelect != null)
                {
                    geoObjectInput.SetGeoObject(sel.ToArray(), toSelect.Curve3D as IGeoObject);
                }
                else
                {
                    geoObjectInput.SetGeoObject(sel.ToArray(), null);
                }
            }
            return(ok);
        }
Esempio n. 6
0
        void geoObjectInputPath2Changed(ConstructAction.GeoObjectInput sender, IGeoObject SelectedGeoObject)
        {
            //            iGeoObjectSel2 = SelectedGeoObject;
            bool createdFromModel;

            p2 = findPath(SelectedGeoObject, base.Frame.ActiveView.Model, out createdFromModel);
            if (p2 != null)
            {
                iGeoObjectOrg2 = SelectedGeoObject;       // zum Weglöschen des Originals in onDone
                owner2         = SelectedGeoObject.Owner; // owner merken für löschen
                if (createdFromModel)
                {
                    iGeoObjectOrg2        = null; // zum nicht Weglöschen des Originals in onDone
                    pathCreatedFromModel2 = p2;   // kopie merken für onDone
                }
                if (p1 != null)                   // anderer Pfad schon bestimmt
                {
                    ruledFaceOrg();
                }
            }
        }
Esempio n. 7
0
        void geoObjectInputPath1Changed(ConstructAction.GeoObjectInput sender, IGeoObject SelectedGeoObject)
        {
            bool createdFromModel;

            p1 = findPath(SelectedGeoObject, base.Frame.ActiveView.Model, out createdFromModel);
            if (p1 != null)
            {
                attrObject     = SelectedGeoObject;       // merker, um das passende Attribut zu bekommen
                iGeoObjectOrg1 = SelectedGeoObject;       // zum Weglöschen des Originals in onDone
                owner1         = SelectedGeoObject.Owner; // owner merken für löschen
                if (createdFromModel)
                {
                    iGeoObjectOrg1        = null; // zum nicht Weglöschen des Originals in onDone
                    pathCreatedFromModel1 = p1;   // kopie merken für onDone
                }
                if (p2 != null)                   // anderer Pfad schon bestimmt
                {
                    ruledFaceOrg();
                }
            }
        }
Esempio n. 8
0
        bool OnMouseOverFace(ConstructAction.GeoObjectInput sender, IGeoObject[] TheGeoObjects, bool up)
        {
            bool ok = false;

            for (int i = 0; i < TheGeoObjects.Length; ++i)
            {
                if (TheGeoObjects[i] is Face)
                {
                    ok = true;
                    if (up)
                    {
                        Face              theFace    = (TheGeoObjects[i] as Face);
                        List <Edge>       edgesTemp  = new List <Edge>(theFace.AllEdges);
                        List <IGeoObject> geoObjects = new List <IGeoObject>();
                        foreach (Edge edge in edgesTemp)
                        {
                            IGeoObject go = edge.Curve3D as IGeoObject;
                            if (go != null)
                            {
                                // base.FeedBack.AddSelected(go);
                                if (edges.Contains(edge))
                                {
                                    edges.Remove(edge);
                                    base.FeedBack.RemoveSelected(edge.Curve3D as IGeoObject);
                                }
                                else
                                {
                                    edges.Add(edge);
                                    base.FeedBack.AddSelected(edge.Curve3D as IGeoObject);
                                    geoObjectInput.Optional = true;
                                }
                                geoObjects.Add(go);
                            }
                        }
                        geoObjectInput.SetGeoObject(geoObjects.ToArray(), null);
                    }
                }
            }
            return(ok);
        }
        bool OnMouseOverGeoObjects(ConstructAction.GeoObjectInput sender, IGeoObject[] TheGeoObjects, bool up)
        {
            GeoPoint p = base.CurrentMousePosition;

            for (int i = 0; i < TheGeoObjects.Length; ++i)
            {
                if (TheGeoObjects[i] is Face)
                {
                    Face fc = TheGeoObjects[i] as Face;
                    // man könnte hier den Tangentialpunkt bestimmen, vorläufig nur mit Ebenen Flächen
                    //BoundingCube bc = fc.GetBoundingCube();
                    //bc.GetCenter();
                    //Edge e = new Edge(null,
                    //fc.Intersect(
                    if (fc.Surface is PlaneSurface)
                    {
                        plane = (fc.Surface as PlaneSurface).Plane;
                        CheckPlane();
                        return(true);
                    }
                }
            }
            return(false);
        }
Esempio n. 10
0
        bool geoObjectInputPath2(ConstructAction.GeoObjectInput sender, IGeoObject[] TheGeoObjects, bool up)
        {   // ... nur die sinnvollen Kurven verwenden
            //            objectPoint = base.CurrentMousePosition;
            bool      createdFromModel;
            ArrayList usableObjects = new ArrayList();

            for (int i = 0; i < TheGeoObjects.Length; ++i)
            {
                p2 = findPath(TheGeoObjects[i], base.Frame.ActiveView.Model, out createdFromModel);
                if (p2 != null)
                {
                    //                    if (geoObjectInput1.Fixed)
                    if (p1 != null) // anderer Pfad schon bestimmt
                    {
                        if (ruledFaceOrg())
                        {
                            usableObjects.Add(TheGeoObjects[i]);
                        }
                    }
                    else
                    {
                        usableObjects.Add(TheGeoObjects[i]);
                    }
                }
            }
            // ...hier wird der ursprüngliche Parameter überschrieben. Hat ja keine Auswirkung nach außen.
            TheGeoObjects = (IGeoObject[])usableObjects.ToArray(typeof(IGeoObject));
            if (up)
            {
                if (TheGeoObjects.Length == 0)
                {
                    sender.SetGeoObject(TheGeoObjects, null);                            // ...die werden jetzt im ControlCenter dargestellt (nur bei up)
                }
                else
                {
                    sender.SetGeoObject(TheGeoObjects, TheGeoObjects[0]);
                }
            }
            if (TheGeoObjects.Length > 0)
            {   // er hat was gewählt
                p2 = findPath(TheGeoObjects[0], base.Frame.ActiveView.Model, out createdFromModel);
                if (p2 != null)
                {
                    iGeoObjectOrg2 = TheGeoObjects[0];       // zum Weglöschen des Originals in onDone
                    owner2         = TheGeoObjects[0].Owner; // owner merken für löschen
                    if (createdFromModel)
                    {
                        iGeoObjectOrg2        = null; // zum nicht Weglöschen des Originals in onDone
                        pathCreatedFromModel2 = p2;   // kopie merken für onDone
                    }
                    if (p1 != null)                   // anderer Pfad schon bestimmt
                    {
                        return(ruledFaceOrg());
                    }
                    else
                    {
                        return(true);
                    }
                }
            }
            p2 = null;
            base.ShowActiveObject = false;
            return(false);
        }
Esempio n. 11
0
        bool OnMouseOverEdges(ConstructAction.GeoObjectInput sender, IGeoObject[] TheGeoObjects, bool up)
        {
            if (theFace == null)
            {
                return(false);
            }
            bool ok       = false;
            Edge toSelect = null;

            for (int i = 0; i < TheGeoObjects.Length; ++i)
            {
                if (TheGeoObjects[i].Owner is Edge)
                {
                    Edge edge = TheGeoObjects[i].Owner as Edge;
                    if (edge.PrimaryFace == theFace || edge.SecondaryFace == theFace)
                    {
                        ok = true;
                        if (up)
                        {
                            if (firstClickClearsAll)
                            {
                                firstClickClearsAll = false;
                                foreach (Edge e in edges)
                                {
                                    IGeoObject go = e.Curve3D as IGeoObject;
                                    if (go != null)
                                    {
                                        base.FeedBack.RemoveSelected(go);
                                    }
                                }
                                edges.Clear();
                            }
                            if (edges.Contains(edge))
                            {
                                edges.Remove(edge);
                                base.FeedBack.RemoveSelected(edge.Curve3D as IGeoObject);
                            }
                            else
                            {
                                toSelect = edge;
                                edges.Add(edge);
                                base.FeedBack.AddSelected(edge.Curve3D as IGeoObject);
                                edgesInput.Optional = true;
                            }
                        }
                    }
                }
            }
            if (up)
            {
                List <IGeoObject> sel = new List <IGeoObject>();
                for (int i = 0; i < edges.Count; ++i)
                {
                    sel.Add(edges[i].Curve3D as IGeoObject);
                }
                if (toSelect != null)
                {
                    edgesInput.SetGeoObject(sel.ToArray(), toSelect.Curve3D as IGeoObject);
                }
                else
                {
                    edgesInput.SetGeoObject(sel.ToArray(), null);
                }
            }
            return(ok);
        }