在autocad.NET中使用Point3AngularDimension创建3点角度标注

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
//by 鸟哥 qq1833183060
//qq群 720924083
//2020-11-09
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.EditorInput;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.Windows;
using Autodesk.AutoCAD.Geometry;
namespace AcadDemo
{
public class DimensionDemo
{
//https://adndevblog.typepad.com/autocad/2012/04/creating-a-3-point-angular-dimension-using-point3angulardimension-in-net.html
[CommandMethod("netDimAngular")]
public void netDimAngular()
{
Document doc = Application.DocumentManager.MdiActiveDocument;
Database db = doc.Database;
Editor ed = doc.Editor;

PromptEntityOptions peo = new PromptEntityOptions("\nSelect an Arc: ");

peo.SetRejectMessage("\nMust be an Arc...");

peo.AddAllowedClass(typeof(Arc), true);

PromptEntityResult per = ed.GetEntity(peo);

if (per.Status != PromptStatus.OK)
return;

using (Transaction Tx =db.TransactionManager.StartTransaction())
{
Arc arc = Tx.GetObject(per.ObjectId, OpenMode.ForRead) as Arc;

BlockTable bt = Tx.GetObject(db.BlockTableId,OpenMode.ForRead) as BlockTable;

BlockTableRecord btr = Tx.GetObject(bt[BlockTableRecord.ModelSpace],OpenMode.ForWrite) as BlockTableRecord;

string dimStyle = "Standard";

DimStyleTable dimStyleTable = Tx.GetObject(db.DimStyleTableId,OpenMode.ForRead) as DimStyleTable;

if (dimStyleTable.Has(dimStyle))
{
Point3d point3 =arc.StartPoint.Add(arc.EndPoint.GetAsVector()).MultiplyBy(0.5);

ObjectId dimStyleId = dimStyleTable[dimStyle];

Point3AngularDimension dim = new Point3AngularDimension(arc.Center,arc.StartPoint,arc.EndPoint,point3, "",dimStyleId);

btr.AppendEntity(dim);

Tx.AddNewlyCreatedDBObject(dim, true);
Tx.Commit();

}
}
}
}
}