Example #1
0
        public void GetInsertEntitiesWhenAddedToFile()
        {
            var line = new DxfLine(new DxfPoint(0.0, 0.0, 0.0), new DxfPoint(1.0, 1.0, 0.0));

            var block = new DxfBlock();

            block.Name = "some-block";
            block.Entities.Add(line);

            var insert = new DxfInsert();

            insert.Name = "some-block";

            var file = new DxfFile();

            file.Blocks.Add(block);

            // no entities because it's not yet part of the file
            Assert.Null(insert.Entities);

            file.Entities.Add(insert);

            // and now that it's in the file the entities can be found
            var foundEntity = insert.Entities.Single();

            Assert.Same(line, foundEntity);
        }
        /// <summary>
        /// Visits the specified entity.
        /// See the <see cref="IEntityVisitor"/> for more details.
        /// </summary>
        public override void Visit(DxfInsert insert)
        {
            InsertInfo info           = insertStack.Peek();
            BlockData  blockData      = blockDataByName[insert.Block.Name];
            DxfLayer   effectiveLayer = info.GetEffectiveLayer(insert);
            DxfBlock   block          = blockData.GetBlock(effectiveLayer);

            if (block.Entities.Count == 0)
            {
                // no need to keep insert if block is empty
                info.currentCollection.RemoveAt(info.currentIndex);
            }
            else
            {
                // overwrite block with reduced one
                insert.Block = block;
                // take care of attributes
                for (int a = insert.Attributes.Count - 1; a >= 0; --a)
                {
                    DxfAttribute attrib      = insert.Attributes[a];
                    DxfLayer     attribLayer = attrib.Layer.IsZeroLayer
                                               ? effectiveLayer
                                               : attrib.Layer;
                    if (IsRemovedLayer(attribLayer))
                    {
                        insert.Attributes.RemoveAt(a);
                    }
                }
            }
        }
Example #3
0
        /// <summary>
        /// Create a DXF Entity Object for a ContentElement.
        /// </summary>
        public override void TryAddDxfEntity(DxfFile doc, ContentElement contentElement, DxfRenderContext context)
        {
            try
            {
                var chosenSymbol = pickSymbolByContext(contentElement, context);
                if (chosenSymbol == null)
                {
                    Console.WriteLine($"Symbol for {contentElement.Id} was null");
                    chosenSymbol = generateSymbolFromBoundingBox(contentElement, context);
                    return;
                }
                // TODO: make all this handle await?
                var geometry = chosenSymbol.GetGeometryAsync().GetAwaiter().GetResult();
                if (geometry == null)
                {
                    Console.WriteLine($"Failed to get geometry for {contentElement.Id}");
                    return;
                }
                var polygons  = geometry.OfType <Polygon>().Select(p => p.ToDxf()).Where(e => e != null).ToList();
                var polylines = geometry.OfType <Polyline>().Select(p => p.ToDxf()).Where(e => e != null).ToList();
                var entities  = new List <DxfEntity>(polygons.Union(polylines));
                if (entities.Count() == 0)
                {
                    Console.WriteLine($"No entities for {contentElement.Id}");
                    return;
                }
                var blockName = contentElement.GetBlockName();
                var block     = new DxfBlock
                {
                    BasePoint = contentElement.Transform.ToDxfPoint(context),
                    Name      = blockName
                };
                doc.BlockRecords.Add(new DxfBlockRecord(blockName));

                foreach (var p in entities)
                {
                    block.Entities.Add(p);
                }
                AddElementToLayer(doc, contentElement, entities, context);
                doc.Blocks.Add(block);
                // if it's not being used as an element definition,
                // add an instance of it to the drawing.
                if (!contentElement.IsElementDefinition)
                {
                    var insert = new DxfInsert
                    {
                        Name     = blockName,
                        Location = contentElement.Transform.ToDxfPoint(context),
                    };
                    doc.Entities.Add(insert);
                    AddElementToLayer(doc, contentElement, new[] { insert }, context);
                }
            }
            catch (Exception e)
            {
                //TODO: implement exception logging
                Console.WriteLine(e.Message);
                Console.WriteLine(e.StackTrace);
            }
        }
Example #4
0
        public void RenderInsertTest()
        {
            var block = new DxfBlock();

            block.Name = "some-block";
            block.Entities.Add(new DxfLine(new DxfPoint(0.0, 0.0, 0.0), new DxfPoint(10.0, 10.0, 0.0)));

            var insert = new DxfInsert();

            insert.Name     = "some-block";
            insert.Location = new DxfPoint(0.0, 5.0, 0.0);

            var file = new DxfFile();

            file.Blocks.Add(block);
            file.Entities.Add(insert);

            var expected = new XElement("g",
                                        new XAttribute("class", "dxf-insert some-block"),
                                        new XAttribute("transform", "translate(0.0 5.0) scale(1.0 1.0)"),
                                        new XElement("line",
                                                     new XAttribute("x1", "0.0"), new XAttribute("y1", "0.0"), new XAttribute("x2", "10.0"), new XAttribute("y2", "10.0"),
                                                     new XAttribute("stroke-width", "1.0px"),
                                                     new XAttribute("vector-effect", "non-scaling-stroke")));

            var actual = insert.ToXElement();

            AssertXElement(expected, actual);
        }
Example #5
0
        public void InsertBoundingBox()
        {
            var line   = new DxfLine(new DxfPoint(1.0, 1.0, 0.0), new DxfPoint(2.0, 3.0, 0.0));
            var offset = new DxfVector(2.0, 2.0, 0.0);

            var block = new DxfBlock();

            block.Name = "some-block";
            block.Entities.Add(line);

            var insert = new DxfInsert();

            insert.Name         = "some-block";
            insert.Location     = offset;
            insert.XScaleFactor = 2.0;

            var file = new DxfFile();

            file.Blocks.Add(block);
            file.Entities.Add(insert);

            var boundingBox = file.GetBoundingBox();

            Assert.Equal(new DxfPoint(4.0, 3.0, 0.0), boundingBox.MinimumPoint);
            Assert.Equal(new DxfPoint(6.0, 5.0, 0.0), boundingBox.MaximumPoint);
        }
Example #6
0
        public float GetEntityLength(DxfInsert dxfInsert)
        {
            var dxfBlock = _dxfFile.Blocks.FirstOrDefault(t => t.Name == dxfInsert.Name);

            var sum = dxfBlock.Entities.Sum(GetEntityLength);

            return(sum);
        }
Example #7
0
        public string EntityToJson(DxfInsert dxfInsert)
        {
            var dxfBlock = _dxfFile.Blocks.FirstOrDefault(t => t.Name == dxfInsert.Name);

            var json = EntitiesToJson(dxfBlock.Entities);

            return(json);
        }
Example #8
0
        public static void DrawTopRFTLeftDims(DxfModel model, int nSpans, double[] comSpanVals)
        {
            //04.TopRFT Left Dims/*----------------*/
            DxfLayer TopRFTDimLayerLt = new DxfLayer("DIMENSIONSTopRFTLt");

            model.Layers.Add(TopRFTDimLayerLt);

            DxfBlock blockTopRFTDimLt = new DxfBlock("ALIGNED_DIMENSIONSTopRFTLt");

            model.Blocks.Add(blockTopRFTDimLt);

            DxfInsert insertTopRFTDimLt = new DxfInsert(blockTopRFTDimLt, new Point3D(0, DXFPoints.startPointsTop[0].Y + 0.15, 0));

            insertTopRFTDimLt.Layer = TopRFTDimLayerLt;
            model.Entities.Add(insertTopRFTDimLt);

            {
                DxfDimension.Aligned[] TopRFTDimArrLt = new DxfDimension.Aligned[nSpans + 1];

                for (int i = 1; i < TopRFTDimArrLt.Length - 2; i++)
                {
                    // Dimension with text aligned with dimension line.
                    DxfDimension.Aligned dimension = new DxfDimension.Aligned(model.CurrentDimensionStyle);
                    dimension.DimensionStyleOverrides.ArrowSize              = 0.2d;
                    dimension.DimensionStyleOverrides.TextInsideHorizontal   = false;
                    dimension.DimensionStyleOverrides.TextAboveDimensionLine = true;
                    dimension.Layer = TopRFTDimLayerLt;
                    dimension.DimensionLineLocation    = new Point3D(0, 0, 0);
                    dimension.ExtensionLine1StartPoint = new Point3D(DXFPoints.endPointsTop[i - 1].X - Math.Max(0.33 * DXFRebar.Ln[i - 1], 0.33 * DXFRebar.Ln[i]) - 0.25, 0, 0);
                    dimension.ExtensionLine2StartPoint = new Point3D(DXFPoints.endPointsTop[i - 1].X, 0, 0);
                    dimension.UseTextMiddlePoint       = true;
                    dimension.TextMiddlePoint          = new Point3D(comSpanVals[0] + 0.50 * (DXFPoints.endPointsTop[i - 1].X - Math.Max(0.33 * DXFRebar.Ln[i - 1], 0.33 * DXFRebar.Ln[i]) - 0.25 + DXFPoints.endPointsTop[i - 1].X), 0.2d, 0d);
                    blockTopRFTDimLt.Entities.Add(dimension);
                }
                //Case of Cantilever at end
                if (GeometryEditorVM.GeometryEditor.RestraintsCollection[RFTCanvas.SpanVals.Length].SelectedRestraint != Restraints.NoRestraints)
                {
                    // Dimension with text aligned with dimension line.
                    DxfDimension.Aligned dimension = new DxfDimension.Aligned(model.CurrentDimensionStyle);
                    dimension.DimensionStyleOverrides.ArrowSize              = 0.2d;
                    dimension.DimensionStyleOverrides.TextInsideHorizontal   = false;
                    dimension.DimensionStyleOverrides.TextAboveDimensionLine = true;
                    dimension.Layer = TopRFTDimLayerLt;
                    dimension.DimensionLineLocation    = new Point3D(0, 0, 0);
                    dimension.ExtensionLine1StartPoint = new Point3D(DXFPoints.endPointsTop[TopRFTDimArrLt.Length - 1 - 1].X - Math.Max(0.33 * DXFRebar.Ln[TopRFTDimArrLt.Length - 1 - 1], 0.33 * DXFRebar.Ln[TopRFTDimArrLt.Length - 1]) - 0.25, 0, 0);
                    dimension.ExtensionLine2StartPoint = new Point3D(DXFPoints.endPointsTop[TopRFTDimArrLt.Length - 1 - 1].X, 0, 0);
                    dimension.UseTextMiddlePoint       = true;
                    dimension.TextMiddlePoint          = new Point3D(comSpanVals[0] + 0.50 * (DXFPoints.endPointsTop[TopRFTDimArrLt.Length - 1 - 1].X - Math.Max(0.33 * DXFRebar.Ln[TopRFTDimArrLt.Length - 1 - 1], 0.33 * DXFRebar.Ln[TopRFTDimArrLt.Length - 1]) - 0.25 + DXFPoints.endPointsTop[TopRFTDimArrLt.Length - 1 - 1].X), 0.2d, 0d);
                    blockTopRFTDimLt.Entities.Add(dimension);
                }
            }
        }
