AutoCAD添加标注代码

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();
            }
        }
    }
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值