/// <summary> /// Obtains line geometry that isn't an instance of <see cref="SectionGeometry"/> /// </summary> /// <param name="geom">The geometry that could be a section</param> /// <returns>Concrete (unsectioned) geometry that corresponds to <paramref name="geom"/></returns> private UnsectionedLineGeometry GetUnsectionedLineGeometry(LineGeometry geom) { if (geom is UnsectionedLineGeometry) { return(geom as UnsectionedLineGeometry); } if (geom is SectionGeometry) { return((geom as SectionGeometry).Make()); } throw new NotImplementedException("Unexpected line geometry: " + geom.GetType().Name); }
IRing GetRing(Ring r) { CurveSegmentCollection csc = new CurveSegmentCollection(); foreach (IDivider d in r.Edge) { LineGeometry line = d.LineGeometry; ICurveSegmentAbstract cseg = null; if (line is SectionGeometry) { SectionGeometry section = (line as SectionGeometry); line = section.Make(); } if (line is MultiSegmentGeometry) { MultiSegmentGeometry mseg = (line as MultiSegmentGeometry); DirectPositionCollection dpc = GetDirectPositions(mseg.Data); cseg = m_Factory.CreateLineStringSegment(dpc); } else if (line is SegmentGeometry) { SegmentGeometry segment = (line as SegmentGeometry); DirectPositionCollection dpc = GetDirectPositions(new IPosition[] { segment.Start, segment.End }); cseg = m_Factory.CreateLineStringSegment(dpc); } else if (line is ArcGeometry) { ArcGeometry arc = (line as ArcGeometry); IPosition mp = arc.GetMidPosition(); IDirectPosition bc = m_Factory.CreatePositionXY(arc.BC.X, arc.BC.Y); IDirectPosition mid = m_Factory.CreatePositionXY(mp.X, mp.Y); IDirectPosition ec = m_Factory.CreatePositionXY(arc.EC.X, arc.EC.Y); cseg = m_Factory.CreateCircularArcSegment(bc, mid, ec); } else { throw new NotSupportedException("Unknown line type: " + line.GetType().Name); } csc.Add(cseg); } return(m_Factory.CreateRing(csc)); }
/// <summary> /// Obtains line geometry that isn't an instance of <see cref="SectionGeometry"/> /// </summary> /// <param name="geom">The geometry that could be a section</param> /// <returns>Concrete (unsectioned) geometry that corresponds to <paramref name="geom"/></returns> private UnsectionedLineGeometry GetUnsectionedLineGeometry(LineGeometry geom) { if (geom is UnsectionedLineGeometry) return (geom as UnsectionedLineGeometry); if (geom is SectionGeometry) return (geom as SectionGeometry).Make(); throw new NotImplementedException("Unexpected line geometry: "+geom.GetType().Name); }
void WriteLineGeometry(LineGeometry geom) { if (geom is SegmentGeometry) { WriteSegment((SegmentGeometry)geom); } else if (geom is ArcGeometry) { WriteArc((ArcGeometry)geom); } else if (geom is MultiSegmentGeometry) { WriteMultiSegment((MultiSegmentGeometry)geom); } else if (geom is SectionGeometry) { WriteSection((SectionGeometry)geom); } else { throw new NotImplementedException("Unexpected line geometry type: " + geom.GetType().Name); } }
void WriteLineGeometry(LineGeometry geom) { if (geom is SegmentGeometry) WriteSegment((SegmentGeometry)geom); else if (geom is ArcGeometry) WriteArc((ArcGeometry)geom); else if (geom is MultiSegmentGeometry) WriteMultiSegment((MultiSegmentGeometry)geom); else if (geom is SectionGeometry) WriteSection((SectionGeometry)geom); else throw new NotImplementedException("Unexpected line geometry type: " + geom.GetType().Name); }