Exemplo n.º 1
0
        internal static AM_RegionBoundary Create(NurbsCurve crv, double space, bool forceToOpened)
        {
            bool is_closed       = crv.IsClosed;
            bool boundary_closed = is_closed;

            if (forceToOpened)
            {
                boundary_closed = false;
            }

            AM_RegionBoundary b = new AM_RegionBoundary(boundary_closed);

            Point3d p0 = crv.PointAtStart;
            Point3d p1 = crv.PointAtEnd;

            b.m_Vertexes.Add(new AM_RegionVertex(new Point2d(p0.X, p0.Y), space));
            b.m_Curves.Add(crv);

            if (!is_closed)
            {
                b.m_Vertexes.Add(new AM_RegionVertex(new Point2d(p1.X, p1.Y), space));
            }
            else if (is_closed && forceToOpened)
            {
                b.m_Vertexes.Add(new AM_RegionVertex(new Point2d(p1.X, p1.Y), space));
            }

            b.m_GenPoint = new List <Point4d> [b.NumVertexes];

            return(b);
        }
Exemplo n.º 2
0
        bool AddNurbsCurve(NurbsCurve nurbs_crv, double space, bool forceToOpened)
        {
            var b = AM_RegionBoundary.Create(nurbs_crv, space, forceToOpened);

            if (b != null)
            {
                m_Loops.Add(b);
                return(true);
            }

            return(true);
        }
Exemplo n.º 3
0
        bool AddPolycurve(PolyCurve pc, double space, bool forceToOpened)
        {
            var b = AM_RegionBoundary.Create(pc, space, forceToOpened);

            if (b != null)
            {
                m_Loops.Add(b);
                return(true);
            }

            return(true);
        }
Exemplo n.º 4
0
        internal static AM_RegionBoundary Create(PolylineCurve polyline, double space, bool forceToOpened)
        {
            bool is_closed       = polyline.IsClosed;
            bool boundary_closed = is_closed;

            if (forceToOpened)
            {
                boundary_closed = false;
            }

            AM_RegionBoundary b = new AM_RegionBoundary(boundary_closed);

            for (int iSegm = 0; iSegm < polyline.SpanCount; iSegm++)
            {
                Point3d p0 = polyline.Point(iSegm);
                Point3d p1 = polyline.Point((iSegm + 1) % polyline.SpanCount);
                if (!is_closed && iSegm == polyline.SpanCount - 1)
                {
                    p1 = polyline.Point(iSegm + 1);
                }

                b.m_Vertexes.Add(new AM_RegionVertex(new Point2d(p0.X, p0.Y), space));
                b.m_Curves.Add(new LineCurve(p0, p1));

                if (!is_closed && iSegm == polyline.SpanCount - 1)
                {
                    b.m_Vertexes.Add(new AM_RegionVertex(new Point2d(p1.X, p1.Y), space));
                }
                else if (is_closed && forceToOpened && iSegm == polyline.SpanCount - 1)
                {
                    b.m_Vertexes.Add(new AM_RegionVertex(new Point2d(p1.X, p1.Y), space));
                }
            }

            b.m_GenPoint = new List <Point4d> [polyline.SpanCount];

            return(b);
        }
Exemplo n.º 5
0
        internal static AM_RegionBoundary Create(PolyCurve pc, double space, bool forceToOpened)
        {
            bool is_closed       = pc.IsClosed;
            bool boundary_closed = is_closed;

            if (forceToOpened)
            {
                boundary_closed = false;
            }

            AM_RegionBoundary b = new AM_RegionBoundary(boundary_closed);


            for (int iCrv = 0; iCrv < pc.SegmentCount; iCrv++)
            {
                var crv = pc.SegmentCurve(iCrv);

                Point3d p0 = crv.PointAtStart;

                b.m_Vertexes.Add(new AM_RegionVertex(new Point2d(p0.X, p0.Y), space));
                b.m_Curves.Add(crv);

                if (!is_closed && iCrv == pc.SegmentCount - 1)
                {
                    Point3d p1 = crv.PointAtEnd;
                    b.m_Vertexes.Add(new AM_RegionVertex(new Point2d(p1.X, p1.Y), space));
                }
                else if (is_closed && forceToOpened && iCrv == pc.SegmentCount - 1)
                {
                    Point3d p1 = crv.PointAtEnd;
                    b.m_Vertexes.Add(new AM_RegionVertex(new Point2d(p1.X, p1.Y), space));
                }
            }

            b.m_GenPoint = new List <Point4d> [b.NumVertexes];

            return(b);
        }