創建文字的方法有單行文字和多行文字之分,方法都一樣都是先用不帶參數的默認構造函數(先創建一個單行文字或多行文字對象的實例,不要為構造函數傳遞任何參數),然后在對其插入點、文字內容、文字寬度、文字高度等進行設置,多行文字要比單行文字復雜點,不過仍然是我學習中最簡單的內容。
單行文字創建步驟:
1、 獲取當前數據庫
Database db=HostApplicationServices.WorkingDatabase;
2、 創建一個單行文字對象的實例,不為構造函數傳遞任何參數,
DBText firsttext=new DBText();
3、 設置單行文字屬性,
firsttext.Position=new point3d();//設置插入點 firsttext.Height=5;//設置文字高度 firsttext.TextString=”This is firsttext!”;// 設置文字內容
…屬性下面列出
4、 只讀方式打開塊表
BlockTable acBlkTbl;
acBlkTbl = acTrans.GetObject(acCurDb.BlockTableId, OpenMode.ForRead) as BlockTable;
5、 寫的方式打開塊表記錄
BlockTableRecord acBlkTblRec; acBlkTblRec = acTrans.GetObject(acBlkTbl[BlockTableRecord.ModelSpace], OpenMode.ForWrite) as BlockTableRecord;
6、 將文字對象添加到塊表記錄中
acBlkTblRec.AppendEntity(acText);
7、 將文本對象添加到事物處理中
acTrans.AddNewlyCreatedDBObject(acText, true);
單行文字的屬性:
HorizontalMode
指定文字的水平對象方式。
VerticalMode
指定文字的垂直對象方式。
Position
指定文字的插入點
Oblique
指定單個文字對象的傾斜角度。
Rotation
指定以弧度表示的文字的旋轉角度。
WidthFactor
指定文字的縮放因子。
AlignmentPoint
指定文字的對齊點。
IsMirroredInX
指定文字是否反向顯示。
IsMirroredInY
指定文字是否倒置顯示。
TextString
指定實際顯示的文字字符串。
注意:要修改單個單行文字 對象的關聯文字樣式,請將 TextStyleId 屬性設置為新的文字樣式。只要修改了文字樣式,就必須重新生成圖形或更新對象以查看圖形中的變化;文字對象也可以被移動、旋轉、刪除、復制和鏡像。
多行文字多用來實現堆疊效果,例如公差等,其創建的方式基本和單行文字一至,只有構造函數不同,
MText secondtext=New MText();//創建多行文字
單行文字創建完整代碼:
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.Geometry;
using Autodesk.AutoCAD.Runtime;
namespace Texts
{
public class Texts
{
[CommandMethod("AddText")]
public void AddText()
{
Database db=HostApplicationServices.WorkingDatabase;
using (Transaction trans=db.TransactionManager.StartTransaction())
{
// 以只讀方式打開塊表
BlockTable acBlkTbl;
acBlkTbl = acTrans.GetObject(acCurDb.BlockTableId, OpenMode.ForRead) as BlockTable;
// 以寫方式打開模型空間塊表記錄 BlockTableRecord acBlkTblRec;
acBlkTblRec = acTrans.GetObject(acBlkTbl[BlockTableRecord.ModelSpace],
OpenMode.ForWrite) as BlockTableRecord;
DBText firsttext=new DBText(); // 創建第一個單行文字
firsttext.Position = new Point3d();//文字位置為原點
firsttext.Height = 5;//文字高度
//設置文字內容
firsttext.TextString = “This is firsttext!”;
//設置文字的水平對齊方式為居中
firsttext.HorizontalMode = TextHorizontalMode.TextCenter;
//設置文字的垂直對齊方式為居中
firsttext.VerticalMode = TextVerticalMode.TextVerticalMid;
//設置文字的對齊點
firsttext.AlignmentPoint = firsttext.Position;
acBlkTblRec.AppendEntity(firsttext);
acTrans.AddNewlyCreatedDBObject(firsttext, true);
trans.Commit();//提交事務處理
}
}
}
}
