1、需求
AutoCAD图形绘制需要根据不同的标准(国标、美标、英标、非标)设置不同的文字,本文就对AutoCAD文本样式设置进行讲解
2、思路
根据CAD自带的文本样式以及参考相关接口设置文本样式
3、环境
AutoCAD 2018/vs2015
4、步骤:
(1) 新建一个临时图形数据库
Database tempDB = new Database(false, true);
(2) 定义字体名称以及字体宽度因子以及大字号字体信息
(3) 把设置的字体信息添加到块表记录中
BlockTableRecord.AppendEntity()
Transaction.AddNewlyCreatedDBObject();
关键代码:
/// <summary>
/// 初始化文字样式
/// </summary>
/// <param name="StyleName">文字样式名称</param>
/// <param name="FontName">字体名称</param>
/// <param name="WidthFactor">宽度因子</param>
/// <param name="charset">字符集,中文3212默认134</param>
/// <param name="pf">字族,</param>
public static void InitTextStyle(string StyleName, string FontName,double WidthFactor,int charset=134,int pf=48)
{
Database acCurDb = HostApplicationServices.WorkingDatabase;
using (Transaction tr = acCurDb.TransactionManager.StartTransaction())
{
TextStyleTable st = tr.GetObject(acCurDb.TextStyleTableId, OpenMode.ForWrite) as TextStyleTable;
#region 字体设置
if (!st.Has(StyleName))//字体设置
{
TextStyleTableRecord str = new TextStyleTableRecord()
{
Name = StyleName,
Font = new Autodesk.AutoCAD.GraphicsInterface.FontDescriptor(FontName, false, false, charset, pf),
XScale = WidthFactor,
};
st.Add(str);
tr.AddNewlyCreatedDBObject(str, true);
}
else
{
TextStyleTableRecord str = tr.GetObject(st[StyleName], OpenMode.ForWrite) as TextStyleTableRecord;
str.Font = new Autodesk.AutoCAD.GraphicsInterface.FontDescriptor(FontName, false, false, charset, pf);
str.XScale = WidthFactor;
}
#endregion
tr.Commit();
}
}
————————————————
版权声明:本文为CSDN博主「wnzsj」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/wnzsj/article/details/121859228