阅读:2015回复:0
创建合理位置的线标注有时候在AutoCad成图的过程中,需要为线创建合理位置的标注,这个合理位置不同的人可能有不同的理解,或者是不同的项目有不同的需要,就看个人所需了。我这里的合理位置其实就是标注顺着线的方向,标注底部与线有适当的距离,标注的总体位置居于线段的中央。如图: ///
/// 计算旋转角 /// /// 起点X座标 /// 起点Y座标 /// 终点X座标 /// 终点Y座标 /// private double CountRotation(double x1,double y1,double x2,double y2) { double rotation = 0; double k = 0; if (x2 == x1) { k = 1; rotation = Math.PI / 2; } else { k = (y2 - y1) / (x2 - x1); if (k>=0) { rotation = Math.Atan(k); } else { rotation = Math.Atan(k)+Math.PI; } } return rotation; } /// /// 生成线标注 /// /// 中央点X /// 中央点Y /// 中央点Z /// 标注文字 /// private ObjectId CreateLineText(double x,double y,double z,double rotation, string text) { ObjectId textId; Database db = HostApplicationServices.WorkingDatabase; using (Transaction trans = db.TransactionManager.StartTransaction()) { BlockTable bt = (BlockTable)trans.GetObject(db.BlockTableId, OpenMode.ForRead, false); BlockTableRecord btr = (BlockTableRecord)trans.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite, false); Point3d point = new Point3d(x - 0.5 * Math.Sin(rotation), y + 0.5 * Math.Cos(rotation), z); DBText objDBText = new DBText(); //HorizontalMode与VerticalMode非默认值时设置AlignmentPoint objDBText.HorizontalMode = TextHorizontalMode.TextCenter; objDBText.AlignmentPoint = point; objDBText.Rotation = rotation; objDBText.TextString = text; objDBText.Height = 1; textId = btr.AppendEntity(objDBText); trans.AddNewlyCreatedDBObject(objDBText, true); trans.Commit(); } return textId; } |
|
|