Example #9
0
        public static XElement ToXElement(this DxfInsert insert)
        {
            var g = new XElement(DxfToSvgConverter.Xmlns + "g",
                                 new XAttribute("class", $"dxf-insert {insert.Name}"),
                                 new XAttribute("transform", $"translate({insert.Location.X.ToDisplayString()} {insert.Location.Y.ToDisplayString()}) scale({insert.XScaleFactor.ToDisplayString()} {insert.YScaleFactor.ToDisplayString()})"));

            foreach (var blockEntity in insert.Entities)
            {
                g.Add(blockEntity.ToXElement());
            }

            return(g);
        }
Example #10
0
        public void RenderEntity(DxfInsert dxfInsert, Graphics graphics, int height)
        {
            var dxfBlock = _dxfFile.Blocks.FirstOrDefault(t => t.Name == dxfInsert.Name);

            // var entitiesCount = CollectStats(dxfBlock.Entities);
            // var typesString = string.Join("\n",
            //     entitiesCount.Keys.Where(k => entitiesCount[k] != 0).Select(k => k + ":" + entitiesCount[k]));
            // labelStats.Text += $"\n\t{dxfBlock.Name}:\n" + typesString + "\n";

            foreach (var dxfEntity in dxfBlock.Entities)
            {
                RenderEntity(dxfEntity, graphics, height);
            }
        }
Example #11
0
        /// <summary>
        /// Add a DXF entity to the document for an element instance.
        /// </summary>
        public override void TryAddDxfEntity(DxfFile document, ElementInstance elementInstance, DxfRenderContext context)
        {
            var insert = new DxfInsert
            {
                Location = elementInstance.Transform.ToDxfPoint(context),
                Rotation = elementInstance.Transform.ToDxfAngle(context),
                Name     = elementInstance.BaseDefinition.GetBlockName()
            };

            // some blocks may not get created, due to missing symbols. Only
            // insert if we find the block.
            if (document.Blocks.Any(b => b.Name == insert.Name))
            {
                document.Entities.Add(insert);
                AddElementToLayer(document, elementInstance.BaseDefinition, new[] { insert }, context);
            }
        }
Example #12
0
        public void InsertWithNonMatchingNameReturnsNoEntities()
        {
            // similar to the above test except that the entity is added to the block _after_ the name binding
            var block = new DxfBlock();

            block.Name = "some-block";

            var insert = new DxfInsert();

            insert.Name = "some-other-block";

            var file = new DxfFile();

            file.Blocks.Add(block);
            file.Entities.Add(insert);

            // no entities because the block names differ
            Assert.Null(insert.Entities);
        }
Example #13
0
        public void Visit(DxfInsert insert)
        {
            if (!this.method_0((DxfEntity)insert))
            {
                return;
            }
            this.class599_0.method_0("ATTRIB", (uint)insert.Attributes.Count);
            if ((this.handlingFlags_0 & EntityCounter.HandlingFlags.FollowInserts) == (EntityCounter.HandlingFlags) 0)
            {
                return;
            }
            DxfBlock block = insert.Block;

            if (block == null)
            {
                return;
            }
            int multiplicator = (int)insert.ColumnCount * (int)insert.RowCount;

            EntityCounter.Class599 class5990_1;
            if (!this.idictionary_0.TryGetValue(block, out class5990_1))
            {
                EntityCounter.Class599   class5990_2 = this.class599_0;
                EntityCounter.SpaceFlags spaceFlags0 = this.spaceFlags_0;
                try
                {
                    this.class599_0   = new EntityCounter.Class599();
                    this.spaceFlags_0 = EntityCounter.SpaceFlags.AllSpaces;
                    foreach (DxfEntity entity in (DxfHandledObjectCollection <DxfEntity>)block.Entities)
                    {
                        entity.Accept((IEntityVisitor)this);
                    }
                }
                finally
                {
                    class5990_1               = this.class599_0;
                    this.class599_0           = class5990_2;
                    this.spaceFlags_0         = spaceFlags0;
                    this.idictionary_0[block] = class5990_1;
                }
            }
            this.class599_0.method_1(class5990_1, multiplicator);
        }
        public static void DrawTopRFTLeftDims(DxfModel model, int nSpans, double thickness, double[] Ln, Point2D[] endPointsTop, double[] comSpanVals)
        {
            //04.TopRFT Left Dims/*----------------*/
            DxfLayer TopRFTDimLayerLt = new DxfLayer("DIMENSIONSTopRFTLt");

            model.Layers.Add(TopRFTDimLayerLt);

            DxfBlock blockTopRFTDimLt = new DxfBlock("ALIGNED_DIMENSIONSTopRFTLt");

            model.Blocks.Add(blockTopRFTDimLt);

            DxfInsert insertTopRFTDimLt = new DxfInsert(blockTopRFTDimLt, new Point3D(0, thickness + 0.15, 0));

            insertTopRFTDimLt.Layer = TopRFTDimLayerLt;
            model.Entities.Add(insertTopRFTDimLt);

            {
                DxfDimension.Aligned[] TopRFTDimArrLt = new DxfDimension.Aligned[nSpans + 1];

                for (int i = 1; i < TopRFTDimArrLt.Length - 1; i++)
                {
                    // Dimension with text aligned with dimension line.
                    DxfDimension.Aligned dimension = new DxfDimension.Aligned(model.CurrentDimensionStyle);
                    dimension.DimensionStyleOverrides.ArrowSize              = 0.2d;
                    dimension.DimensionStyleOverrides.TextInsideHorizontal   = false;
                    dimension.DimensionStyleOverrides.TextAboveDimensionLine = true;
                    dimension.Layer = TopRFTDimLayerLt;
                    dimension.DimensionLineLocation    = new Point3D(0, 0, 0);
                    dimension.ExtensionLine1StartPoint = new Point3D(endPointsTop[i - 1].X - Math.Max(0.33 * Ln[i - 1], 0.33 * Ln[i]) - 0.25, 0, 0);
                    dimension.ExtensionLine2StartPoint = new Point3D(endPointsTop[i - 1].X, 0, 0);
                    dimension.UseTextMiddlePoint       = true;
                    dimension.TextMiddlePoint          = new Point3D(comSpanVals[0] + 0.50 * (endPointsTop[i - 1].X - Math.Max(0.33 * Ln[i - 1], 0.33 * Ln[i]) - 0.25 + endPointsTop[i - 1].X), 0.2d, 0d);
                    blockTopRFTDimLt.Entities.Add(dimension);
                }
            }
        }
Example #15
0
        public static void DrawTopRFTRightDims(DxfModel model, int nSpans, double[] comSpanVals)
        {
            //03. TopRFT Right Dims/*----------------*/
            DxfLayer TopRFTDimLayerRt = new DxfLayer("DIMENSIONSTopRFTRt");

            model.Layers.Add(TopRFTDimLayerRt);

            DxfBlock blockTopRFTDimRt = new DxfBlock("ALIGNED_DIMENSIONSTopRFTRt");

            model.Blocks.Add(blockTopRFTDimRt);

            DxfInsert insertTopRFTDimRt = new DxfInsert(blockTopRFTDimRt, new Point3D(0, DXFPoints.startPointsTop[0].Y + 0.15, 0));

            insertTopRFTDimRt.Layer = TopRFTDimLayerRt;
            model.Entities.Add(insertTopRFTDimRt);

            {
                DxfDimension.Aligned[] TopRFTDimArrRt = new DxfDimension.Aligned[nSpans + 1];

                for (int i = 1; i < TopRFTDimArrRt.Length - 1; i++)
                {
                    // Dimension with text aligned with dimension line.
                    DxfDimension.Aligned dimension = new DxfDimension.Aligned(model.CurrentDimensionStyle);
                    dimension.DimensionStyleOverrides.ArrowSize              = 0.2d;
                    dimension.DimensionStyleOverrides.TextInsideHorizontal   = false;
                    dimension.DimensionStyleOverrides.TextAboveDimensionLine = true;
                    dimension.Layer = TopRFTDimLayerRt;
                    dimension.DimensionLineLocation    = new Point3D(0, 0, 0);
                    dimension.ExtensionLine1StartPoint = new Point3D(DXFPoints.startPointsTop[i].X, 0, 0);
                    dimension.ExtensionLine2StartPoint = new Point3D(DXFPoints.startPointsTop[i].X + Math.Max(0.33 * DXFRebar.Ln[i - 1], 0.33 * DXFRebar.Ln[i]) + 0.25, 0, 0);
                    dimension.UseTextMiddlePoint       = true;
                    dimension.TextMiddlePoint          = new Point3D(comSpanVals[0] + 0.50 * (DXFPoints.startPointsTop[i].X + DXFPoints.startPointsTop[i].X + Math.Max(0.33 * DXFRebar.Ln[i - 1], 0.33 * DXFRebar.Ln[i]) + 0.25), 0.2d, 0d);
                    blockTopRFTDimRt.Entities.Add(dimension);
                }
            }
        }
