コード例 #1
0
        public void Visit(AcDbLine line)
        {
            Line newline = new Line();

            newline.StartPoint.X = line.StartPoint.X;
            newline.StartPoint.Y = line.StartPoint.Y;
            newline.EndPoint.X   = line.EndPoint.X;
            newline.EndPoint.Y   = line.EndPoint.Y;
            _entities.AddLast(newline);
        }
コード例 #2
0
        public static LinkedList <AcDbEntity> Load(TextReader reader)
        {
            LinkedList <AcDbEntity> result = new LinkedList <AcDbEntity>();
            State      state  = State.Start;
            AcDbEntity entity = null;
            DxfReader  rdr    = new DxfReader(reader);

            while (!rdr.IsEof)
            {
                DxfNode node = rdr.Read();
                if (state == State.Start || node.TypeCode == 0)
                {
                    // завершаем текущее состояние
                    if (state != State.Start && node.TypeCode == 0)
                    {
                        state = State.Start;
                    }

                    if (node.TypeCode == 0)
                    {
                        switch ((string)node.Value)
                        {
                        case "LWPOLYLINE":
                            entity = new AcDbPolyline();
                            result.AddLast(entity);
                            state = State.Entity;
                            break;

                        case "LINE":
                            entity = new AcDbLine();
                            result.AddLast(entity);
                            state = State.Entity;
                            break;

                        case "CIRCLE":
                            entity = new AcDbCircle();
                            result.AddLast(entity);
                            state = State.Entity;
                            break;

                        case "ARC":
                            entity = new AcDbArc();
                            result.AddLast(entity);
                            state = State.Entity;
                            break;
                        }
                    }
                }
                else if (state == State.Entity)
                {
                    entity.TakeNode(node);
                }
            }
            return(result);
        }