.NET AutoCAD二次開發之路(四、文字篇)


 

  

創建文字的方法有單行文字和多行文字之分,方法都一樣都是先用不帶參數的默認構造函數(先創建一個單行文字或多行文字對象的實例,不要為構造函數傳遞任何參數),然后在對其插入點、文字內容、文字寬度、文字高度等進行設置,多行文字要比單行文字復雜點,不過仍然是我學習中最簡單的內容。

單行文字創建步驟:

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();//提交事務處理
          }
        }
    }
}
    

  

                                     

                                  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM