/// <summary>
 /// Visits the specified entity.
 /// See the <see cref="IEntityVisitor"/> for more details.
 /// </summary>
 public override void Visit(DxfTable table)
 {
     if (HandleEntity(table))
     {
         // can remove associated block, too
         DxfBlock block = table.Block;
         if (block != null)
         {
             model.Blocks.Remove(block);
         }
     }
 }
Example #2
0
        public void Visit(DxfTable table)
        {
            this.method_0((DxfEntity)table);
            if ((this.handlingFlags_0 & EntityCounter.HandlingFlags.IncludeTableBlocks) == (EntityCounter.HandlingFlags) 0)
            {
                return;
            }
            DxfBlock block = table.Block;

            if (block == null)
            {
                return;
            }
            foreach (DxfEntity entity in (DxfHandledObjectCollection <DxfEntity>)block.Entities)
            {
                entity.Accept((IEntityVisitor)this);
            }
        }
        internal void AddCommonValuePairs(List <DxfCodePair> pairs, DxfAcadVersion version, bool outputHandles)
        {
            pairs.Add(new DxfCodePair(0, DxfTable.TableTypeToName(TableType)));
            if (outputHandles)
            {
                int code = TableType == DxfTableType.DimStyle ? 105 : 5;
                pairs.Add(new DxfCodePair(code, DxfCommonConverters.UIntHandle(Handle)));
            }

            foreach (var group in ExtensionDataGroups)
            {
                group.AddValuePairs(pairs, version, outputHandles);
            }

            if (version >= DxfAcadVersion.R2000)
            {
                pairs.Add(new DxfCodePair(330, DxfCommonConverters.UIntHandle(OwnerHandle)));
            }

            pairs.Add(new DxfCodePair(100, "AcDbSymbolTableRecord"));
        }
Example #4
0
        internal Bounds3D method_1(DxfTable table)
        {
            DxfBlock valueObject = this.ValueObject as DxfBlock;

            if (valueObject == null)
            {
                return((Bounds3D)null);
            }
            DxfInsert dxfInsert = new DxfInsert(valueObject);

            foreach (DxfTableAttribute dxfTableAttribute in (List <DxfTableAttribute>) this.dxfTableAttributeCollection_0)
            {
                if (dxfTableAttribute.AttributeDefinition != null)
                {
                    DxfAttribute dxfAttribute1 = new DxfAttribute(dxfTableAttribute.AttributeDefinition);
                    dxfAttribute1.Text = dxfTableAttribute.Value;
                    DxfAttribute dxfAttribute2 = dxfAttribute1;
                    dxfAttribute2.AlignmentPoint1 = dxfAttribute2.AlignmentPoint1 - valueObject.BasePoint;
                    if (dxfAttribute1.AlignmentPoint2.HasValue)
                    {
                        DxfAttribute     dxfAttribute3   = dxfAttribute1;
                        WW.Math.Point3D? alignmentPoint2 = dxfAttribute3.AlignmentPoint2;
                        WW.Math.Vector3D basePoint       = valueObject.BasePoint;
                        dxfAttribute3.AlignmentPoint2 = alignmentPoint2.HasValue ? new WW.Math.Point3D?(alignmentPoint2.GetValueOrDefault() - basePoint) : new WW.Math.Point3D?();
                    }
                }
            }
            BoundsCalculator boundsCalculator = new BoundsCalculator();

            boundsCalculator.GetBounds(table.Content.Model, (DxfEntity)dxfInsert);
            Bounds3D bounds    = boundsCalculator.Bounds;
            Matrix4D transform = Transformation4D.Translation(valueObject.BasePoint) * Transformation4D.RotateZ(this.dxfContentFormat_0.Rotation) * Transformation4D.Translation(-valueObject.BasePoint);

            bounds.Transform(transform);
            return(bounds);
        }
Example #5
0
 public Class296(DxfTable table)
     : base((DxfInsertBase)table)
 {
     this.dxfTable_0 = table;
 }
Example #6
0
 public virtual void Visit(DxfTable table)
 {
 }
Example #7
0
 internal override bool vmethod_5(DxfModel model)
 {
     return(DxfTable.smethod_2(model));
 }
Example #8
0
 public void Visit(DxfTable table)
 {
     this.bool_0 = true;
 }
