using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
using Microsoft.Win32;
using Autodesk.AutoCAD.EditorInput;
using Autodesk.AutoCAD.Geometry;
using DotNetARX;
namespace ClassLibrary1
{
public class EntTools
{
[CommandMethod("Draw1")]
public void Draw1()
{
Database db = HostApplicationServices.WorkingDatabase;
using (Transaction trans = db.TransactionManager.StartTransaction())
{
//创建要标注的图形
Line line1 = new Line(new Point3d(30, 20, 0), new Point3d(120, 20, 0));
Line line2 = new Line(new Point3d(120, 20, 0), new Point3d(120, 40, 0));
Line line3 = new Line(new Point3d(120, 40, 0), new Point3d(90, 80, 0));
Line line4 = new Line(new Point3d(90, 80, 0), new Point3d(30, 80, 0));
Arc arc = new Arc(new Point3d(30, 50, 0), 30, Math.PI / 2, Math.PI * 3 / 2);
Circle c1 = new Circle(new Point3d(30, 50, 0), Vector3d.ZAxis, 15);
Circle c2 = new Circle(new Point3d(70, 50, 0), Vector3d.ZAxis, 10);
db.AddToModelSpace(line1, line2, line3, line4, arc, c1, c2);
//创建标注
//RotatedDimension 旋转尺寸标注
List<Dimension> dims = new List<Dimension>();
RotatedDimension dimRotated1 = new RotatedDimension();
dimRotated1.XLine1Point = line1.StartPoint;
dimRotated1.XLine2Point = line1.EndPoint;
dimRotated1.DimLinePoint = GeTools.MidPoint(line1.StartPoint, line1.EndPoint).PolarPoint(-Math.PI / 2, 10);//距本线10
dimRotated1.DimensionText = "<>mm";
dims.Add(dimRotated1);
RotatedDimension dimRotated2 = new RotatedDimension();
dimRotated2.Rotation = Math.PI / 2;//旋转为90度
dimRotated2.XLine1Point = line2.StartPoint;
dimRotated2.XLine2Point = line2.EndPoint;
dimRotated2.DimLinePoint = GeTools.MidPoint(line2.StartPoint, line2.EndPoint).PolarPoint(0, 10);
dims.Add(dimRotated2);
AlignedDimension dimAlign3 = new AlignedDimension();
dimAlign3.XLine2Point = line3.EndPoint;
dimAlign3.XLine1Point = line3.StartPoint;
dimAlign3.DimLinePoint = GeTools.MidPoint(line3.StartPoint, line3.EndPoint).PolarPoint(Math.PI / 2, 10);
dimAlign3.DimensionText = "<>" + TextSpecialSymbol.Tolerance + "0.2";
dims.Add(dimAlign3);
AlignedDimension dimAlign4 = new AlignedDimension();
dimAlign4.XLine1Point = line4.StartPoint;
dimAlign4.XLine2Point = line4.EndPoint;
dimAlign4.DimLinePoint = GeTools.MidPoint(line4.StartPoint, line4.EndPoint).PolarPoint(Math.PI / 2, 10);
dimAlign4.DimensionText = TextTools.StackText("<>", "+0.026", "-0.025", StackType.Tolerance, 0.7);
dims.Add(dimAlign4);
//创建半径标注
RadialDimension dimRadial = new RadialDimension();
dimRadial.Center = c1.Center;
dimRadial.ChordPoint = c1.Center.PolarPoint(GeTools.DegreeToRadian(30), c1.Radius);//用于附着引线的圆或圆弧上的点
dimRadial.LeaderLength = 10;//引线长度:到注解文字或折线出的长度
dims.Add(dimRadial);
//创建直径标注
DiametricDimension dimDiametric = new DiametricDimension();
dimDiametric.ChordPoint = c2.Center.PolarPoint(GeTools.DegreeToRadian(45), c2.Radius);
dimDiametric.FarChordPoint = c2.Center.PolarPoint(GeTools.DegreeToRadian(-135), c2.Radius);
dims.Add(dimDiametric);
//创建角度标注代码
Point3AngularDimension dimAngular = new Point3AngularDimension();
dimAngular.CenterPoint = line2.StartPoint;
dimAngular.XLine1Point = line1.StartPoint;
dimAngular.XLine2Point = line2.EndPoint;
dimAngular.ArcPoint = line2.StartPoint.PolarPoint(GeTools.DegreeToRadian(135), 10);//位置
dims.Add(dimAngular);
//弧长标注
ArcDimension dimArc = new ArcDimension(arc.Center, arc.StartPoint, arc.EndPoint, arc.Center.PolarPoint(Math.PI, arc.Radius + 10), "<>", db.Dimstyle);
dims.Add(dimArc);
//坐标标注
OrdinateDimension dimOrdinateX = new OrdinateDimension();
dimOrdinateX.UsingXAxis = true;//显示x轴
dimOrdinateX.DefiningPoint = c2.Center;//标注点
dimOrdinateX.LeaderEndPoint = c2.Center.PolarPoint(-Math.PI / 2, 20);
dims.Add(dimOrdinateX);
OrdinateDimension dimOrdinateY = new OrdinateDimension();
dimOrdinateY.UsingXAxis = false;//显示y轴
dimOrdinateY.DefiningPoint = c2.Center;//标注点
dimOrdinateY.LeaderEndPoint = c2.Center.PolarPoint(0, 20);
dims.Add(dimOrdinateY);
foreach (Dimension dim in dims)
{
dim.DimensionStyle = db.Dimstyle;
db.AddToModelSpace(dim);
}
trans.Commit();
}
}
}
}