C# CAD多行文字创建过程中RTF字体设置

    近日楼主在用CAD二次开发的过程中,遇到创建的多行文字(Mtext)字体(TextStyleId)设置为宋体但无效的问题,纠结了很长时间后明白问题出现在什么地方。由于楼主要创建的多行文字的内容是由Html转换来的,首先使用ConvertHtmlToRtf()方法将Html转换成Rtf,之后直接用Mtext的SetContentsRtf()方法获取Rtf内容,转换后的Rtf包含的字体不是楼主想用的字体,但是由于直接对Rtf处理实在繁琐,于是想到先把Rtf转换成文本,再赋值给Mtext,其中借助RichTextBox控件传递值,测试之后发现可行,在此与大家分享,过程如下:


//转换后的rtf,文本为你好,abc

string str= "{\\rtf1\\ansi\\ansicpg1252\\uc1\\htmautsp\\deff2{\\fonttbl{\\f0\\fcharset0 Times New Roman;}{\\f2\\fcharset134 \\'ce\\'a2\\'c8\\'ed\\'d1\\'c5\\'ba\\'da;}}{\\colortbl\\red0\\green0\\blue0;\\red255\\green255\\blue255;}\\loch\\hich\\dbch\\pard\\plain\\ltrpar\\itap0{\\lang1033\\fs18\\f2\\cf0 \\cf0\\ql{\\f2 {\\ltrch \\'c4\\'e3\\'ba\\'c3\\'a3\\'acabc,123;}\\li0\\ri0\\sa0\\sb0\\fi0\\ql\\par}\r\n}\r\n}";

Mtext mText = new Mtext();            //多

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(); } } } ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值