Example #9
0
        public void method_0(DxfTable table, DxfTableContent tableContent)
        {
            this.vector3D_0 = table.HorizontalDirection;
            int num = tableContent.RowCount;

            if (table.BreakData != null && table.BreakData.OptionFlags != TableBreakOptionFlags.None && table.BreakData.RowRanges.Count > 0)
            {
                num = table.BreakData.RowRanges[0].EndRowIndex + 1;
            }
            this.method_7(num, false);
            this.method_8(tableContent.ColumnCount, false);
            if (tableContent.TableStyle == null)
            {
                throw new ArgumentException("Table style is not set on table content.");
            }
            this.TableStyle           = tableContent.TableStyle;
            this.FlowDirection        = tableContent.FlowDirection;
            this.SuppressTitle        = tableContent.SuppressTitle == this.TableStyle.SuppressTitle ? new bool?() : new bool?(tableContent.SuppressTitle);
            this.SuppressHeaderRow    = tableContent.SuppressHeaderRow == this.TableStyle.SuppressHeaderRow ? new bool?() : new bool?(tableContent.SuppressHeaderRow);
            this.VerticalCellMargin   = !tableContent.CellStyleOverrides.OverrideVerticalMargin ? new double?() : new double?(tableContent.CellStyleOverrides.VerticalMargin);
            this.HorizontalCellMargin = !tableContent.CellStyleOverrides.OverrideHorizontalMargin ? new double?() : new double?(tableContent.CellStyleOverrides.HorizontalMargin);
            for (int rowIndex = 0; rowIndex < this.RowCount; ++rowIndex)
            {
                Class430    class430 = this.class429_0[rowIndex];
                DxfTableRow row      = tableContent.Rows[rowIndex];
                class430.Height = row.Height;
                for (int columnIndex = 0; columnIndex < this.ColumnCount; ++columnIndex)
                {
                    Class1026            cell1 = class430.Cells[columnIndex];
                    DxfTableCell         cell2 = row.Cells[columnIndex];
                    TableCellContentType tableCellContentType1 = TableCellContentType.Value;
                    DxfTableCellContent  tableCellContent      = (DxfTableCellContent)null;
                    DxfTableCellStyle    cellStyle             = this.GetCellStyle(rowIndex, columnIndex);
                    TableCellContentType tableCellContentType2;
                    if (cell2.Contents.Count > 0)
                    {
                        tableCellContentType1 = TableCellContentType.Value;
                        tableCellContentType1 = TableCellContentType.Value;
                        tableCellContent      = cell2.Contents[0];
                        tableCellContentType2 = tableCellContent.ContentType;
                        switch (tableCellContentType2)
                        {
                        case TableCellContentType.Value:
                        case TableCellContentType.Field:
                            break;

                        case TableCellContentType.Block:
                            cell1.CellType = Enum47.const_2;
                            cell1.Value.method_0(DxfValueFormat.GeneralInstance);
                            cell1.Value.method_1((object)null);
                            cell1.Value.method_2((string)null);
                            cell1.AutoFit    = table.GetAutoScale(rowIndex, columnIndex, -1);
                            cell1.BlockScale = table.GetBlockScale(rowIndex, columnIndex, -1);
                            cell1.Rotation   = table.GetRotation(rowIndex, columnIndex, -1);
                            if (tableCellContent != null)
                            {
                                cell1.BlockOrField = (DxfHandledObject)(tableCellContent.ValueObject as DxfBlock);
                                cell1.AutoFit      = table.GetAutoScale(rowIndex, columnIndex, 0);
                                cell1.BlockScale   = table.GetBlockScale(rowIndex, columnIndex, 0);
                                cell1.Rotation     = table.GetRotation(rowIndex, columnIndex, 0);
                                goto label_16;
                            }
                            else
                            {
                                goto label_16;
                            }

                        default:
                            goto label_16;
                        }
                    }
                    else
                    {
                        tableCellContentType1 = TableCellContentType.Value;
                        tableCellContentType2 = TableCellContentType.Value;
                    }
                    cell1.CellType = Enum47.const_1;
                    if (tableCellContent != null)
                    {
                        cell1.BlockOrField = tableCellContentType2 != TableCellContentType.Field ? (DxfHandledObject)null : tableCellContent.ValueObject;
                        cell1.Value.CopyFromShallow(tableCellContent.Value);
                        double?rotationOverride = table.GetRotationOverride(rowIndex, columnIndex, 0, cellStyle);
                        cell1.Rotation   = rotationOverride.HasValue ? rotationOverride.Value : 0.0;
                        cell1.TextStyle  = table.GetTextStyleOverride(rowIndex, columnIndex, 0, cellStyle);
                        cell1.TextHeight = table.GetTextHeightOverride(rowIndex, columnIndex, 0, cellStyle);
                    }
                    else
                    {
                        cell1.BlockOrField = (DxfHandledObject)null;
                        if (cell2.Contents.Count > 0)
                        {
                            cell1.Value.CopyFromShallow(cell2.Contents[0].Value);
                        }
                        double?rotationOverride = table.GetRotationOverride(rowIndex, columnIndex, -1, cellStyle);
                        cell1.Rotation   = rotationOverride.HasValue ? rotationOverride.Value : 0.0;
                        cell1.TextStyle  = table.GetTextStyleOverride(rowIndex, columnIndex, -1, cellStyle);
                        cell1.TextHeight = table.GetTextHeightOverride(rowIndex, columnIndex, -1, cellStyle);
                    }
label_16:
                    cell1.CellAlignment = table.GetCellAlignmentOverride(rowIndex, columnIndex, -1, cellStyle);
                    Color?contentColorOverride = table.GetContentColorOverride(rowIndex, columnIndex, -1, cellStyle);
                    cell1.ContentColor = contentColorOverride.HasValue ? new Color?(contentColorOverride.Value) : new Color?();
                    Color?backColor = table.GetBackColor(rowIndex, columnIndex);
                    if (backColor.HasValue)
                    {
                        cell1.BackColor          = new Color?(backColor.Value);
                        cell1.IsBackColorEnabled = new bool?(true);
                    }
                    else
                    {
                        cell1.BackColor          = new Color?();
                        cell1.IsBackColorEnabled = new bool?();
                    }
                    for (int borderIndex = 0; borderIndex < 4; ++borderIndex)
                    {
                        DxfTableBorder          dxfTableBorder       = cell2.CellStyleOverrides.method_21(borderIndex + 2);
                        DxfTableBorderOverrides tableBorderOverrides = cell1.method_6(borderIndex);
                        tableBorderOverrides.Color      = !dxfTableBorder.OverrideColor ? new Color?() : new Color?(dxfTableBorder.Color);
                        tableBorderOverrides.LineWeight = !dxfTableBorder.OverrideLineWeight ? new short?() : new short?(dxfTableBorder.LineWeight);
                        tableBorderOverrides.Visible    = !dxfTableBorder.OverrideVisibility ? new bool?() : new bool?(dxfTableBorder.Visible);
                    }
                }
            }
            for (int index = 0; index < this.ColumnCount; ++index)
            {
                this.class912_0[index].Width = tableContent.Columns[index].Width;
            }
            foreach (DxfTableCellRange mergedCellRange in (List <DxfTableCellRange>)tableContent.MergedCellRanges)
            {
                if ((mergedCellRange.TopRowIndex != mergedCellRange.BottomRowIndex || mergedCellRange.LeftColumnIndex != mergedCellRange.RightColumnIndex) && (mergedCellRange.TopRowIndex < this.RowCount && mergedCellRange.LeftColumnIndex < this.ColumnCount))
                {
                    Class1026 cell = this.class429_0[mergedCellRange.TopRowIndex].Cells[mergedCellRange.LeftColumnIndex];
                    cell.MergedCellCountHorizontal = mergedCellRange.RightColumnIndex - mergedCellRange.LeftColumnIndex + 1;
                    cell.MergedCellCountVertical   = mergedCellRange.BottomRowIndex - mergedCellRange.TopRowIndex + 1;
                }
            }
        }
        /// <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);
        }
        internal static DxfTablesSection TablesSectionFromBuffer(DxfCodePairBufferReader buffer)
        {
            var section = new DxfTablesSection();

            section.Clear();
            while (buffer.ItemsRemain)
            {
                var pair = buffer.Peek();
                buffer.Advance();
                if (DxfCodePair.IsSectionEnd(pair))
                {
                    break;
                }

                if (!IsTableStart(pair))
                {
                    throw new DxfReadException("Expected start of table.", pair);
                }

                var table = DxfTable.FromBuffer(buffer);
                if (table != null)
                {
                    switch (table.TableType)
                    {
                    case DxfTableType.AppId:
                        section.AppIdTable = (DxfAppIdTable)table;
                        break;

                    case DxfTableType.BlockRecord:
                        section.BlockRecordTable = (DxfBlockRecordTable)table;
                        break;

                    case DxfTableType.DimStyle:
                        section.DimStyleTable = (DxfDimStyleTable)table;
                        break;

                    case DxfTableType.Layer:
                        section.LayerTable = (DxfLayerTable)table;
                        break;

                    case DxfTableType.LType:
                        section.LTypeTable = (DxfLTypeTable)table;
                        break;

                    case DxfTableType.Style:
                        section.StyleTable = (DxfStyleTable)table;
                        break;

                    case DxfTableType.Ucs:
                        section.UcsTable = (DxfUcsTable)table;
                        break;

                    case DxfTableType.View:
                        section.ViewTable = (DxfViewTable)table;
                        break;

                    case DxfTableType.ViewPort:
                        section.ViewPortTable = (DxfViewPortTable)table;
                        break;

                    default:
                        throw new DxfReadException($"Unexpected table type {table.TableType}", pair);
                    }
                }
            }

            return(section);
        }
        /// <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 #13
0
 public virtual void Visit(DxfTable table)
 {
     this.VisitInsertingEntity((DxfEntity)table, table.Block);
 }