Ejemplo n.º 1
0
        public void RoundTripMultipleEntities()
        {
            var drawing = new DwgDrawing();

            drawing.ModelSpaceBlockRecord.Entities.Add(new DwgLine(new DwgPoint(0.0, 0.0, 0.0), new DwgPoint(10.0, 10.0, 0.0))
            {
                Layer = drawing.CurrentLayer
            });
            drawing.ModelSpaceBlockRecord.Entities.Add(new DwgLine(new DwgPoint(5.0, 5.0, 0.0), new DwgPoint(15.0, 15.0, 0.0))
            {
                Layer = drawing.CurrentLayer
            });
            var roundTrippedDrawing = RoundTrip(drawing);

            // verify handles
            var entities = roundTrippedDrawing.ModelSpaceBlockRecord.Entities;

            Assert.Equal(2, entities.Count);
            var l1 = (DwgLine)entities.First();
            var l2 = (DwgLine)entities.Last();

            Assert.Equal(l1.Handle.HandleOrOffset + 1, l2.Handle.HandleOrOffset);
            Assert.Equal(l1.PreviousEntityHandle, new DwgHandleReference(DwgHandleReferenceCode.HardPointer, 0));
            Assert.Equal(l1.NextEntityHandle, new DwgHandleReference(DwgHandleReferenceCode.HandlePlus1, 0));
            Assert.Equal(l2.PreviousEntityHandle, new DwgHandleReference(DwgHandleReferenceCode.HandleMinus1, 0));
            Assert.Equal(l2.NextEntityHandle, new DwgHandleReference(DwgHandleReferenceCode.HardPointer, 0));

            // verify data
            Assert.Equal(2, entities.Count);
            Assert.Equal(new DwgPoint(0.0, 0.0, 0.0), l1.P1);
            Assert.Equal(new DwgPoint(10.0, 10.0, 0.0), l1.P2);
            Assert.Equal(new DwgPoint(5.0, 5.0, 0.0), l2.P1);
            Assert.Equal(new DwgPoint(15.0, 15.0, 0.0), l2.P2);
        }
Ejemplo n.º 2
0
        public void ReadEntireFile()
        {
            var drawing = DwgDrawing.Load(Path.Combine("Drawings", "R14.dwg"));
            var line    = (DwgLine)drawing.ModelSpaceBlockRecord.Entities.Single();

            Assert.Equal(DwgPoint.Origin, line.P1);
            Assert.Equal(new DwgPoint(10.0, 10.0, 0.0), line.P2);
        }
Ejemplo n.º 3
0
        public async Task <ReadDrawingResult> ReadDrawing(string fileName, Stream fileStream, Func <string, Task <byte[]> > contentResolver)
        {
            var dwgDrawing = DwgDrawing.Load(fileStream);
            var options    = new DwgToDxfConverterOptions(DxfAcadVersion.R14);
            var converter  = new DwgToDxfConverter();
            var dxf        = await converter.Convert(dwgDrawing, options);

            return(await DxfFileHandler.FromDxfFile(Path.ChangeExtension(fileName, ".dxf"), dxf, contentResolver));
        }
Ejemplo n.º 4
0
 public static DwgDrawing RoundTrip(DwgDrawing drawing)
 {
     using (var ms = new MemoryStream())
     {
         drawing.Save(ms);
         ms.Seek(0, SeekOrigin.Begin);
         return(DwgDrawing.Load(ms));
     }
 }
Ejemplo n.º 5
0
        public static DwgEntity RoundTrip(DwgEntity entity)
        {
            var drawing = new DwgDrawing();

            entity.Layer = drawing.CurrentLayer;
            drawing.ModelSpaceBlockRecord.Entities.Add(entity);
            var roundTrippedDrawing = RoundTrip(drawing);

            return(roundTrippedDrawing.ModelSpaceBlockRecord.Entities.Single());
        }
Ejemplo n.º 6
0
        public void NextAvailableHandle()
        {
            var drawing = new DwgDrawing();

            Assert.True(drawing.Variables.NextAvailableHandle.IsEmpty);
            using (var ms = new MemoryStream())
            {
                drawing.Save(ms);
            }

            Assert.False(drawing.Variables.NextAvailableHandle.IsEmpty);
        }
Ejemplo n.º 7
0
        public void RoundTripDefaultFile()
        {
            // validate default values
            var defaultFile = new DwgDrawing();

            Assert.Equal("0", defaultFile.Layers.Single().Value.Name);
            Assert.Equal("STANDARD", defaultFile.Styles.Single().Value.Name);
            Assert.Equal(2, defaultFile.BlockHeaders.Count);
            Assert.NotNull(defaultFile.BlockHeaders["*PAPER_SPACE"]);
            Assert.NotNull(defaultFile.BlockHeaders["*MODEL_SPACE"]);
            Assert.Equal(3, defaultFile.LineTypes.Count);
            Assert.NotNull(defaultFile.LineTypes["BYLAYER"]);
            Assert.NotNull(defaultFile.LineTypes["BYBLOCK"]);
            Assert.NotNull(defaultFile.LineTypes["CONTINUOUS"]);
            Assert.Equal("*ACTIVE", defaultFile.ViewPorts.Single().Value.Name);
            Assert.True(ReferenceEquals(defaultFile.Layers["0"].LineType, defaultFile.LineTypes["CONTINUOUS"]));
            Assert.Equal(new[] { "ACAD", "ACAD_MLEADERVER" }, defaultFile.AppIds.Values.Select(a => a.Name));
            Assert.Equal("STANDARD", defaultFile.DimStyles.Single().Value.Name);
            Assert.True(ReferenceEquals(defaultFile.DimStyles.Single().Value.Style, defaultFile.Styles.Single().Value));

            // valiate round-trip
            var roundTrippedFile = RoundTrip(defaultFile);

            Assert.Equal("0", roundTrippedFile.Layers.Single().Value.Name);
            Assert.Equal("STANDARD", roundTrippedFile.Styles.Single().Value.Name);
            Assert.Equal(2, roundTrippedFile.BlockHeaders.Count);
            Assert.NotNull(roundTrippedFile.BlockHeaders["*PAPER_SPACE"]);
            Assert.NotNull(roundTrippedFile.BlockHeaders["*MODEL_SPACE"]);
            Assert.Equal(3, roundTrippedFile.LineTypes.Count);
            Assert.NotNull(roundTrippedFile.LineTypes["BYLAYER"]);
            Assert.NotNull(roundTrippedFile.LineTypes["BYBLOCK"]);
            Assert.NotNull(roundTrippedFile.LineTypes["CONTINUOUS"]);
            Assert.Equal("*ACTIVE", roundTrippedFile.ViewPorts.Single().Value.Name);
            Assert.True(ReferenceEquals(roundTrippedFile.Layers["0"].LineType, roundTrippedFile.LineTypes["CONTINUOUS"]));
            Assert.Equal(new[] { "ACAD", "ACAD_MLEADERVER" }, roundTrippedFile.AppIds.Values.Select(a => a.Name));
            Assert.Equal("STANDARD", roundTrippedFile.DimStyles.Single().Value.Name);
            Assert.True(ReferenceEquals(roundTrippedFile.DimStyles.Single().Value.Style, roundTrippedFile.Styles.Single().Value));
        }
Ejemplo n.º 8
0
        public void CaseInsensitiveDictionaries()
        {
            var drawing = new DwgDrawing();

            Assert.True(ReferenceEquals(drawing.LineTypes["CONTINUOUS"], drawing.LineTypes["continuous"]));
        }