CreateUnfoldedFaceBody() public method

public CreateUnfoldedFaceBody ( ) : Body
return Body
Ejemplo n.º 1
0
        public bool FaceInterferes(FlatFace candidateFace)
        {
            Body tool   = candidateFace.CreateUnfoldedFaceBody();
            Body target = flatBodyShape.Copy();

            return(target.GetCollision(tool) == Collision.Intersect);
        }
Ejemplo n.º 2
0
        public void AddFace(FlatFace flatFace)
        {
            flatFaces.Add(flatFace);
            flatPattern.FlatFaceMapping[flatFace.SourceFace] = flatFace;

            foreach (FlatLoop flatLoop in flatFace.Loops)
            {
                foreach (FlatFin flatFin in flatLoop.Fins)
                {
                    Face testFace = flatFin.FlatFace.SourceFace.GetAdjacentFace(flatFin.SourceFin.Edge);
                    if (testFace == null)                      // one-sided (laminar) edge
                    {
                        continue;
                    }
                    if (!FlatPattern.FlatFaceExists(testFace))
                    {
                        openFins.Add(flatFin);
                    }

                    List <FlatFin> removeFins = new List <FlatFin>();
                    foreach (FlatFin baseFin in openFins)
                    {
                        if (baseFin.SourceFin.Edge.Equals(flatFin.SourceFin.Edge) && !baseFin.FlatFace.Equals(flatFace))
                        {
                            removeFins.Add(baseFin);
                        }
                    }
                    foreach (FlatFin removeFin in removeFins)
                    {
                        openFins.Remove(removeFin);
                    }
                }
            }

            openFins.Sort(new FlatFin.FlatFinComparer());              // get longest fin --TBD use sorted list structure?
            openFins.Reverse();

            if (flatPattern.IsDetectingIntersections)
            {
                Body body = flatFace.CreateUnfoldedFaceBody();
                if (flatBodyShape == null)
                {
                    flatBodyShape = body;
                }
                else
                {
                    try {
                        flatBodyShape.Unite(new Body[] { body });
                    }
                    catch {
                        DesignBody.Create(Window.ActiveWindow.Scene as Part, "flatBodyShape", flatBodyShape);
                        DesignBody.Create(Window.ActiveWindow.Scene as Part, "tool", body);
                        Debug.Fail("Boolean failed when merging flatBodyShape.");
                    }
                }
            }
        }
Ejemplo n.º 3
0
        public void AddFace(FlatFace flatFace)
        {
            flatFaces.Add(flatFace);
            flatPattern.FlatFaceMapping[flatFace.SourceFace] = flatFace;

            foreach (FlatLoop flatLoop in flatFace.Loops) {
                foreach (FlatFin flatFin in flatLoop.Fins) {
                    Face testFace = flatFin.FlatFace.SourceFace.GetAdjacentFace(flatFin.SourceFin.Edge);
                    if (testFace == null)  // one-sided (laminar) edge
                        continue;
                    if (!FlatPattern.FlatFaceExists(testFace)) {
                        openFins.Add(flatFin);
                    }

                    List<FlatFin> removeFins = new List<FlatFin>();
                    foreach (FlatFin baseFin in openFins)
                        if (baseFin.SourceFin.Edge.Equals(flatFin.SourceFin.Edge) && !baseFin.FlatFace.Equals(flatFace))
                            removeFins.Add(baseFin);
                    foreach (FlatFin removeFin in removeFins)
                        openFins.Remove(removeFin);
                }
            }

            openFins.Sort(new FlatFin.FlatFinComparer());  // get longest fin --TBD use sorted list structure?
            openFins.Reverse();

            if (flatPattern.IsDetectingIntersections) {
                Body body = flatFace.CreateUnfoldedFaceBody();
                if (flatBodyShape == null)
                    flatBodyShape = body;
                else {
                    try {
                        flatBodyShape.Unite(new Body[] { body });
                    }
                    catch {
                        DesignBody.Create(Window.ActiveWindow.Scene as Part, "flatBodyShape", flatBodyShape);
                        DesignBody.Create(Window.ActiveWindow.Scene as Part, "tool", body);
                        Debug.Fail("Boolean failed when merging flatBodyShape.");
                    }
                }
            }
        }
Ejemplo n.º 4
0
        public bool FaceInterferes(FlatFace candidateFace)
        {
            Body tool = candidateFace.CreateUnfoldedFaceBody();
            Body target = flatBodyShape.Copy();

            return target.GetCollision(tool) == Collision.Intersect;
        }