Example #16
0
        public static void DrawLnetDims(DxfModel model, int nSpans, double[] comSpanVals)
        {
            //02. Ln Dims/*----------------*/
            DxfLayer lnspanLayer = new DxfLayer("DIMENSIONSLn");

            model.Layers.Add(lnspanLayer);

            DxfBlock blockLnSpan = new DxfBlock("ALIGNED_DIMENSIONSLn");

            model.Blocks.Add(blockLnSpan);

            DxfInsert insertLn = new DxfInsert(blockLnSpan, new Point3D(0, -0.5, 0));

            insertLn.Layer = lnspanLayer;
            model.Entities.Add(insertLn);

            {
                DxfDimension.Aligned[] LnDimArr = new DxfDimension.Aligned[nSpans];

                for (int i = 0; i < LnDimArr.Length; i++)
                {
                    // Dimension with text aligned with dimension line.
                    DxfDimension.Aligned dimension = new DxfDimension.Aligned(model.CurrentDimensionStyle);
                    dimension.DimensionStyleOverrides.ArrowSize              = 0.2d;
                    dimension.DimensionStyleOverrides.TextInsideHorizontal   = false;
                    dimension.DimensionStyleOverrides.TextAboveDimensionLine = true;
                    dimension.Layer = lnspanLayer;
                    dimension.DimensionLineLocation    = new Point3D(0, 0, 0);
                    dimension.ExtensionLine1StartPoint = new Point3D(DXFPoints.startPointsBot[i].X, 0, 0);
                    dimension.ExtensionLine2StartPoint = new Point3D(DXFPoints.endPointsBot[i].X, 0, 0);
                    dimension.UseTextMiddlePoint       = true;
                    dimension.TextMiddlePoint          = new Point3D(comSpanVals[0] + 0.50 * (comSpanVals[i] + comSpanVals[i + 1]), 0.2d, 0d);
                    blockLnSpan.Entities.Add(dimension);
                }
            }
        }
        /// <summary>
        /// 创建一张表格的方法
        /// </summary>
        public void createOneTable()
        {
            string str = getRadomData(6);

            model = new DxfModel();
            //创建一个图层
            DxfLayer layerTable = new DxfLayer("" + str + programName);

            model.Layers.Add(layerTable);
            //创建一个块
            block = new DxfBlock("AcosticBoreHoleTable_Block" + str);
            model.Blocks.Add(block);

            DxfInsert insert = new DxfInsert(block, new Point3D(0, 0, 0));

            insert.Layer = layerTable;
            model.Entities.Add(insert);
            {
                DxfTableStyle tableStyle1 = new DxfTableStyle("Single1 bordered" + str);
                tableStyle1.DataCellStyle.SetAllBordersBorderType(BorderType.Single);
                //tableStyle1.DataCellStyle.SetAllBordersColor(Colors.DarkGray);
                tableStyle1.TitleCellStyle.SetAllBordersBorderType(BorderType.Single);
                tableStyle1.HeaderCellStyle.SetAllBordersBorderType(BorderType.Single);
                //tableStyle1.HeaderCellStyle.ContentColor = Colors.DarkGray;
                model.TableStyles.Add(tableStyle1);


                DxfTable table1 = new DxfTable(tableStyle1);
                //表格插入点的位置
                table1.InsertionPoint = new Point3D(0d, 0d, 0d);

                //设置表格的行数和列数
                //各行高
                table1.RowCount    = 3;
                table1.ColumnCount = 10;
                table1.Rows.ElementAt <DxfTableRow>(0).Height = 18d;
                table1.Rows.ElementAt <DxfTableRow>(1).Height = 5d;
                table1.Rows.ElementAt <DxfTableRow>(2).Height = 255;

                //设置柱状图各列宽
                table1.Columns.ElementAt <DxfTableColumn>(0).Width = 9;
                table1.Columns.ElementAt <DxfTableColumn>(1).Width = 13;
                table1.Columns.ElementAt <DxfTableColumn>(2).Width = 9;
                table1.Columns.ElementAt <DxfTableColumn>(3).Width = 13;
                table1.Columns.ElementAt <DxfTableColumn>(4).Width = 20;
                table1.Columns.ElementAt <DxfTableColumn>(5).Width = 40;
                table1.Columns.ElementAt <DxfTableColumn>(6).Width = 15;
                table1.Columns.ElementAt <DxfTableColumn>(7).Width = 20;
                table1.Columns.ElementAt <DxfTableColumn>(8).Width = 17;
                table1.Columns.ElementAt <DxfTableColumn>(9).Width = 16;

                DxfMText drillHoleStadHeight = new DxfMText(
                    @"地" + '\n' + "层" + '\n' + "时" + '\n' + "代",
                    new Point3D(2.5d, -2d, 0d),
                    2d
                    ); block.Entities.Add(drillHoleStadHeight);

                drillHoleStadHeight = new DxfMText(
                    @"层 底" + '\n' + "厚 度" + '\n' + "(米)",
                    new Point3D(12.5d, -2d, 0d),
                    2d
                    ); block.Entities.Add(drillHoleStadHeight);

                drillHoleStadHeight = new DxfMText(
                    @" 层 " + '\n' + " 厚 " + '\n' + "(米)",
                    new Point3D(24d, -2d, 0d),
                    2d
                    ); block.Entities.Add(drillHoleStadHeight);

                drillHoleStadHeight = new DxfMText(
                    @"层 底" + '\n' + "标 高" + '\n' + "(米)",
                    new Point3D(33d, -2d, 0d),
                    2d
                    ); block.Entities.Add(drillHoleStadHeight);

                drillHoleStadHeight = new DxfMText(
                    @" 柱 状 剖 面" + '\n' + "  (比例尺)" + '\n' + "   1:" + plottingScale,
                    new Point3D(46d, -2d, 0d),
                    2d
                    ); block.Entities.Add(drillHoleStadHeight);

                drillHoleStadHeight = new DxfMText(
                    @" 所  通  过  岩  层  的  描  述" + '\n',
                    new Point3D(66d, -3.5d, 0d),
                    2d
                    ); block.Entities.Add(drillHoleStadHeight);
                drillHoleStadHeight = new DxfMText(
                    @"(颗粒成分、状态、 颜色、掺杂物等)",
                    new Point3D(66d, -9d, 0d),
                    1.5d
                    ); block.Entities.Add(drillHoleStadHeight);

                drillHoleStadHeight = new DxfMText(
                    @" 岩芯" + '\n' + "采取率" + '\n' + "(%)",
                    new Point3D(106d, -2d, 0d),
                    2d
                    ); block.Entities.Add(drillHoleStadHeight);

                drillHoleStadHeight = new DxfMText(
                    @"原 位 测 试",
                    new Point3D(121d, -2d, 0d),
                    2d
                    ); block.Entities.Add(drillHoleStadHeight);

                drillHoleStadHeight = new DxfMText(
                    @" 采 " + '\n' + " 样 " + '\n' + "(米)",
                    new Point3D(141d, -2d, 0d),
                    2d
                    ); block.Entities.Add(drillHoleStadHeight);

                drillHoleStadHeight = new DxfMText(
                    @" 备 " + '\n' + '\n' + " 注 ",
                    new Point3D(158d, -2d, 0d),
                    2d
                    ); block.Entities.Add(drillHoleStadHeight);

                //列头的序号
                drillHoleStadHeight = new DxfMText(
                    @"1",
                    new Point3D(3d, -19d, 0d),
                    2d
                    ); block.Entities.Add(drillHoleStadHeight);


                drillHoleStadHeight = new DxfMText(
                    @"2",
                    new Point3D(14.5d, -19d, 0d),
                    2d
                    ); block.Entities.Add(drillHoleStadHeight);


                drillHoleStadHeight = new DxfMText(
                    @"3",
                    new Point3D(25d, -19d, 0d),
                    2d
                    ); block.Entities.Add(drillHoleStadHeight);


                drillHoleStadHeight = new DxfMText(
                    @"4",
                    new Point3D(37.5d, -19d, 0d),
                    2d
                    ); block.Entities.Add(drillHoleStadHeight);


                drillHoleStadHeight = new DxfMText(
                    @"5",
                    new Point3D(52.5d, -19d, 0d),
                    2d
                    ); block.Entities.Add(drillHoleStadHeight);


                drillHoleStadHeight = new DxfMText(
                    @"6",
                    new Point3D(85d, -19d, 0d),
                    2d
                    ); block.Entities.Add(drillHoleStadHeight);


                drillHoleStadHeight = new DxfMText(
                    @"7",
                    new Point3D(109.5d, -19d, 0d),
                    2d
                    ); block.Entities.Add(drillHoleStadHeight);


                drillHoleStadHeight = new DxfMText(
                    @"8",
                    new Point3D(127d, -19d, 0d),
                    2d
                    ); block.Entities.Add(drillHoleStadHeight);


                drillHoleStadHeight = new DxfMText(
                    @"9",
                    new Point3D(148d, -19d, 0d),
                    2d
                    ); block.Entities.Add(drillHoleStadHeight);

                drillHoleStadHeight = new DxfMText(
                    @"10",
                    new Point3D(165d, -19d, 0d),
                    2d
                    ); block.Entities.Add(drillHoleStadHeight);


                block.Entities.Add(table1);
            }

            {
                //************table2*************tableStyle2**************
                //图头部分
                DxfTableStyle dxfTableStyle2 = new DxfTableStyle("Single2 bordered" + str);

                dxfTableStyle2.DataCellStyle.SetAllBordersBorderType(BorderType.Single);
                dxfTableStyle2.DataCellStyle.SetAllBordersColor(Colors.DarkGray);
                dxfTableStyle2.TitleCellStyle.SetAllBordersBorderType(BorderType.Single);
                dxfTableStyle2.HeaderCellStyle.SetAllBordersBorderType(BorderType.Single);
                dxfTableStyle2.HeaderCellStyle.SetAllBordersColor(Colors.DarkGray);
                //有该行的时候两个表格不能同时生成???***但是没有该行生成的图形文件又不完整
                model.TableStyles.Add(dxfTableStyle2);

                //定义一个拥有给定格式的表格
                DxfTable table2 = new DxfTable(dxfTableStyle2);
                //表格插入点的位置
                table2.InsertionPoint = new Point3D(-2d, 25d, 0d);

                table2.RowCount    = 1;
                table2.ColumnCount = 1;
                table2.Rows.ElementAt <DxfTableRow>(0).Height = 305;
                foreach (DxfTableColumn column in table2.Columns)
                {
                    column.Width = 176d;
                }

                block.Entities.Add(table2);
            }

            {
                //标题下划线
                //定义线的长度
                // A complex line type.
                DxfLineType lineType = new DxfLineType("titleLine" + str);
                model.LineTypes.Add(lineType);
                DxfLine line = new DxfLine();
                line.Start    = new Point3D(44d, 10d, 0d);
                line.End      = new Point3D(113d, 10d, 0d);
                line.LineType = lineType;
                block.Entities.Add(line);
                //标题名
                DxfMText mText = new DxfMText(
                    @"钻孔柱状剖面图",
                    new Point3D(46d, 18d, 0d),
                    6d
                    );
                block.Entities.Add(mText);
            }
            //定义标题栏中的其他部分
            {
                //定义输入钻孔***X***坐标位置
                DxfMText mText1 = new DxfMText(
                    @"坐标   X=",
                    new Point3D(135d, 20d, 0d),
                    2.5d
                    );
                block.Entities.Add(mText1);
                DxfLineType lineType1 = new DxfLineType("applicanceX" + str);
                model.LineTypes.Add(lineType1);
                DxfLine lineX = new DxfLine();
                lineX.Start    = new Point3D(149d, 17.5d, 0d);
                lineX.End      = new Point3D(172d, 17.5d, 0d);
                lineX.LineType = lineType1;
                block.Entities.Add(lineX);
                DxfMText mText11 = new DxfMText(
                    @"" + applicationCoordinateX,
                    new Point3D(151d, 20d, 0d),
                    2d
                    );

                block.Entities.Add(mText11);

                //定义输入钻孔***Y***坐标位置********一块填写部分开始
                DxfMText mText2 = new DxfMText(
                    @"Y=",
                    new Point3D(145d, 10d, 0d),
                    2.5d
                    );
                block.Entities.Add(mText2);
                DxfLineType lineType2 = new DxfLineType("applicanceY" + str);
                model.LineTypes.Add(lineType2);
                DxfLine lineY = new DxfLine();
                lineY.Start    = new Point3D(149d, 7.5d, 0d);
                lineY.End      = new Point3D(172d, 7.5d, 0d);
                lineY.LineType = lineType2;
                block.Entities.Add(lineY);
                DxfMText mText21 = new DxfMText(
                    @"" + applicationCoordinateY,
                    new Point3D(151d, 10d, 0d),
                    2d
                    );
                block.Entities.Add(mText21);
                //********************************** 一块填写部分结束**********************
            }
            {
                //原位测试的长线条
                DxfLineType drillCodeLineType = new DxfLineType("TestLine1" + str);
                model.LineTypes.Add(drillCodeLineType);
                DxfLine drillCodeine = new DxfLine();
                drillCodeine.Start    = new Point3D(124d, -23d, 0d);
                drillCodeine.End      = new Point3D(124d, -278d, 0d);
                drillCodeine.Color    = EntityColors.Gray;
                drillCodeine.LineType = drillCodeLineType;
                block.Entities.Add(drillCodeine);

                DxfLineType drillCodeLineType1 = new DxfLineType("TestLine2" + str);
                model.LineTypes.Add(drillCodeLineType1);
                DxfLine drillCodeine1 = new DxfLine();
                drillCodeine1.Start    = new Point3D(129d, -23d, 0d);
                drillCodeine1.End      = new Point3D(129d, -278d, 0d);
                drillCodeine1.Color    = EntityColors.Gray;
                drillCodeine1.LineType = drillCodeLineType1;
                block.Entities.Add(drillCodeine1);

                DxfLineType drillCodeLineType2 = new DxfLineType("TestLine3" + str);
                model.LineTypes.Add(drillCodeLineType2);
                DxfLine drillCodeine2 = new DxfLine();
                drillCodeine2.Start    = new Point3D(134d, -23d, 0d);
                drillCodeine2.End      = new Point3D(134d, -278d, 0);
                drillCodeine2.Color    = EntityColors.Gray;
                drillCodeine2.LineType = drillCodeLineType2;
                block.Entities.Add(drillCodeine2);
            }

            //需要填入表中的其他部分的内容
            {
                //钻孔编号*****************************************************************
                DxfMText drillCodeText = new DxfMText(
                    @"钻孔编号",
                    new Point3D(0d, 5d, 0d),
                    2.5d
                    );
                block.Entities.Add(drillCodeText);
                DxfLineType drillCodeLineType = new DxfLineType("zkbhLine" + str);
                model.LineTypes.Add(drillCodeLineType);
                DxfLine drillCodeine = new DxfLine();
                drillCodeine.Start    = new Point3D(15d, 1d, 0d);
                drillCodeine.End      = new Point3D(33d, 1d, 0d);
                drillCodeine.LineType = drillCodeLineType;
                block.Entities.Add(drillCodeine);
                DxfMText drillCodeWriteIn = new DxfMText(
                    @"" + drillCode,
                    new Point3D(17d, 4d, 0d),
                    2d
                    );
                block.Entities.Add(drillCodeWriteIn);
                //***********************************************************************

                //钻孔位置***************************************************************
                DxfMText drillLocationText = new DxfMText(
                    @"钻孔位置",
                    new Point3D(35d, 5d, 0d),
                    2.5d
                    );
                block.Entities.Add(drillLocationText);
                DxfLineType drillLocationLineType = new DxfLineType("drillLocationLine" + str);
                model.LineTypes.Add(drillLocationLineType);
                DxfLine drillLocationLine = new DxfLine();
                drillLocationLine.Start    = new Point3D(52d, 1, 0d);
                drillLocationLine.End      = new Point3D(77d, 1d, 0d);
                drillLocationLine.LineType = drillLocationLineType;
                block.Entities.Add(drillLocationLine);
                DxfMText drillLocationWriteIn = new DxfMText(
                    @"" + drillLocation + drillLocation1 + drillLocation2,
                    new Point3D(54d, 4d, 0d),
                    2d
                    );
                block.Entities.Add(drillLocationWriteIn);
                //*****************************************************************************

                //********施钻起止日期*********************************************************
                DxfMText drillDate = new DxfMText(
                    @"施钻起止日期",
                    new Point3D(79d, 5d, 0d),
                    2.5d
                    );
                block.Entities.Add(drillDate);
                DxfLineType drillDateLineType = new DxfLineType("drillDateLine" + str);
                model.LineTypes.Add(drillDateLineType);
                DxfLine drillDateLine = new DxfLine();
                drillDateLine.Start    = new Point3D(101, 1d, 0d);
                drillDateLine.End      = new Point3D(133, 1d, 0d);
                drillDateLine.LineType = drillDateLineType;
                block.Entities.Add(drillDateLine);
                DxfMText drillDateWriteIn = new DxfMText(
                    @"" + drillStartTime + "--" + drillEndTime,
                    new Point3D(102d, 4d, 0d),
                    2d
                    );
                block.Entities.Add(drillDateWriteIn);
                //***********************************************************************

                //**********孔口标高*****************************************************
                DxfMText drillHoleStadHeight = new DxfMText(
                    @"孔口标高",
                    new Point3D(136d, 5d, 0d),
                    2.5d
                    );
                block.Entities.Add(drillHoleStadHeight);
                DxfLineType drillHoleStadHeightLineType = new DxfLineType("drillHoleStaHeight" + str);
                model.LineTypes.Add(drillHoleStadHeightLineType);
                DxfLine drillHoleStadHeightLine = new DxfLine();
                drillHoleStadHeightLine.Start    = new Point3D(151d, 1d, 0d);
                drillHoleStadHeightLine.End      = new Point3D(172d, 1d, 0d);
                drillHoleStadHeightLine.LineType = drillHoleStadHeightLineType;
                block.Entities.Add(drillHoleStadHeightLine);
                DxfMText drillHoleStadHeightWriteIn = new DxfMText(
                    @"" + drillHoleStadardHeight,
                    new Point3D(152d, 4d, 0d),
                    2d
                    );
                block.Entities.Add(drillHoleStadHeightWriteIn);
                //**********************************************************************************
            }
            //addPattern();
            addExtension();//设置值的同时画出扩展线

            //文件存储路径以及文件名,因为钻孔编号是唯一的,所以钻孔柱状图根据钻孔编号命名,一个钻孔对应一个柱状图
            string        path          = AppDomain.CurrentDomain.BaseDirectory + "Drill\\rockHistogram\\" + drillCode + ".dxf";
            DirectoryInfo directoryInfo = new DirectoryInfo(path);

            //先判断当前文件若存在则删除

            /*
             * if (directoryInfo.Exists) //若当前文件存在则先删除,再重新创建生成,这样可以在界面中进行多次成图
             * {
             *  directoryInfo.Delete();
             * }
             */

            DxfWriter.Write(path, model, true);
            //DxfWriter.Write("AcosticBoreholeTable.dxf", model);
            //return "AcosticBoreholeTable.dxf";

            ConvertFigureFormat cf = new ConvertFigureFormat();
            string filename        = drillCode;
            string outfile         = AppDomain.CurrentDomain.BaseDirectory + "Drill\\rockHistogram\\" + filename;

            cf.getDXFFormat(model, filename, outfile);
        }
