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 void writeDimension(DxfModel doc,DLocation firstDLocation,DLocation secondDLocation,double DxfTextHeight,double DxfTextWidth,double dimensionHeight,string dimensionDirection) { DxfDimension.Aligned dimension = new DxfDimension.Aligned(doc.DefaultDimensionStyle); dimension.ExtensionLine1StartPoint = new Point3D(firstDLocation.X, firstDLocation.Y, firstDLocation.Z); dimension.ExtensionLine2StartPoint = new Point3D(secondDLocation.X, secondDLocation.Y, secondDLocation.Z); if (dimensionDirection.Equals("top")) dimension.DimensionLineLocation = new Point3D((firstDLocation.X + secondDLocation.X) / 2, firstDLocation.Y + dimensionHeight, firstDLocation.Z); else if (dimensionDirection.Equals("bottom")) dimension.DimensionLineLocation = new Point3D((firstDLocation.X + secondDLocation.X) / 2, firstDLocation.Y - dimensionHeight, firstDLocation.Z); else if (dimensionDirection.Equals("left")) dimension.DimensionLineLocation = new Point3D(firstDLocation.X - dimensionHeight, (firstDLocation.Y + secondDLocation.Y) / 2, firstDLocation.Z); else if (dimensionDirection.Equals("right")) dimension.DimensionLineLocation = new Point3D(firstDLocation.X + dimensionHeight, (firstDLocation.Y + secondDLocation.Y) / 2, firstDLocation.Z); dimension.DimensionStyleOverrides.TextHeight = 1d; dimension.DimensionStyleOverrides.ArrowSize = 1d; dimension.Text = getDimensionText(dimension); doc.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); } } }
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 void Visit(DxfDimension.Aligned dimension) { this.method_1((DxfDimension)dimension); }
public virtual void Visit(DxfDimension.Aligned dimension) { }
public static void puzzle(List<string> dxfFileNameList,List<string> dxfTopViewList,List<TextValue> valueList,string frameName) { DxfModel targetModel=new DxfModel(); testModel = targetModel; targetModel.TextStyles.Add(textStyle); CloneContext cloneContext = new CloneContext(targetModel, ReferenceResolutionType.CloneMissing); for (int i = 0; i < dxfFileNameList.Count;i++ ) { DxfModel sourceModel = DxfReader.Read(dxfFileNameList[i]); //第一个图形作为初始 if (i == 0) { //拼到一个图纸中后,Entity应该参照那个的左下角坐标 location = getRelativeStartLocation(sourceModel); //源图纸中Entity的左下角坐标 relativeStartLocation = getRelativeStartLocation(sourceModel); //保存第一个算好的左下角坐标 firstDimensionLocation = location; foreach (DxfEntity entity in sourceModel.Entities) { DxfEntity clonedEntity = (DxfEntity)entity.Clone(cloneContext); clonedEntity = getCaculateLocationEntity(clonedEntity, location, relativeStartLocation); targetModel.Entities.Add(clonedEntity); } rightLocation = getNextStartLocation(positionList); //记录最后一点坐标 lastDimensionLocation = rightLocation; //清空坐标位置链表 positionList.RemoveAll(name => { return true;}); //花标注 DxfDimension.Aligned dxfDimension = new DxfDimension.Aligned(targetModel.DefaultDimensionStyle); dxfDimension.ExtensionLine1StartPoint = new Point3D(location.X, location.Y, location.Z); dxfDimension.ExtensionLine2StartPoint = new Point3D(rightLocation.X, rightLocation.Y, rightLocation.Z); dxfDimension.DimensionStyleOverrides.TextHeight = 56d; dxfDimension.DimensionStyleOverrides.ArrowSize = 56d; dxfDimension.Text = getDimensionText(dxfDimension); // dxfDimension.DimensionLineLocation = new Point3D((location.X+rightLocation.X)/2,location.Y-8,location.Z); targetModel.Entities.Add(dxfDimension); } else { location = rightLocation; relativeStartLocation = getRelativeStartLocation(sourceModel); foreach (DxfEntity entity in sourceModel.Entities) { DxfEntity clonedEntity = (DxfEntity)entity.Clone(cloneContext); clonedEntity = getCaculateLocationEntity(clonedEntity, location, relativeStartLocation); targetModel.Entities.Add(clonedEntity); } rightLocation = getNextStartLocation(positionList); lastDimensionLocation = rightLocation; //计算最后一个元素右上角坐标 if (i == dxfFileNameList.Count - 1) { rightTopDimensionLocation = getRightTopLocation(positionList); largestLocation = getLargestXLocation(positionList); } positionList.RemoveAll(name => { return true; }); //花标注 DxfDimension.Aligned dxfDimension = new DxfDimension.Aligned(targetModel.DefaultDimensionStyle); dxfDimension.ExtensionLine1StartPoint = new Point3D(location.X, location.Y, location.Z); dxfDimension.ExtensionLine2StartPoint = new Point3D(rightLocation.X, rightLocation.Y, rightLocation.Z); dxfDimension.DimensionStyleOverrides.TextHeight = 56d; dxfDimension.DimensionStyleOverrides.ArrowSize = 56d; dxfDimension.Text = getDimensionText(dxfDimension); targetModel.Entities.Add(dxfDimension); } } DxfDimension.Aligned wholeDxfDimension = new DxfDimension.Aligned(targetModel.DefaultDimensionStyle); wholeDxfDimension.ExtensionLine1StartPoint = new Point3D(firstDimensionLocation.X, firstDimensionLocation.Y, firstDimensionLocation.Z); wholeDxfDimension.ExtensionLine2StartPoint = new Point3D(lastDimensionLocation.X, lastDimensionLocation.Y, lastDimensionLocation.Z); wholeDxfDimension.DimensionStyleOverrides.TextHeight = 56d; wholeDxfDimension.DimensionStyleOverrides.ArrowSize = 56d; wholeDxfDimension.Text = getDimensionText(wholeDxfDimension); wholeDxfDimension.DimensionLineLocation = new Point3D(firstDimensionLocation.X+lastDimensionLocation.X,firstDimensionLocation.Y-1000,firstDimensionLocation.Z); targetModel.Entities.Add(wholeDxfDimension); DxfDimension.Aligned rightDimension = new DxfDimension.Aligned(targetModel.DefaultDimensionStyle); rightDimension.ExtensionLine1StartPoint = new Point3D(lastDimensionLocation.X, lastDimensionLocation.Y, lastDimensionLocation.Z); rightDimension.ExtensionLine2StartPoint = new Point3D(rightTopDimensionLocation.X, rightTopDimensionLocation.Y, rightTopDimensionLocation.Z); rightDimension.DimensionStyleOverrides.TextHeight = 56d; rightDimension.DimensionStyleOverrides.ArrowSize = 56d; rightDimension.Text = getDimensionText(rightDimension); rightDimension.DimensionLineLocation = new Point3D(largestLocation.X + 200, firstDimensionLocation.Y, firstDimensionLocation.Z); targetModel.Entities.Add(rightDimension); //绘制俯视图 for (int i = 0; i < dxfTopViewList.Count;i++ ) { DxfModel topViewSourceModel = new DxfModel(); topViewSourceModel = DxfReader.Read(dxfTopViewList[i]); if (i == 0) { topViewLocation = new DLocation(firstDimensionLocation.X, rightTopDimensionLocation.Y + RelativeDistance.yTopViewDistance, firstDimensionLocation.Z); topViewRelativeLocation = getTopViewRelativeStartLocation(topViewSourceModel); } else { topViewLocation = topViewRightLocation; DxfModel filterModel = getFilterBottomNotLineDxfModel(topViewSourceModel); topViewRelativeLocation = getTopViewRelativeStartLocation(filterModel); } foreach(DxfEntity entity in topViewSourceModel.Entities) { DxfEntity clonedEntity = (DxfEntity)entity.Clone(cloneContext); clonedEntity = getCaculateLocationEntity(clonedEntity, topViewLocation, topViewRelativeLocation); targetModel.Entities.Add(clonedEntity); } topViewRightLocation = getTopViewNextStartLocation(positionList); positionList.RemoveAll(name=>{return true;}); } // 复制frame框体 DxfModel sourceFrameModel = new DxfModel(); sourceFrameModel = DxfReader.Read(frameName); DLocation frameLeftDownLocation = getFrameLeftDownLocation(sourceFrameModel); frameLastLineX = getFrameLastVerticalLineX(sourceFrameModel); Point2D frameRightPoint2D = getFrameRightPoint(sourceFrameModel); //这里求的是宽度比较,因为Frame的最后位置还没确定,不能单纯的考个别点进行位置大小比较 if ((largestLocation.X-firstDimensionLocation.X+RelativeDistance.xDistance)>= (frameRightPoint2D.X-frameLeftDownLocation.X)) { RelativeDistance.increaseWidth = (largestLocation.X - firstDimensionLocation.X + RelativeDistance.xDistance) - (frameRightPoint2D.X - frameLeftDownLocation.X) + RelativeDistance.xDistance; } else { RelativeDistance.increaseWidth = 0; } foreach (DxfEntity entity in sourceFrameModel.Entities) { DxfEntity clonedEntity = (DxfEntity)entity.Clone(cloneContext); clonedEntity = getFrameEntity(clonedEntity, firstDimensionLocation, frameLeftDownLocation, RelativeDistance.increaseWidth); targetModel.Entities.Add(clonedEntity); } //传递表单数据值 foreach(TextValue textValue in textValueList){ foreach(TextValue transFormValue in valueList){ if (textValue.text.Equals(transFormValue.text)) { DxfText dxfText = new DxfText(); dxfText.Text = transFormValue.value; dxfText.Height = textValue.height; dxfText.Thickness = 0.5d; dxfText.AlignmentPoint1 = new Point3D(textValue.valuePosition.X, textValue.valuePosition.Y, textValue.valuePosition.Z); dxfText.AlignmentPoint2 = dxfText.AlignmentPoint1; targetModel.Entities.Add(dxfText); } } } cloneContext.ResolveReferences(); DxfWriter.Write("cloneTest.dxf", targetModel); }
private static DLocation topViewRightLocation; //下一个坐标 #endregion Fields #region Methods /// <summary> /// 获取计算好的entity /// </summary> /// <param name="entity"></param> /// <param name="location"></param> /// <param name="relativeStartLocation"></param> /// <returns></returns> public static DxfEntity getCaculateLocationEntity(DxfEntity entity,DLocation location,DLocation relativeStartLocation) { switch (entity.EntityType){ case "LINE": { DxfLine dxfLine = (DxfLine)entity; double lineLenght = dxfLine.End.X - dxfLine.Start.X; double lineHeight=dxfLine.End.Y-dxfLine.Start.Y; dxfLine.Start = new Point3D(dxfLine.Start.X - relativeStartLocation.X + location.X, dxfLine.Start.Y - relativeStartLocation.Y + location.Y, location.Z); dxfLine.End = new Point3D(dxfLine.Start.X+lineLenght,dxfLine.Start.Y+lineHeight,location.Z); //只需要将Line的坐标加入,每个图形底部都存在Line if (Math.Round(dxfLine.Start.Y*10)/10 == Math.Round(dxfLine.End.Y*10)/10||Math.Round(dxfLine.Start.X*10)/10==Math.Round(dxfLine.End.X*10)/10) { positionList.Add(dxfLine.Start); positionList.Add(dxfLine.End); } return dxfLine; }; case "ARC": { DxfArc dxfArc = (DxfArc)entity; int flag = 0; if (dxfArc.Center.X < 0) { flag = 1; } dxfArc.Center = new Point3D(Math.Abs(dxfArc.Center.X)-relativeStartLocation.X+location.X,dxfArc.Center.Y-relativeStartLocation.Y+location.Y,dxfArc.Center.Z); if (flag == 1) { dxfArc.Center = new Point3D(0 - dxfArc.Center.X, dxfArc.Center.Y, dxfArc.Center.Z); } return dxfArc; }; case "CIRCLE": { DxfCircle dxfCircle =(DxfCircle)entity; dxfCircle.Center = new Point3D(dxfCircle.Center.X-relativeStartLocation.X+location.X,dxfCircle.Center.Y-relativeStartLocation.Y+location.Y,dxfCircle.Center.Z); return dxfCircle; } case "POINT": { DxfPoint dxfPoint = (DxfPoint)entity; dxfPoint.Position = new Point3D(dxfPoint.Position.X - relativeStartLocation.X + location.X, dxfPoint.Position.Y - relativeStartLocation.Y + location.Y, dxfPoint.Position.Z); return dxfPoint; } case "TEXT": { DxfText dxfText =(DxfText)entity; dxfText.AlignmentPoint1 = new Point3D(dxfText.AlignmentPoint1.X-relativeStartLocation.X+location.X,dxfText.AlignmentPoint1.Y-relativeStartLocation.Y+location.Y,dxfText.AlignmentPoint1.Z); dxfText.AlignmentPoint2 = dxfText.AlignmentPoint1; return dxfText; } case "ELLIPSE": { DxfEllipse dxfEllipse = (DxfEllipse)entity; dxfEllipse.Center = new Point3D(dxfEllipse.Center.X - relativeStartLocation.X + location.X, dxfEllipse.Center.Y - relativeStartLocation.Y + location.Y, dxfEllipse.Center.Z); return dxfEllipse; } case "LWPOLYLINE": { DxfLwPolyline dxfLwPolyLine = (DxfLwPolyline)entity; int len = dxfLwPolyLine.Vertices.Count; for (int i = 0; i < len; i++) { dxfLwPolyLine.Vertices[i].Position = new Point2D(dxfLwPolyLine.Vertices[i].Position.X - relativeStartLocation.X + location.X, dxfLwPolyLine.Vertices[i].Position.Y - relativeStartLocation.Y + location.Y); } return dxfLwPolyLine; } case "DIMENSION": { DxfDimension.Aligned dxfDimension =(DxfDimension.Aligned)entity; DxfDimension.Aligned tempDemsion = new DxfDimension.Aligned(testModel.DefaultDimensionStyle); dxfDimension.ExtensionLine1StartPoint = new Point3D(dxfDimension.ExtensionLine1StartPoint.X-relativeStartLocation.X+location.X,dxfDimension.ExtensionLine1StartPoint.Y-relativeStartLocation.Y+location.Y,location.Z); dxfDimension.ExtensionLine2StartPoint = new Point3D(dxfDimension.ExtensionLine2StartPoint.X-relativeStartLocation.X+location.X,dxfDimension.ExtensionLine2StartPoint.Y-relativeStartLocation.Y+location.Y,location.Z); // dxfDimension.DimensionLineLocation = new Point3D(dxfDimension.DimensionLineLocation.X-relativeStartLocation.X+location.X,dxfDimension.DimensionLineLocation.Y-relativeStartLocation.Y+location.Y,dxfDimension.DimensionLineLocation.Z); tempDemsion.ExtensionLine1StartPoint = dxfDimension.ExtensionLine1StartPoint; tempDemsion.ExtensionLine2StartPoint = dxfDimension.ExtensionLine2StartPoint; tempDemsion.Color = dxfDimension.Color; tempDemsion.DimensionStyleOverrides.TextHeight = 56d; tempDemsion.DimensionStyleOverrides.ArrowSize = 20d; if (Math.Round(dxfDimension.ExtensionLine1StartPoint.X * 100) / 100 == Math.Round(dxfDimension.ExtensionLine2StartPoint.X * 100) / 100) { tempDemsion.Text = "" + Convert.ToInt32(Math.Abs(dxfDimension.ExtensionLine1StartPoint.Y - dxfDimension.ExtensionLine2StartPoint.Y) + 0.5); } else { tempDemsion.Text = "" + Convert.ToInt32(Math.Abs(dxfDimension.ExtensionLine1StartPoint.X - dxfDimension.ExtensionLine2StartPoint.X) + 0.5); } tempDemsion.DimensionLineLocation = new Point3D(dxfDimension.DimensionLineLocation.X - relativeStartLocation.X + location.X, dxfDimension.DimensionLineLocation.Y - relativeStartLocation.Y + location.Y, dxfDimension.DimensionLineLocation.Z); return tempDemsion; } case "INSERT": { DxfInsert dxfInsert = (DxfInsert)entity; //可行,但是存在很多点点 dxfInsert.InsertionPoint = new Point3D(dxfInsert.InsertionPoint.X - relativeStartLocation.X + location.X, dxfInsert.InsertionPoint.Y - relativeStartLocation.Y + location.Y, dxfInsert.InsertionPoint.Z); return dxfInsert; } case "HATCH": { DxfHatch dxfHatch = (DxfHatch)entity; int len = dxfHatch.BoundaryPaths.Count; for (int i = 0; i < len; i++) { int len1 = dxfHatch.BoundaryPaths[i].Edges.Count; for (int j = 0; j < len1;j++ ) { DxfHatch.BoundaryPath.LineEdge lineEdge = (DxfHatch.BoundaryPath.LineEdge)dxfHatch.BoundaryPaths[i].Edges[j]; lineEdge.Start = new Point2D(lineEdge.Start.X-relativeStartLocation.X+location.X,lineEdge.Start.Y-relativeStartLocation.Y+location.Y); lineEdge.End = new Point2D(lineEdge.End.X-relativeStartLocation.X+location.X,lineEdge.End.Y-relativeStartLocation.Y+location.Y); } } return dxfHatch; } default:return entity; } }
public void Visit(DxfDimension.Aligned dimension) { this.bool_0 = true; }
/// <summary> /// Visits the specified entity. /// See the <see cref="IEntityVisitor"/> for more details. /// </summary> public override void Visit(DxfDimension.Aligned dimension) { HandleDimension(dimension); }
public Aligned(DxfDimension.Aligned dimension, DxfScale scale) : base((DxfDimension)dimension, scale) { this.point3D_0 = dimension.DimensionLineLocation; }
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 Visit(DxfDimension.Aligned dimension) { this.VisitDimension((DxfDimension)dimension); }