예제 #1
0
        public void CreateDimension()
        {
            // 创建要标注的图形---------------------------------------------
            ModelSpace.AddLine(new Point3d(30, 20, 0), new Point3d(120, 20, 0));
            ModelSpace.AddLine(new Point3d(120, 20, 0), new Point3d(120, 40, 0));
            ModelSpace.AddLine(new Point3d(120, 40, 0), new Point3d(90, 80, 0));
            ModelSpace.AddLine(new Point3d(90, 80, 0), new Point3d(30, 80, 0));
            ModelSpace.AddArc(new Point3d(30, 50, 0), 30, ModelSpace.Rad2Ang(90), ModelSpace.Rad2Ang(270));
            ModelSpace.AddCircle(new Point3d(30, 50, 0), 15);
            ModelSpace.AddCircle(new Point3d(70, 50, 0), 10);

            // 得到当前标注样式---------------------------------------------
            Database db          = HostApplicationServices.WorkingDatabase;
            ObjectId curDimstyle = db.Dimstyle;

            // (水平)转角标注-----------------------------------------------
            ModelSpace.AddDimRotated(0, new Point3d(30, 20, 0), new Point3d(120, 20, 0), new Point3d(75, 10, 0));
            // (垂直)转角标注-----------------------------------------------
            ModelSpace.AddDimRotated(ModelSpace.Rad2Ang(90), new Point3d(120, 20, 0), new Point3d(120, 40, 0), new Point3d(130, 30, 0));

            // 对齐标注、尺寸替代-------------------------------------------
            ModelSpace.AddDimAligned(new Point3d(120, 40, 0), new Point3d(90, 80, 0), new Point3d(113, 66, 0), "50%%p0.2", curDimstyle);

            // 半径标注-----------------------------------------------------
            Point3d ptCen = new Point3d(30, 50, 0);
            Point3d p2    = ModelSpace.PolarPoint(ptCen, ModelSpace.Rad2Ang(30), 15);

            ModelSpace.AddDimRadial(ptCen, p2, 10);

            // 直径标注-----------------------------------------------------
            Point3d dcen     = new Point3d(70, 50, 0);
            Point3d ptChord1 = ModelSpace.PolarPoint(dcen, ModelSpace.Rad2Ang(45), 10);
            Point3d ptChord2 = ModelSpace.PolarPoint(dcen, ModelSpace.Rad2Ang(-135), 10);

            ModelSpace.AddDimDiametric(ptChord1, ptChord2, 0);

            // 角度标注-----------------------------------------------------
            Point3d angPtCen = new Point3d(120, 20, 0);
            Point3d p5       = ModelSpace.PolarPoint(angPtCen, ModelSpace.Rad2Ang(135), 10);

            ModelSpace.AddDimLineAngular(angPtCen, new Point3d(30, 20, 0), new Point3d(120, 40, 0), p5);

            // 弧长标注-----------------------------------------------------
            ModelSpace.AddDimArc(new Point3d(30, 50, 0), new Point3d(30, 20, 0), new Point3d(30, 80, 0), new Point3d(-10, 50, 0));

            // 坐标标注-----------------------------------------------------
            ModelSpace.AddDimOrdinate(new Point3d(70, 50, 0), new Point3d(70, 30, 0), new Point3d(90, 50, 0));

            // 引线标注-----------------------------------------------------
            Point3dCollection pts = new Point3dCollection();

            pts.Add(new Point3d(90, 70, 0));
            pts.Add(new Point3d(110, 80, 0));
            pts.Add(new Point3d(120, 80, 0));
            ModelSpace.AddLeader(pts, false);
            // 添加引线标注的文字.
            ModelSpace.AddMtext(new Point3d(120, 80, 0), "{\\L引线标注示例\\l}", curDimstyle, AttachmentPoint.BottomLeft, 2.5, 0);

            // 尺寸公差标注--------------------------------------------------
            ModelSpace.AddDimRotated(0, new Point3d(30, 80, 0), new Point3d(90, 80, 0), new Point3d(30, 90, 0), "60{\\H0.7x;\\S+0.026^-0.025;}", curDimstyle);

            // 形位公差标注--------------------------------------------------
            string dimText = "{\\fgdt;r}" + "%%v" + "{\\fgdt;n0.03}" + "%%v" + "B";

            ModelSpace.AddTolerance(dimText, new Point3d(80, 100, 0), new Vector3d(0, 0, 1), new Vector3d(1, 0, 0));
            // 为形位公差标注添加引线.
            Point3dCollection ptss = new Point3dCollection();

            ptss.Add(new Point3d(70, 80, 0));
            ptss.Add(new Point3d(70, 100, 0));
            ptss.Add(new Point3d(80, 100, 0));
            ModelSpace.AddLeader(ptss, false);
        }