示例#1
0
            //sub
            private Line SetEachMainAxis(Vector3d guide, Polyline bound)
            {
                Line axis1 = PCXTools.PCXLongest(Pt, bound, guide);
                Line axis2 = PCXTools.PCXLongest(Pt, bound, -guide);

                bool isAxis1Longer = axis1.Length >= axis2.Length;
                bool isAxis1Inside = IsLineInside(axis1, bound);
                bool isAxis2Inside = IsLineInside(axis2, bound);

                if (isAxis1Inside)
                {
                    if (!isAxis2Inside)
                    {
                        return(axis1);
                    }

                    if (isAxis1Longer)
                    {
                        return(axis1);
                    }

                    return(axis2);
                }

                if (isAxis2Inside)
                {
                    return(axis2);
                }

                return(new Line(Pt, Pt));
            }
示例#2
0
            //main
            public void SetMainAxis(Polyline boundary)
            {
                Line alignMain = SetEachMainAxis(AlignGuide, boundary);
                Line perpMain  = PCXTools.PCXLongest(Pt, boundary, PerpGuide);

                if (alignMain.Length > perpMain.Length)
                {
                    MainAxis = alignMain;
                    SubAxis  = perpMain;
                }

                else
                {
                    MainAxis = perpMain;
                    SubAxis  = alignMain;
                }
            }