实现思路:
实例化相应注释类(直线、角度、点延申、半/直径),并加入DxfDocument对象中。
1、垂直、线性注释
AlignedDimension dim = new AlignedDimension(ref1, ref2, offset, style);//实例化垂直注释
完整范例:
DimensionStyle style = DimensionStyle.Iso25;//标注格式
Vector2 ref1 = Vector2.Zero;//起始位置坐标
Vector2 ref2 = new Vector2(50, 10);//终点位置坐标
double offset = 10;//离原始位置距离
AlignedDimension dim = new AlignedDimension(ref1, ref2, offset, style);//实例化垂直注释
DxfDocument doc = new DxfDocument();
doc.BuildDimensionBlocks = true;
doc.AddEntity(dim);
doc.Save("test.dxf");
double offset = 6;
//实例化线性注释
LinearDimension dimX1 = new LinearDimension(line1, offset, 0);
dimX1.SetDimensionLinePosition(new Vector2(6, 6));
//自定义标注
dimX1.UserText = "My Value: <>\\XSecondLine";
2、角度标注
//实例化两线之间角度注释
Angular2LineDimension dim = new Angular2LineDimension(line1, line2, 10, style);
//实例化三点确定的角度注释
Angular3PointDimension dim2 = new Angular3PointDimension(center, end1, end2, 10, style);
完整范例:
DimensionStyle style = DimensionStyle.Iso25;
style.TextInsideAlign = false;
Layer layer = new Layer("Layer1") { Color = AciColor.Blue };
Vector2 start1 = new Vector2(-20, 20);
Vector2 end1 = new Vector2(20, -20);
Vector2 start2 = new Vector2(-10, -30);
Vector2 end2 = new Vector2(10, 30);
Vector2 center = MathHelper.FindIntersection(start1, end1 - start1, start2, end2 - start2);
Line line1 = new Line(start1, end1) { Layer = layer };
Line line2 = new Line(start2, end2) { Layer = layer };
//实例化两线之间角度注释
Angular2LineDimension dim = new Angular2LineDimension(line1, line2, 10, style);
//实例化三点确定的角度注释
Angular3PointDimension dim2 = new Angular3PointDimension(center, end1, end2, 10, style);
/设置注释线位置
dim.SetDimensionLinePosition(new Vector2(0, 20));
//文字插入位置
dim.TextReferencePoint = new Vector2(10, 30);
dim.Update();
doc.BuildDimensionBlocks = true;
doc.AddEntity(dim);
3、点延申注释
//实例化点延申注释类
OrdinateDimension dim1 = new OrdinateDimension(Vector2.Zero, new Vector2(10, 10), new Vector2(30, 30), OrdinateDimensionAxis.Y, style);
完整范例:
DimensionStyle style = DimensionStyle.Iso25;
Vector2 origin = new Vector2(10, 5);
Vector2 refX = new Vector2(20, 10);
Vector2 refY = new Vector2(0, 20);
double length = 30;
double angle = 30;
//实例化点延申注释类
OrdinateDimension dim1 = new OrdinateDimension(Vector2.Zero, new Vector2(10, 10), new Vector2(30, 30), OrdinateDimensionAxis.Y, style);
dim1.StyleOverrides.Add(new DimensionStyleOverride(DimensionStyleOverrideType.FitTextMove, DimensionStyleFitTextMove.OverDimLineWithoutLeader));
dim1.TextReferencePoint = new Vector2(-20, -20);
dim1.Update();
DxfDocument doc = new DxfDocument();
doc.BuildDimensionBlocks = true;
doc.AddEntity(dim1);
4、半径、直径注释
//半径注释
RadialDimension dim = new RadialDimension(circle, 15, style);
//直径注释
RadialDimension dim2 = new RadialDimension(circle, 45);
完整范例:
DimensionStyle style = DimensionStyle.Iso25;
style.TextInsideAlign = false;
Layer layer = new Layer("Layer1") { Color = AciColor.Blue };
Vector2 center = new Vector2(1, 2);
double radius = 30;
Circle circle = new Circle(center, radius) { Layer = layer };
//半径注释
RadialDimension dim = new RadialDimension(circle, 15, style);
//直径注释
RadialDimension dim2 = new RadialDimension(circle, 45);
//更改注释样式
dim.StyleOverrides.Add(new DimensionStyleOverride(DimensionStyleOverrideType.FitTextMove, DimensionStyleFitTextMove.OverDimLineWithoutLeader));
dim.TextReferencePoint = new Vector2(-40, 30);
dim.Update();
使用教程:
6、注释和标注