コード例 #1
0
        /// <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);
        }
コード例 #2
0
ファイル: SdfExporter.cs プロジェクト: 15831944/backsight
        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));
        }
コード例 #3
0
        /// <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);
        }
コード例 #4
0
 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);
     }
 }
コード例 #5
0
ファイル: DxfWriter.cs プロジェクト: steve-stanton/backsight
 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);
 }