Example #18
0
 public void BeginInsert(DxfInsert insert)
 {
 }
Example #19
0
        public static void DrawLnetDims(DxfModel model, int nSpans, double[] comSpanVals)
        {
            //02. Ln Dims/*----------------*/
            DxfLayer lnspanLayer = new DxfLayer("DIMENSIONSLn");

            model.Layers.Add(lnspanLayer);

            DxfBlock blockLnSpan = new DxfBlock("ALIGNED_DIMENSIONSLn");

            model.Blocks.Add(blockLnSpan);

            DxfInsert insertLn = new DxfInsert(blockLnSpan, new Point3D(0, DXFPoints.endPointsBot[0].Y - 0.50, 0));

            insertLn.Layer = lnspanLayer;
            model.Entities.Add(insertLn);

            {
                DxfDimension.Aligned[] LnDimArr = new DxfDimension.Aligned[nSpans];

                //Case of Cantilever at start
                if (GeometryEditorVM.GeometryEditor.RestraintsCollection[0].SelectedRestraint != Restraints.NoRestraints)
                {
                    // Dimension with text aligned with dimension line.
                    DxfDimension.Aligned dimension = new DxfDimension.Aligned(model.CurrentDimensionStyle);
                    dimension.DimensionStyleOverrides.ArrowSize              = 0.2d;
                    dimension.DimensionStyleOverrides.TextInsideHorizontal   = false;
                    dimension.DimensionStyleOverrides.TextAboveDimensionLine = true;
                    dimension.Layer = lnspanLayer;
                    dimension.DimensionLineLocation    = new Point3D(0, 0, 0);
                    dimension.ExtensionLine1StartPoint = new Point3D(DXFPoints.startPointsBot[0].X, 0, 0);
                    dimension.ExtensionLine2StartPoint = new Point3D(DXFPoints.endPointsBot[0].X, 0, 0);
                    dimension.UseTextMiddlePoint       = true;
                    dimension.TextMiddlePoint          = new Point3D(comSpanVals[0] + 0.50 * (comSpanVals[0] + comSpanVals[0 + 1]), 0.2d, 0d);
                    blockLnSpan.Entities.Add(dimension);
                }

                for (int i = 1; i < LnDimArr.Length - 1; i++)
                {
                    // Dimension with text aligned with dimension line.
                    DxfDimension.Aligned dimension = new DxfDimension.Aligned(model.CurrentDimensionStyle);
                    dimension.DimensionStyleOverrides.ArrowSize              = 0.2d;
                    dimension.DimensionStyleOverrides.TextInsideHorizontal   = false;
                    dimension.DimensionStyleOverrides.TextAboveDimensionLine = true;
                    dimension.Layer = lnspanLayer;
                    dimension.DimensionLineLocation    = new Point3D(0, 0, 0);
                    dimension.ExtensionLine1StartPoint = new Point3D(DXFPoints.startPointsBot[i].X, 0, 0);
                    dimension.ExtensionLine2StartPoint = new Point3D(DXFPoints.endPointsBot[i].X, 0, 0);
                    dimension.UseTextMiddlePoint       = true;
                    dimension.TextMiddlePoint          = new Point3D(comSpanVals[0] + 0.50 * (comSpanVals[i] + comSpanVals[i + 1]), 0.2d, 0d);
                    blockLnSpan.Entities.Add(dimension);
                }

                //case of cantilever at end
                if (GeometryEditorVM.GeometryEditor.RestraintsCollection[RFTCanvas.SpanVals.Length].SelectedRestraint != Restraints.NoRestraints)
                {
                    // Dimension with text aligned with dimension line.
                    DxfDimension.Aligned dimension = new DxfDimension.Aligned(model.CurrentDimensionStyle);
                    dimension.DimensionStyleOverrides.ArrowSize              = 0.2d;
                    dimension.DimensionStyleOverrides.TextInsideHorizontal   = false;
                    dimension.DimensionStyleOverrides.TextAboveDimensionLine = true;
                    dimension.Layer = lnspanLayer;
                    dimension.DimensionLineLocation    = new Point3D(0, 0, 0);
                    dimension.ExtensionLine1StartPoint = new Point3D(DXFPoints.startPointsBot[LnDimArr.Length - 1].X, 0, 0);
                    dimension.ExtensionLine2StartPoint = new Point3D(DXFPoints.endPointsBot[LnDimArr.Length - 1].X, 0, 0);
                    dimension.UseTextMiddlePoint       = true;
                    dimension.TextMiddlePoint          = new Point3D(comSpanVals[0] + 0.50 * (comSpanVals[LnDimArr.Length - 1] + comSpanVals[LnDimArr.Length - 1 + 1]), 0.2d, 0d);
                    blockLnSpan.Entities.Add(dimension);
                }
            }
        }
