C#之AutoCAD文本字体样式设置

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

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C# 中使用 AutoCAD API 创建多行文本 MText,可以按照以下步骤: 1. 引用 AutoCAD 的 COM 组件,添加命名空间: ```csharp using Autodesk.AutoCAD.Interop; using Autodesk.AutoCAD.Interop.Common; ``` 2. 获取 AutoCAD 应用程序对象: ```csharp AcadApplication app = (AcadApplication)System.Runtime.InteropServices.Marshal.GetActiveObject("AutoCAD.Application"); ``` 3. 创建 MText 对象: ```csharp AcadMText mtext = app.ActiveDocument.ModelSpace.AddMText(new double[] { 0, 0, 0 }, "This is a sample MText"); ``` 其中,第一个参数为 MText 的插入点坐标,第二个参数为 MText 的内容。 4. 设置 MText 的属性: ```csharp mtext.Height = 2.5; mtext.Width = 5; mtext.AttachmentPoint = AcAttachmentPoint.acAttachmentPointTopCenter; ``` 可以设置 MText 的高度、宽度和对齐方式等属性。 5. 更新视图: ```csharp app.Update(); ``` 最后,调用 Update 方法更新视图即可。 完整的代码示例: ```csharp using Autodesk.AutoCAD.Interop; using Autodesk.AutoCAD.Interop.Common; namespace AutoCADTest { class Program { static void Main(string[] args) { // 获取 AutoCAD 应用程序对象 AcadApplication app = (AcadApplication)System.Runtime.InteropServices.Marshal.GetActiveObject("AutoCAD.Application"); // 创建 MText 对象 AcadMText mtext = app.ActiveDocument.ModelSpace.AddMText(new double[] { 0, 0, 0 }, "This is a sample MText"); // 设置 MText 的属性 mtext.Height = 2.5; mtext.Width = 5; mtext.AttachmentPoint = AcAttachmentPoint.acAttachmentPointTopCenter; // 更新视图 app.Update(); } } } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值