Beispiel #1
0
        internal void Resolve(CadastralMapModel model)
        {
            IFeatureRef fr = m_LineRef.ReferenceFrom;

            Debug.Assert(fr is Operation);

            Feature f = model.Find <Feature>(m_LineRef.InternalId);

            if (f == null)
            {
                throw new ApplicationException("Cannot locate forward reference " + m_LineRef.InternalId);
            }

            // Only IntersectDirectionAndLineOperation has forward splits, so follow that logic
            LineFeature line = (LineFeature)f;
            var         dff  = new DeserializationFactory(fr as Operation);

            dff.AddLineSplit(line, DataField.SplitBefore, m_SplitBeforeId);
            dff.AddLineSplit(line, DataField.SplitAfter, m_SplitAfterId);

            IntersectOperation xop = (IntersectOperation)fr;
            LineFeature        lineBefore, lineAfter;

            dff.MakeSections(line, DataField.SplitBefore, xop.IntersectionPoint, DataField.SplitAfter,
                             out lineBefore, out lineAfter);
        }
        internal void Resolve(CadastralMapModel model)
        {
            IFeatureRef fr = m_LineRef.ReferenceFrom;
            Debug.Assert(fr is Operation);

            Feature f = model.Find<Feature>(m_LineRef.InternalId);
            if (f == null)
                throw new ApplicationException("Cannot locate forward reference " + m_LineRef.InternalId);

            // Only IntersectDirectionAndLineOperation has forward splits, so follow that logic
            LineFeature line = (LineFeature)f;
            var dff = new DeserializationFactory(fr as Operation);
            dff.AddLineSplit(line, DataField.SplitBefore, m_SplitBeforeId);
            dff.AddLineSplit(line, DataField.SplitAfter, m_SplitAfterId);

            IntersectOperation xop = (IntersectOperation)fr;
            LineFeature lineBefore, lineAfter;
            dff.MakeSections(line, DataField.SplitBefore, xop.IntersectionPoint, DataField.SplitAfter,
                                out lineBefore, out lineAfter);
        }