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); }
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); }
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(); }
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); }
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); }
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(); } } }
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(); } } }
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); }
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); }
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); }