Example #20
0
 public virtual void BeginInsert(DxfInsert insert)
 {
 }
Example #21
0
        static void FindEntities(DxfEntityCollection Entities)
        {
            foreach (var entityGroups in Entities)
            {
                if (typeof(DxfLine) != entityGroups.GetType() && typeof(DxfLwPolyline) != entityGroups.GetType() && typeof(DxfMText) != entityGroups.GetType() && typeof(DxfText) != entityGroups.GetType() && typeof(DxfCircle) != entityGroups.GetType() && typeof(DxfHatch) != entityGroups.GetType() && typeof(DxfInsert) != entityGroups.GetType() && typeof(DxfSpline) != entityGroups.GetType())
                {
                    // Console.WriteLine(entityGroups.GetType());
                }

                dxfType.Add(entityGroups.GetType().Name);
                if (typeof(DxfLine) == entityGroups.GetType())
                {
                    dxfLine = entityGroups as DxfLine;

                    int color;

                    if (dxfLine.Color.ColorType.ToString() == "ByLayer")
                    {
                        color = dxfLine.Layer.Color.Rgb;
                    }
                    else
                    {
                        color = dxfLine.Color.Rgb;
                    }


                    CADLine cADLine = new CADLine
                    {
                        parentHandle = dxfLine.OwnerObjectSoftReference.Handle,
                        type         = dxfLine.GetType().Name,
                        color        = color,
                        transform    = dxfLine.Transform.DebugString,
                        startPoint   = dxfLine.Start.ToString(),
                        endPoint     = dxfLine.End.ToString(),
                        lineWeight   = dxfLine.LineWeight
                    };

                    cadEntities.Add(cADLine);
                }


                if (typeof(DxfLwPolyline) == entityGroups.GetType())
                {
                    //Console.WriteLine(dxfLwPolyline);

                    dxfLwPolyline = entityGroups as DxfLwPolyline;

                    string[] arrVertices = new string[dxfLwPolyline.Vertices.Count];
                    for (int i = 0; i < dxfLwPolyline.Vertices.Count; i++)
                    {
                        arrVertices[i] = dxfLwPolyline.Vertices[i].ToString();
                    }

                    int color;
                    if (dxfLwPolyline.Color.ColorType.ToString() == "ByLayer")
                    {
                        color = dxfLwPolyline.Layer.Color.Rgb;
                    }
                    else
                    {
                        color = dxfLwPolyline.Color.Rgb;
                    }


                    CADLwPolyLine cADLwPolyLine = new CADLwPolyLine
                    {
                        parentHandle = dxfLwPolyline.OwnerObjectSoftReference.Handle,
                        type         = dxfLwPolyline.GetType().Name,
                        color        = color,
                        transform    = dxfLwPolyline.Transform.DebugString,

                        vertices = arrVertices,
                        closed   = dxfLwPolyline.Closed.ToString(),
                    };

                    cadEntities.Add(cADLwPolyLine);
                }


                if (typeof(DxfXLine) == entityGroups.GetType())
                {
                    dxfXLine = entityGroups as DxfXLine;
                }

                if (typeof(DxfSpline) == entityGroups.GetType())
                {
                    dxfSpline = entityGroups as DxfSpline;

                    string[] arrFitPoints = new string[dxfSpline.FitPoints.Count];
                    for (int i = 0; i < dxfSpline.FitPoints.Count; i++)
                    {
                        arrFitPoints[i] = dxfSpline.FitPoints[i].ToString();
                    }

                    int color;
                    if (dxfSpline.Color.ColorType.ToString() == "ByLayer")
                    {
                        color = dxfSpline.Layer.Color.Rgb;
                    }
                    else
                    {
                        color = dxfSpline.Color.Rgb;
                    }


                    CADSpline cADSpline = new CADSpline
                    {
                        parentHandle = dxfSpline.OwnerObjectSoftReference.Handle,
                        type         = dxfSpline.GetType().Name,
                        color        = color,
                        transform    = dxfSpline.Transform.DebugString,

                        fitPoints = arrFitPoints,
                    };

                    cadEntities.Add(cADSpline);
                }


                if (typeof(DxfCircle) == entityGroups.GetType())
                {
                    dxfCircle = entityGroups as DxfCircle;

                    int color;
                    if (dxfCircle.Color.ColorType.ToString() == "ByLayer")
                    {
                        color = dxfCircle.Layer.Color.Rgb;
                    }
                    else
                    {
                        color = dxfCircle.Color.Rgb;
                    }


                    CADCircle cADCircle = new CADCircle
                    {
                        parentHandle = dxfCircle.OwnerObjectSoftReference.Handle,
                        type         = dxfCircle.GetType().Name,
                        color        = color,
                        transform    = dxfCircle.Transform.DebugString,

                        center = dxfCircle.Center.ToString(),
                        radius = dxfCircle.Radius
                    };

                    cadEntities.Add(cADCircle);

                    kcircle.Add(dxfCircle);
                }

                if (typeof(DxfArc) == entityGroups.GetType())
                {
                    dxfArc = entityGroups as DxfArc;

                    int color;
                    if (dxfArc.Color.ColorType.ToString() == "ByLayer")
                    {
                        color = dxfArc.Layer.Color.Rgb;
                    }
                    else
                    {
                        color = dxfArc.Color.Rgb;
                    }

                    CADArc cADArc = new CADArc
                    {
                        parentHandle = dxfArc.OwnerObjectSoftReference.Handle,
                        type         = dxfArc.GetType().Name,
                        color        = color,
                        transform    = dxfArc.Transform.DebugString,

                        center     = dxfArc.Center.ToString(),
                        startAngle = dxfArc.StartAngle,
                        endAngle   = dxfArc.EndAngle,
                        radius     = dxfArc.Radius
                    };

                    cadEntities.Add(cADArc);
                }

                if (typeof(DxfEllipse) == entityGroups.GetType())
                {
                    dxfEllipse = entityGroups as DxfEllipse;

                    int color;
                    if (dxfEllipse.Color.ColorType.ToString() == "ByLayer")
                    {
                        color = dxfEllipse.Layer.Color.Rgb;
                    }
                    else
                    {
                        color = dxfEllipse.Color.Rgb;
                    }

                    CADEllipse cADEllipse = new CADEllipse
                    {
                        parentHandle = dxfEllipse.OwnerObjectSoftReference.Handle,
                        type         = dxfEllipse.GetType().Name,
                        color        = color,
                        transform    = dxfEllipse.Transform.DebugString,

                        center            = dxfEllipse.Center.ToString(),
                        majorAxisEndPoint = dxfEllipse.MajorAxisEndPoint.ToString(),
                        minorAxisEndPoint = dxfEllipse.MinorAxisEndPoint.ToString(),
                        startParameter    = dxfEllipse.StartParameter,
                        endParameter      = dxfEllipse.EndParameter
                    };

                    cadEntities.Add(cADEllipse);
                }



                if (typeof(DxfMText) == entityGroups.GetType())
                {
                    dxfMText = entityGroups as DxfMText;

                    int color;
                    if (dxfMText.Color.ColorType.ToString() == "ByLayer")
                    {
                        color = dxfMText.Layer.Color.Rgb;
                    }
                    else
                    {
                        color = dxfMText.Color.Rgb;
                    }


                    if (dxfMText.SimplifiedText == "C座一层平面图")
                    {
                        ktls.Add(dxfMText);
                    }


                    CADMText cADMText = new CADMText
                    {
                        parentHandle = dxfMText.OwnerObjectSoftReference.Handle,
                        type         = dxfMText.GetType().Name,
                        color        = color,
                        transform    = dxfMText.Transform.DebugString,

                        simplifiedText = dxfMText.SimplifiedText.ToString(),
                        fontStyle      = dxfMText.Style.ToString(),
                        size           = dxfMText.Height,

                        attachmentPoint = dxfMText.AttachmentPoint.ToString(),
                        boxHeight       = dxfMText.BoxHeight,
                        boxWidth        = dxfMText.BoxWidth
                    };

                    cadEntities.Add(cADMText);

                    if (dxfMText.SimplifiedText.ToString() == "图 纸 目 录")
                    {
                        //Console.WriteLine(222222);
                        ktls.Add(dxfMText);
                    }
                    if (dxfMText.SimplifiedText.ToString() == "JS-T5-302")
                    {
                        //Console.WriteLine(222222);
                        ktls.Add(dxfMText);
                    }
                }


                if (typeof(DxfText) == entityGroups.GetType())
                {
                    dxfText = entityGroups as DxfText;

                    int color;
                    if (dxfText.Color.ColorType.ToString() == "ByLayer")
                    {
                        color = dxfText.Layer.Color.Rgb;
                    }
                    else
                    {
                        color = dxfText.Color.Rgb;
                    }

                    CADText cADText = new CADText
                    {
                        parentHandle = dxfText.OwnerObjectSoftReference.Handle,
                        type         = dxfText.GetType().Name,
                        color        = color,
                        transform    = dxfText.Transform.DebugString,

                        simplifiedText = dxfText.SimplifiedText.ToString(),
                        fontStyle      = dxfText.Style.ToString(),
                        size           = dxfText.Height,

                        alignMentPoint1 = dxfText.AlignmentPoint1.ToString(),
                        rotationAngle   = dxfText.Rotation,
                    };


                    if (dxfText.SimplifiedText == "JS-T5-001 ")
                    {
                        ktest.Add(dxfText);
                    }

                    cadEntities.Add(cADText);
                }

                if (typeof(DxfInsert) == entityGroups.GetType())
                {
                    dxfInsert = entityGroups as DxfInsert;
                    kins.Add(dxfInsert);


                    if (dxfInsert.Block != null)
                    {
                        ulong count;
                        if (dxfInsert.Block != null)
                        {
                            count = dxfInsert.Block.Handle;
                        }
                        else
                        {
                            count = 0;
                        }

                        CADInsert cADInsert = new CADInsert();


                        cADInsert.parentHandle = dxfInsert.OwnerObjectSoftReference.Handle;
                        cADInsert.type         = dxfInsert.GetType().Name;
                        cADInsert.transform    = dxfInsert.Transform.DebugString;

                        cADInsert.insertPoint   = dxfInsert.InsertionPoint.ToString();
                        cADInsert.rotationAngle = dxfInsert.Rotation;
                        cADInsert.insertName    = dxfInsert.Block.Name;
                        cADInsert.nowHandle     = count;
                        cADInsert.insertScale   = dxfInsert.ScaleFactor.ToString();

                        cadEntities.Add(cADInsert);

                        FindEntities(dxfInsert.Block.Entities);
                    }
                }



                if (typeof(DxfAttributeDefinition) == entityGroups.GetType())
                {
                    dxfAttributeDefinition = entityGroups as DxfAttributeDefinition;
                    //Console.WriteLine(dxfAttributeDefinition);
                }

                if (typeof(DxfDimension.Linear) == entityGroups.GetType())
                {
                    Console.WriteLine(11111);
                }
            }
        }
