如何解析AutoCAD MText实体并将其转换为原始文本?

我想解析AutoCAD的MText实体并提取原始文本。 我看到文本格式化的模式。 如果这已经解决了,那么我就不需要重新发明轮子了。 我在线搜索过,但没有找到足够的信息。

我正在搜索有关此主题的任何链接或参考。

编辑:

为了进一步说明,我们使用ODA(开放式设计联盟)库来访问DWG文件。 我不熟悉这个库。 另一位开发人员正在使用该库并从文件中提取信息,包括MText实体。 然后我提供了一个包含MText文本的文件,这正是我所看到的。 我正在查看MText格式的文本,我可以访问并使用C#。

问题:

  1. 我问其他开发人员ODA库是否提供了一种提取未格式化原始文本的方法。 他的回答是,它可能会导致实体被写回DWG文件。 我对原始文本感兴趣而不影响原始DWG文件。 ODA是否提供了一种在不改变文件的情况下提取原始文本的方法?
  2. 我对MText的格式化规则的任何文档感兴趣,因此我可以考虑在必要时自己编写解析器。
  3. 有没有什么可以将MText转换为RTF? 我意识到RTF不会完全满足所有格式规则,但这可以提供一种在WinForms应用程序中显示格式化文本的令人满意的方法。 鉴于RTF,我也可以获得原始文本。

这个论坛主题包含一个VB程序,用于从MText中删除控制字符。 代码表明应该删除每个控制字符应该做什么,因此在C#中编写类似的内容应该很简单。

此外, AutoCAD文档中提供了格式代码的文档 。

如果您使用的是C#和.NET接口,则MText对象的Text属性提供原始文本:

MText mt; ... string rawText = mt.Text; 

如果你也想要格式化,解决方案是不同的。

如果要在不使用AutoCAD的情况下解析AutoCAD文件,则需要指定要解析的文件类型。 但是,这个问题基本上是以下问题的一部分:

  • 是否有用于解析AutoCAD文件的库?

  • C#中的开源cad绘图(dwg)库

  • .Net CAD组件,可以读/写dxf / dwg文件

  • 阅读.DXF文件

对于DWG,基本选项是开放设计联盟和AutoCAD RealDWG 。

如果这没有帮助,请提供更多详细信息,确切了解您的目的。

如果您使用的是C#,请尝试使用netDXF库。

我以为伪代码应该是这样的:

 DxfDocument dxf = new DxfDocument(); dxf = DxfDocument.Load(openFileDialog1.FileName);//load your file //This extracts the raw text of your first text obj dxf.MTexts[0].PlainText;