创建文字的方法有单行文字和多行文字之分,方法都一样都是先用不带参数的默认构造函数(先创建一个单行文字或多行文字对象的实例,不要为构造函数传递任何参数),然后在对其插入点、文字内容、文字宽度、文字高度等进行设置,多行文字要比单行文字复杂点,不过仍然是我学习中最简单的内容。
单行文字创建步骤:
1、 获取当前数据库
1 | Database db=HostApplicationServices.WorkingDatabase; |
2、 创建一个单行文字对象的实例,不为构造函数传递任何参数,
1 | DBText firsttext= new DBText(); |
3、 设置单行文字属性,
1 2 3 4 5 | firsttext.Position= new point3d(); //设置插入点 firsttext.Height=5; //设置文字高度 firsttext.TextString=”This is firsttext!”; // 设置文字内容 |
…属性下面列出
4、 只读方式打开块表
1 2 | 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、 将文字对象添加到块表记录中
1 | acBlkTblRec.AppendEntity(acText); |
7、 将文本对象添加到事物处理中
1 | acTrans.AddNewlyCreatedDBObject(acText, true ); |
单行文字的属性:
HorizontalMode
指定文字的水平对象方式。
VerticalMode
指定文字的垂直对象方式。
Position
指定文字的插入点
Oblique
指定单个文字对象的倾斜角度。
Rotation
指定以弧度表示的文字的旋转角度。
WidthFactor
指定文字的缩放因子。
AlignmentPoint
指定文字的对齐点。
IsMirroredInX
指定文字是否反向显示。
IsMirroredInY
指定文字是否倒置显示。
TextString
指定实际显示的文字字符串。
注意:要修改单个单行文字 对象的关联文字样式,请将 TextStyleId 属性设置为新的文字样式。只要修改了文字样式,就必须重新生成图形或更新对象以查看图形中的变化;文字对象也可以被移动、旋转、删除、复制和镜像。
多行文字多用来实现堆叠效果,例如公差等,其创建的方式基本和单行文字一至,只有构造函数不同,
1 | MText secondtext=New MText(); //创建多行文字 |
单行文字创建完整代码:
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 | 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(); //提交事务处理 } } } } |