Example #22
0
 public override void Visit(DxfInsert insert)
 {
     this.Visit((IEnumerable <DxfEntity>)insert.Attributes);
 }
Example #23
0
        //Get All Booth Info for a given model
        public Stream GetBoothsInfo(Stream input)
        {
            string body = new StreamReader(input).ReadToEnd();
            NameValueCollection _nvc            = HttpUtility.ParseQueryString(body);
            string           _fileName          = _nvc["FileName"];
            string           _client_id         = _nvc["ClientId"];
            string           _show_id           = _nvc["ShowId"];
            string           _boothOutlineLayer = _nvc["BoothOutline"];
            string           _boothNumberLayer  = _nvc["BoothNumber"];
            DxfModel         _model             = ReadDxf("h://dxf_uploads//" + _client_id + " // " + _show_id + "//" + _fileName);
            BoundsCalculator _mBounds           = new BoundsCalculator();

            _mBounds.GetBounds(_model);
            Bounds3D _cBounds = _mBounds.Bounds;
            //get screen origin
            string _screenOrigin = GetScreenOrigin(_cBounds.ToString());

            //Empty List to attach all booth information
            List <Booth> _boothInfo = new List <Booth>();

            //Empty List to hold vertices of all Booths
            List <Point> _allVertices = new List <Point>();

            //loop over all Entites in a model
            foreach (DxfEntity _entity in _model.Entities)
            {
                if (_entity.Layer.ToString().Equals(_boothOutlineLayer, StringComparison.InvariantCultureIgnoreCase))
                //(_entity.Layer.ToString() == _boothOutlineLayer)
                {
                    if (_entity.EntityType.ToString() == "LWPOLYLINE" || _entity.EntityType.ToString() == "POLYLINE")
                    {
                        var     verticesTransformed = LwPolyline(_entity, _screenOrigin);
                        Booth   _booth        = PassBooth(_model, _boothNumberLayer, verticesTransformed, _screenOrigin);
                        Point[] verticesArray = VerticesToList(verticesTransformed).ToArray();
                        foreach (Point _vertex in verticesArray)
                        {
                            _allVertices.Add(_vertex);
                        }
                        _boothInfo.Add(_booth);
                    }
                    else if (_entity.EntityType.ToString() == "INSERT")
                    {
                        DxfInsert Insertentity = _entity as DxfInsert;
                        Matrix4D  transform    = Insertentity.BlockInsertionTransformations[0, 0] * Insertentity.Block.BaseTransformation;

                        DxfBlock block = Insertentity.Block;
                        foreach (DxfEntity lwEntity in block.Entities)
                        {
                            if (lwEntity.EntityType == "LWPOLYLINE")
                            {
                                DxfLwPolyline lwPolyline = lwEntity as DxfLwPolyline;
                                Matrix4D      _insertedPolylineTransform = transform * lwPolyline.Transform;
                                List <string> _newVertices = new List <string>();

                                //loop over all vertices in entity
                                foreach (DxfLwPolyline.Vertex vertex in lwPolyline.Vertices)
                                {
                                    _newVertices.Add(RemoveSpaces(_insertedPolylineTransform.Transform(vertex.Position).ToString()));
                                }
                                List <string> verticesTransformed = new List <string>();
                                foreach (string item in _newVertices)
                                {
                                    verticesTransformed.Add(TransformPoint(item, _screenOrigin));
                                }
                                Booth   _booth        = PassBooth(_model, _boothNumberLayer, verticesTransformed, _screenOrigin);
                                Point[] verticesArray = VerticesToList(verticesTransformed).ToArray();
                                foreach (Point _vertex in verticesArray)
                                {
                                    _allVertices.Add(_vertex);
                                }
                                _boothInfo.Add(_booth);
                            }
                        }
                    }
                }
            }
            Booth _boundaries = new Booth()
            {
                BOOTHNUMBER = "",
                INSERTPOINT = _screenOrigin,
                SHAPE       = "origin",
                SIZEX       = "",
                SIZEY       = ""
            };

            _boothInfo.Add(_boundaries);
            string gridline = FindGridLine(_allVertices.ToArray());

            string[] gridLine  = gridline.Split(',');
            Booth    _gridLine = new Booth()
            {
                BOOTHNUMBER = "",
                INSERTPOINT = "",
                SHAPE       = "Grid Line",
                SIZEX       = gridLine[0],
                SIZEY       = gridLine[1]
            };

            _boothInfo.Add(_gridLine);

            string boothInformation = JsonConvert.SerializeObject(_boothInfo);

            WebOperationContext.Current.OutgoingResponse.ContentType = "application/json; charset=utf-8";
            return(new MemoryStream(Encoding.UTF8.GetBytes(boothInformation)));

            //return JsonConvert.SerializeObject(_boothInfo);
        }
        /// <summary>
        /// 创建一张表格的方法
        /// </summary>
        public void createOneTable()
        {
            string str = getRadomData(6);

            model = new DxfModel();
            //创建一个图层
            DxfLayer layerTable = new DxfLayer("" + str + programName);

            model.Layers.Add(layerTable);
            //创建一个块
            block = new DxfBlock("AcosticBoreHoleTable_Block" + str);
            model.Blocks.Add(block);

            DxfInsert insert = new DxfInsert(block, new Point3D(0, 0, 0));

            insert.Layer = layerTable;
            model.Entities.Add(insert);
            {
                DxfTableStyle tableStyle1 = new DxfTableStyle("Single1 bordered" + str);
                tableStyle1.DataCellStyle.SetAllBordersBorderType(BorderType.Single);
                //tableStyle1.DataCellStyle.SetAllBordersColor(Colors.DarkGray);
                tableStyle1.TitleCellStyle.SetAllBordersBorderType(BorderType.Single);
                tableStyle1.HeaderCellStyle.SetAllBordersBorderType(BorderType.Single);
                //tableStyle1.HeaderCellStyle.ContentColor = Colors.DarkGray;
                model.TableStyles.Add(tableStyle1);


                DxfTable table1 = new DxfTable(tableStyle1);
                //表格插入点的位置
                table1.InsertionPoint = new Point3D(0d, 0d, 0d);

                //设置表格的行数和列数
                //各行高
                table1.RowCount    = 3;
                table1.ColumnCount = 9;
                table1.Rows.ElementAt <DxfTableRow>(0).Height = 18d;
                table1.Rows.ElementAt <DxfTableRow>(1).Height = 5d;
                table1.Rows.ElementAt <DxfTableRow>(2).Height = 255;

                /*foreach (DxfTableColumn column in table1.Columns)
                 * {
                 *  column.Width = 25d;
                 * }*/
                table1.Columns.ElementAt <DxfTableColumn>(0).Width = 9;
                table1.Columns.ElementAt <DxfTableColumn>(1).Width = 13;
                table1.Columns.ElementAt <DxfTableColumn>(2).Width = 9;
                table1.Columns.ElementAt <DxfTableColumn>(3).Width = 13;
                table1.Columns.ElementAt <DxfTableColumn>(4).Width = 20;
                table1.Columns.ElementAt <DxfTableColumn>(5).Width = 40;
                table1.Columns.ElementAt <DxfTableColumn>(6).Width = 15;
                table1.Columns.ElementAt <DxfTableColumn>(7).Width = 20;
                table1.Columns.ElementAt <DxfTableColumn>(8).Width = 33;


                DxfMText drillHoleStadHeight = new DxfMText(
                    @"地" + '\n' + "层" + '\n' + "时" + '\n' + "代",
                    new Point3D(2.5d, -2d, 0d),
                    2d
                    ); block.Entities.Add(drillHoleStadHeight);

                drillHoleStadHeight = new DxfMText(
                    @"层 底" + '\n' + "厚 度" + '\n' + "(米)",
                    new Point3D(12.5d, -2d, 0d),
                    2d
                    ); block.Entities.Add(drillHoleStadHeight);

                drillHoleStadHeight = new DxfMText(
                    @" 层 " + '\n' + " 厚 " + '\n' + "(米)",
                    new Point3D(24d, -2d, 0d),
                    2d
                    ); block.Entities.Add(drillHoleStadHeight);

                drillHoleStadHeight = new DxfMText(
                    @"层 底" + '\n' + "标 高" + '\n' + "(米)",
                    new Point3D(33d, -2d, 0d),
                    2d
                    ); block.Entities.Add(drillHoleStadHeight);

                drillHoleStadHeight = new DxfMText(
                    @" 柱 状 剖 面" + '\n' + "  (比例尺)" + '\n' + "   1:" + plottingScale,
                    new Point3D(46d, -2d, 0d),
                    2d
                    ); block.Entities.Add(drillHoleStadHeight);

                drillHoleStadHeight = new DxfMText(
                    @" 所  通  过  岩  层  的  描  述" + '\n',
                    new Point3D(66d, -3.5d, 0d),
                    2d
                    ); block.Entities.Add(drillHoleStadHeight);
                drillHoleStadHeight = new DxfMText(
                    @"(颗粒成分、状态、 颜色、掺杂物等)",
                    new Point3D(66d, -9d, 0d),
                    1.5d
                    ); block.Entities.Add(drillHoleStadHeight);

                drillHoleStadHeight = new DxfMText(
                    @"岩芯" + '\n' + "采取率" + '\n' + "(%)",
                    new Point3D(106d, -2d, 0d),
                    2d
                    ); block.Entities.Add(drillHoleStadHeight);

                drillHoleStadHeight = new DxfMText(
                    @"原 位 测 试",
                    new Point3D(121d, -2d, 0d),
                    2d
                    ); block.Entities.Add(drillHoleStadHeight);

                drillHoleStadHeight = new DxfMText(
                    @"       声  波  曲  线" + '\n' + "            (km/s)",
                    new Point3D(141d, -3.5d, 0d),
                    2d
                    ); block.Entities.Add(drillHoleStadHeight);


                drillHoleStadHeight = new DxfMText(
                    @"1",
                    new Point3D(3d, -19d, 0d),
                    2d
                    ); block.Entities.Add(drillHoleStadHeight);


                drillHoleStadHeight = new DxfMText(
                    @"2",
                    new Point3D(14.5d, -19d, 0d),
                    2d
                    ); block.Entities.Add(drillHoleStadHeight);


                drillHoleStadHeight = new DxfMText(
                    @"3",
                    new Point3D(25d, -19d, 0d),
                    2d
                    ); block.Entities.Add(drillHoleStadHeight);


                drillHoleStadHeight = new DxfMText(
                    @"4",
                    new Point3D(37.5d, -19d, 0d),
                    2d
                    ); block.Entities.Add(drillHoleStadHeight);


                drillHoleStadHeight = new DxfMText(
                    @"5",
                    new Point3D(52.5d, -19d, 0d),
                    2d
                    ); block.Entities.Add(drillHoleStadHeight);


                drillHoleStadHeight = new DxfMText(
                    @"6",
                    new Point3D(85d, -19d, 0d),
                    2d
                    ); block.Entities.Add(drillHoleStadHeight);


                drillHoleStadHeight = new DxfMText(
                    @"7",
                    new Point3D(109.5d, -19d, 0d),
                    2d
                    ); block.Entities.Add(drillHoleStadHeight);


                drillHoleStadHeight = new DxfMText(
                    @"8",
                    new Point3D(127d, -19d, 0d),
                    2d
                    ); block.Entities.Add(drillHoleStadHeight);


                drillHoleStadHeight = new DxfMText(
                    @"9",
                    new Point3D(153.5d, -19d, 0d),
                    2d
                    ); block.Entities.Add(drillHoleStadHeight);


                block.Entities.Add(table1);
            }

            {
                //************table2*************tableStyle2**************
                //set table borderStyle 此处DxfTableStyle括号中的名字,每个table的都不能相同
                DxfTableStyle dxfTableStyle2 = new DxfTableStyle("Single2 bordered" + str);

                dxfTableStyle2.DataCellStyle.SetAllBordersBorderType(BorderType.Single);
                dxfTableStyle2.DataCellStyle.SetAllBordersColor(Colors.DarkGray);
                dxfTableStyle2.TitleCellStyle.SetAllBordersBorderType(BorderType.Single);
                dxfTableStyle2.HeaderCellStyle.SetAllBordersBorderType(BorderType.Single);
                dxfTableStyle2.HeaderCellStyle.SetAllBordersColor(Colors.DarkGray);
                //有该行的时候两个表格不能同时生成???***但是没有该行生成的图形文件又不完整
                model.TableStyles.Add(dxfTableStyle2);
                //model.TableStyles.Insert(1,dxfTableStyle2);


                //定义一个拥有给定格式的表格
                DxfTable table2 = new DxfTable(dxfTableStyle2);
                //表格插入点的位置
                table2.InsertionPoint = new Point3D(-2d, 25d, 0d);

                table2.RowCount    = 1;
                table2.ColumnCount = 1;
                table2.Rows.ElementAt <DxfTableRow>(0).Height = 305;
                foreach (DxfTableColumn column in table2.Columns)
                {
                    column.Width = 176d;
                }

                block.Entities.Add(table2);
            }

            {
                //标题下划线
                //定义线的长度
                // A complex line type.
                DxfLineType lineType = new DxfLineType("titleLine" + str);
                model.LineTypes.Add(lineType);
                DxfLine line = new DxfLine();
                line.Start    = new Point3D(44d, 10d, 0d);
                line.End      = new Point3D(113d, 10d, 0d);
                line.LineType = lineType;
                block.Entities.Add(line);
                //标题名
                DxfMText mText = new DxfMText(
                    @"钻孔柱状剖面图",
                    new Point3D(46d, 18d, 0d),
                    6d
                    );
                block.Entities.Add(mText);
            }
            //定义标题栏中的其他部分
            {
                //定义输入钻孔***X***坐标位置
                DxfMText mText1 = new DxfMText(
                    @"坐标   X=",
                    new Point3D(135d, 20d, 0d),
                    2.5d
                    );
                block.Entities.Add(mText1);
                DxfLineType lineType1 = new DxfLineType("applicanceX" + str);
                model.LineTypes.Add(lineType1);
                DxfLine lineX = new DxfLine();
                lineX.Start    = new Point3D(149d, 17.5d, 0d);
                lineX.End      = new Point3D(172d, 17.5d, 0d);
                lineX.LineType = lineType1;
                block.Entities.Add(lineX);
                DxfMText mText11 = new DxfMText(
                    @"" + applicationCoordinateX,
                    new Point3D(151d, 20d, 0d),
                    2d
                    );

                block.Entities.Add(mText11);

                //定义输入钻孔***Y***坐标位置********一块填写部分开始
                DxfMText mText2 = new DxfMText(
                    @"Y=",
                    new Point3D(145d, 10d, 0d),
                    2.5d
                    );
                block.Entities.Add(mText2);
                DxfLineType lineType2 = new DxfLineType("applicanceY" + str);
                model.LineTypes.Add(lineType2);
                DxfLine lineY = new DxfLine();
                lineY.Start    = new Point3D(149d, 7.5d, 0d);
                lineY.End      = new Point3D(172d, 7.5d, 0d);
                lineY.LineType = lineType2;
                block.Entities.Add(lineY);
                DxfMText mText21 = new DxfMText(
                    @"" + applicationCoordinateY,
                    new Point3D(151d, 10d, 0d),
                    2d
                    );
                block.Entities.Add(mText21);
                //********************************** 一块填写部分结束**********************
            }
            {
                //原位测试的长线条
                DxfLineType drillCodeLineType = new DxfLineType("TestLine1" + str);
                model.LineTypes.Add(drillCodeLineType);
                DxfLine drillCodeine = new DxfLine();
                drillCodeine.Start    = new Point3D(124d, -23d, 0d);
                drillCodeine.End      = new Point3D(124d, -278d, 0d);
                drillCodeine.Color    = EntityColors.Gray;
                drillCodeine.LineType = drillCodeLineType;
                block.Entities.Add(drillCodeine);

                DxfLineType drillCodeLineType1 = new DxfLineType("TestLine2" + str);
                model.LineTypes.Add(drillCodeLineType1);
                DxfLine drillCodeine1 = new DxfLine();
                drillCodeine1.Start    = new Point3D(129d, -23d, 0d);
                drillCodeine1.End      = new Point3D(129d, -278d, 0d);
                drillCodeine1.Color    = EntityColors.Gray;
                drillCodeine1.LineType = drillCodeLineType1;
                block.Entities.Add(drillCodeine1);

                DxfLineType drillCodeLineType2 = new DxfLineType("TestLine3" + str);
                model.LineTypes.Add(drillCodeLineType2);
                DxfLine drillCodeine2 = new DxfLine();
                drillCodeine2.Start    = new Point3D(134d, -23d, 0d);
                drillCodeine2.End      = new Point3D(134d, -278d, 0);
                drillCodeine2.Color    = EntityColors.Gray;
                drillCodeine2.LineType = drillCodeLineType2;
                block.Entities.Add(drillCodeine2);
            }

            {
                //声波曲线的长线条
                DxfLineType drillCodeLineType = new DxfLineType("TestLine11" + str);
                model.LineTypes.Add(drillCodeLineType);
                {
                    //长线
                    DxfLine drillCodeine = new DxfLine();
                    drillCodeine.Start    = new Point3D(144d, -23d, 0d);
                    drillCodeine.End      = new Point3D(144d, -278d, 0d);
                    drillCodeine.Color    = EntityColors.Gray;
                    drillCodeine.LineType = drillCodeLineType;
                    block.Entities.Add(drillCodeine);
                }
                {
                    DxfMText mtext = new DxfMText(
                        @"2",
                        new Point3D(143.5d, -13.5d, 0d),
                        2d
                        );
                    model.Entities.Add(mtext);
                    //长短线
                    DxfLine drillCodeine = new DxfLine();
                    drillCodeine.Start    = new Point3D(144d, -16d, 0d);
                    drillCodeine.End      = new Point3D(144d, -18d, 0d);
                    drillCodeine.LineType = drillCodeLineType;
                    block.Entities.Add(drillCodeine);
                }
                {
                    //短线
                    DxfLine drillCodeine = new DxfLine();
                    drillCodeine.Start    = new Point3D(141.5d, -17d, 0d);
                    drillCodeine.End      = new Point3D(141.5d, -18d, 0d);
                    drillCodeine.LineType = drillCodeLineType;
                    block.Entities.Add(drillCodeine);
                }


                DxfLineType drillCodeLineType1 = new DxfLineType("TestLine12" + str);
                model.LineTypes.Add(drillCodeLineType1);
                {
                    DxfLine drillCodeine1 = new DxfLine();
                    drillCodeine1.Start    = new Point3D(149d, -23d, 0d);
                    drillCodeine1.End      = new Point3D(149d, -278d, 0d);
                    drillCodeine1.Color    = EntityColors.Gray;
                    drillCodeine1.LineType = drillCodeLineType1;
                    block.Entities.Add(drillCodeine1);
                }
                {
                    DxfMText mtext = new DxfMText(
                        @"3",
                        new Point3D(148.5d, -13.5d, 0d),
                        2d
                        );
                    model.Entities.Add(mtext);
                    //长短线
                    DxfLine drillCodeine = new DxfLine();
                    drillCodeine.Start    = new Point3D(149d, -16d, 0d);
                    drillCodeine.End      = new Point3D(149d, -18d, 0d);
                    drillCodeine.LineType = drillCodeLineType;
                    block.Entities.Add(drillCodeine);
                }
                {
                    //短线
                    DxfLine drillCodeine = new DxfLine();
                    drillCodeine.Start    = new Point3D(146.5d, -17d, 0d);
                    drillCodeine.End      = new Point3D(146.5d, -18d, 0d);
                    drillCodeine.LineType = drillCodeLineType;
                    block.Entities.Add(drillCodeine);
                }

                DxfLineType drillCodeLineType2 = new DxfLineType("TestLine13" + str);
                model.LineTypes.Add(drillCodeLineType2);
                {
                    DxfLine drillCodeine2 = new DxfLine();
                    drillCodeine2.Start    = new Point3D(154d, -23d, 0d);
                    drillCodeine2.End      = new Point3D(154d, -278d, 0);
                    drillCodeine2.Color    = EntityColors.Gray;
                    drillCodeine2.LineType = drillCodeLineType2;
                    block.Entities.Add(drillCodeine2);
                }
                {
                    DxfMText mtext = new DxfMText(
                        @"4",
                        new Point3D(153.5d, -13.5d, 0d),
                        2d
                        );
                    model.Entities.Add(mtext);
                    //长短线
                    DxfLine drillCodeine = new DxfLine();
                    drillCodeine.Start    = new Point3D(154d, -16d, 0d);
                    drillCodeine.End      = new Point3D(154d, -18d, 0d);
                    drillCodeine.LineType = drillCodeLineType;
                    block.Entities.Add(drillCodeine);
                }
                {
                    //短线
                    DxfLine drillCodeine = new DxfLine();
                    drillCodeine.Start    = new Point3D(151.5d, -17d, 0d);
                    drillCodeine.End      = new Point3D(151.5d, -18d, 0d);
                    drillCodeine.LineType = drillCodeLineType;
                    block.Entities.Add(drillCodeine);
                }

                DxfLineType drillCodeLineType3 = new DxfLineType("TestLine14" + str);
                model.LineTypes.Add(drillCodeLineType3);
                {
                    DxfLine drillCodeine3 = new DxfLine();
                    drillCodeine3.Start    = new Point3D(159d, -23d, 0d);
                    drillCodeine3.End      = new Point3D(159d, -278d, 0d);
                    drillCodeine3.Color    = EntityColors.Gray;
                    drillCodeine3.LineType = drillCodeLineType3;
                    block.Entities.Add(drillCodeine3);
                }
                {
                    DxfMText mtext = new DxfMText(
                        @"5",
                        new Point3D(158.5d, -13.5d, 0d),
                        2d
                        );
                    model.Entities.Add(mtext);
                    //长短线
                    DxfLine drillCodeine = new DxfLine();
                    drillCodeine.Start    = new Point3D(159d, -16d, 0d);
                    drillCodeine.End      = new Point3D(159d, -18d, 0d);
                    drillCodeine.LineType = drillCodeLineType;
                    block.Entities.Add(drillCodeine);
                }
                {
                    //短线
                    DxfLine drillCodeine = new DxfLine();
                    drillCodeine.Start    = new Point3D(156.5d, -17d, 0d);
                    drillCodeine.End      = new Point3D(156.5d, -18d, 0d);
                    drillCodeine.LineType = drillCodeLineType;
                    block.Entities.Add(drillCodeine);
                }

                DxfLineType drillCodeLineType4 = new DxfLineType("TestLine15" + str);
                model.LineTypes.Add(drillCodeLineType4);
                {
                    DxfLine drillCodeine4 = new DxfLine();
                    drillCodeine4.Start    = new Point3D(164d, -23d, 0d);
                    drillCodeine4.End      = new Point3D(164d, -278d, 0d);
                    drillCodeine4.Color    = EntityColors.Gray;
                    drillCodeine4.LineType = drillCodeLineType4;
                    block.Entities.Add(drillCodeine4);
                }
                {
                    DxfMText mtext = new DxfMText(
                        @"6",
                        new Point3D(163.5d, -13.5d, 0d),
                        2d
                        );
                    model.Entities.Add(mtext);
                    //长短线
                    DxfLine drillCodeine = new DxfLine();
                    drillCodeine.Start    = new Point3D(164d, -16d, 0d);
                    drillCodeine.End      = new Point3D(164d, -18d, 0d);
                    drillCodeine.LineType = drillCodeLineType;
                    block.Entities.Add(drillCodeine);
                }
                {
                    //短线
                    DxfLine drillCodeine = new DxfLine();
                    drillCodeine.Start    = new Point3D(161.5d, -17d, 0d);
                    drillCodeine.End      = new Point3D(161.5d, -18d, 0d);
                    drillCodeine.LineType = drillCodeLineType;
                    block.Entities.Add(drillCodeine);
                }

                DxfLineType drillCodeLineType5 = new DxfLineType("TestLine16" + str);
                model.LineTypes.Add(drillCodeLineType5);
                {
                    DxfLine drillCodeine5 = new DxfLine();
                    drillCodeine5.Start    = new Point3D(169d, -23d, 0d);
                    drillCodeine5.End      = new Point3D(169d, -278d, 0);
                    drillCodeine5.Color    = EntityColors.Gray;
                    drillCodeine5.LineType = drillCodeLineType5;
                    block.Entities.Add(drillCodeine5);
                }
                {
                    DxfMText mtext = new DxfMText(
                        @"7",
                        new Point3D(168.5d, -13.5d, 0d),
                        2d
                        );
                    model.Entities.Add(mtext);
                    //长短线
                    DxfLine drillCodeine = new DxfLine();
                    drillCodeine.Start    = new Point3D(169d, -16d, 0d);
                    drillCodeine.End      = new Point3D(169d, -18d, 0d);
                    drillCodeine.LineType = drillCodeLineType;
                    block.Entities.Add(drillCodeine);
                }
                {
                    //短线
                    DxfLine drillCodeine = new DxfLine();
                    drillCodeine.Start    = new Point3D(166.5d, -17d, 0d);
                    drillCodeine.End      = new Point3D(166.5d, -18d, 0d);
                    drillCodeine.LineType = drillCodeLineType;
                    block.Entities.Add(drillCodeine);
                }
            }

            //需要填入表中的其他部分的内容
            {
                //钻孔编号*****************************************************************
                DxfMText drillCodeText = new DxfMText(
                    @"钻孔编号",
                    new Point3D(0d, 5d, 0d),
                    2.5d
                    );
                block.Entities.Add(drillCodeText);
                DxfLineType drillCodeLineType = new DxfLineType("zkbhLine" + str);
                model.LineTypes.Add(drillCodeLineType);
                DxfLine drillCodeine = new DxfLine();
                drillCodeine.Start    = new Point3D(15d, 1d, 0d);
                drillCodeine.End      = new Point3D(33d, 1d, 0d);
                drillCodeine.LineType = drillCodeLineType;
                block.Entities.Add(drillCodeine);
                DxfMText drillCodeWriteIn = new DxfMText(
                    @"" + drillCode,
                    new Point3D(17d, 4d, 0d),
                    2d
                    );
                block.Entities.Add(drillCodeWriteIn);
                //***********************************************************************

                //钻孔位置***************************************************************
                DxfMText drillLocationText = new DxfMText(
                    @"钻孔位置",
                    new Point3D(35d, 5d, 0d),
                    2.5d
                    );
                block.Entities.Add(drillLocationText);
                DxfLineType drillLocationLineType = new DxfLineType("drillLocationLine" + str);
                model.LineTypes.Add(drillLocationLineType);
                DxfLine drillLocationLine = new DxfLine();
                drillLocationLine.Start    = new Point3D(52d, 1, 0d);
                drillLocationLine.End      = new Point3D(77d, 1d, 0d);
                drillLocationLine.LineType = drillLocationLineType;
                block.Entities.Add(drillLocationLine);
                DxfMText drillLocationWriteIn = new DxfMText(
                    @"" + drillLocation + drillLocation1 + drillLocation2,
                    new Point3D(54d, 4d, 0d),
                    2d
                    );
                block.Entities.Add(drillLocationWriteIn);
                //*****************************************************************************

                //********施钻起止日期*********************************************************
                DxfMText drillDate = new DxfMText(
                    @"施钻起止日期",
                    new Point3D(79d, 5d, 0d),
                    2.5d
                    );
                block.Entities.Add(drillDate);
                DxfLineType drillDateLineType = new DxfLineType("drillDateLine" + str);
                model.LineTypes.Add(drillDateLineType);
                DxfLine drillDateLine = new DxfLine();
                drillDateLine.Start    = new Point3D(101, 1d, 0d);
                drillDateLine.End      = new Point3D(133, 1d, 0d);
                drillDateLine.LineType = drillDateLineType;
                block.Entities.Add(drillDateLine);
                DxfMText drillDateWriteIn = new DxfMText(
                    @"" + drillStartTime + "--" + drillEndTime,
                    new Point3D(102d, 4d, 0d),
                    2d
                    );
                block.Entities.Add(drillDateWriteIn);
                //***********************************************************************

                //**********孔口标高*****************************************************
                DxfMText drillHoleStadHeight = new DxfMText(
                    @"孔口标高",
                    new Point3D(136d, 5d, 0d),
                    2.5d
                    );
                block.Entities.Add(drillHoleStadHeight);
                DxfLineType drillHoleStadHeightLineType = new DxfLineType("drillHoleStaHeight" + str);
                model.LineTypes.Add(drillHoleStadHeightLineType);
                DxfLine drillHoleStadHeightLine = new DxfLine();
                drillHoleStadHeightLine.Start    = new Point3D(151d, 1d, 0d);
                drillHoleStadHeightLine.End      = new Point3D(172d, 1d, 0d);
                drillHoleStadHeightLine.LineType = drillHoleStadHeightLineType;
                block.Entities.Add(drillHoleStadHeightLine);
                DxfMText drillHoleStadHeightWriteIn = new DxfMText(
                    @"" + drillHoleStadardHeight,
                    new Point3D(152d, 4d, 0d),
                    2d
                    );
                block.Entities.Add(drillHoleStadHeightWriteIn);
                //**********************************************************************************
            }

            addExtension();                     //添加扩展线,包括描述信息的添加()

            AcosticWave aw = new AcosticWave(); //声波数据

            aw.getAusticWave(model, block);

            //文件存储路径
            //dxf格式的柱状图
            string path = AppDomain.CurrentDomain.BaseDirectory + "Drill\\acosticHistogram\\" + drillCode + ".dxf";

            DxfWriter.Write(path, model, true);

            //获取其他格式的柱状图
            ConvertFigureFormat cf = new ConvertFigureFormat();
            string filename        = drillCode;
            string outfile         = AppDomain.CurrentDomain.BaseDirectory + "Drill\\acosticHistogram\\" + filename;

            cf.getDXFFormat(model, filename, outfile);
        }
Example #25
0
 public void Visit(DxfInsert insert)
 {
     this.bool_0 = true;
 }
Example #26
0
 public Class961(DxfInsert insert)
 {
     this.dxfInsert_0 = insert;
 }
Example #27
0
 public void BeginInsert(DxfInsert insert)
 {
     this.linkedListNodeRef_0.Insert((IWireframeDrawable) new WireframeGraphicsCache.Class961(insert));
 }
 public void BeginInsert(DxfInsert insert)
 {
     this.iwireframeGraphicsFactory2_0.BeginInsert(insert);
 }
Example #29
0
        public void Test1()
        {
            DxfModel model = new DxfModel(DxfVersion.Dxf14);

            // Create block.
            DxfBlock block = new DxfBlock("TEST_BLOCK");
            model.Blocks.Add(block);
            block.Entities.Add(new DxfCircle(EntityColors.Blue, Point3D.Zero, 2d));
            block.Entities.Add(new DxfLine(EntityColors.Red, Point3D.Zero, new Point3D(-1, 2, 1)));
            block.Entities.Add(new DxfLine(EntityColors.Green, Point3D.Zero, new Point3D(2, 0, 1)));

            // Insert block at 3 positions.
            model.Entities.Add(new DxfInsert(block, new Point3D(1, 0, 0)));
            model.Entities.Add(new DxfInsert(block, new Point3D(3, 1, 0)));
            model.Entities.Add(new DxfInsert(block, new Point3D(2, -3, 0)));

            DxfInsert dxfInsert = new DxfInsert();
            dxfInsert.InsertionPoint = new Point3D(10,10,0);
            model.Entities.Add(dxfInsert);

            DxfWriter.Write("DxfWriteInsertTest.dxf", model, false);
        }