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

时间:2010-07-01 01:43:55

标签: c# .net parsing autocad

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

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

修改

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

问题:

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

4 个答案:

答案 0 :(得分:3)

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

此外,格式代码的文档可在AutoCAD documentation

中找到

答案 1 :(得分:2)

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

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

如果您还想要格式化,解决方案也不同。

答案 2 :(得分:1)

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

对于DWG,基本选项为Open Design AllianceAutoCAD RealDWG

如果这样做无效,请详细说明您的具体操作。

答案 3 :(得分:1)

如果您使用的是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;