Example #1
0
        public static ISegment MakeOneHatch(IPolyline pSubPL, double dist, double m, double numhatch, double dTxtInterval, double dHatchLen, double dHatchOffset)
        {
            ILine pL = new LineClass();
            int result;
            ISegmentM pSegM;
            Math.DivRem((int)numhatch, (int)dTxtInterval, out result);
            if (!(result == 0))
            {
                if (dHatchOffset == 0)
                    pSubPL.QueryNormal(esriSegmentExtension.esriNoExtension, dist, false, (dHatchLen * 0.5), pL);
                else if (dHatchOffset > 0)
                    pSubPL.QueryNormal(esriSegmentExtension.esriNoExtension, dist, false, (dHatchLen * 0.5) + dHatchOffset, pL);
                else if (dHatchOffset < 0)
                {
                    pSubPL.ReverseOrientation();
                    pSubPL.QueryNormal(esriSegmentExtension.esriNoExtension, pSubPL.Length - dist, false, dHatchLen + Math.Abs(dHatchOffset), pL);
                    pSubPL.ReverseOrientation();
                }
            }
            ICurve pCurve;

            if (dHatchOffset != 0)
            {
                pL.GetSubcurve(Math.Abs(dHatchOffset), pL.Length, false, out pCurve);
                pSegM = pCurve as ISegmentM;
            }
            else
                pSegM = pL as ISegmentM;
            pSegM.SetMs(m, m);
            return pSegM as ISegment;
        }