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); } } } }
/// <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); } }
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); }
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); }
public float GetEntityLength(DxfInsert dxfInsert) { var dxfBlock = _dxfFile.Blocks.FirstOrDefault(t => t.Name == dxfInsert.Name); var sum = dxfBlock.Entities.Sum(GetEntityLength); return(sum); }
public string EntityToJson(DxfInsert dxfInsert) { var dxfBlock = _dxfFile.Blocks.FirstOrDefault(t => t.Name == dxfInsert.Name); var json = EntitiesToJson(dxfBlock.Entities); return(json); }
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); } } }
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); }
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); } }
/// <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); } }
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); }
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); } } }
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); } } }
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); }
public void BeginInsert(DxfInsert insert) { }
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); } } }
public virtual void BeginInsert(DxfInsert insert) { }
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); } } }
public override void Visit(DxfInsert insert) { this.Visit((IEnumerable <DxfEntity>)insert.Attributes); }
//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); }
public void Visit(DxfInsert insert) { this.bool_0 = true; }
public Class961(DxfInsert insert) { this.dxfInsert_0 = insert; }
public void BeginInsert(DxfInsert insert) { this.linkedListNodeRef_0.Insert((IWireframeDrawable) new WireframeGraphicsCache.Class961(insert)); }
public void BeginInsert(DxfInsert insert) { this.iwireframeGraphicsFactory2_0.BeginInsert(insert); }
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); }