【问题标题】:How does one parse and convert AutoCAD MText entity to raw text?如何解析 AutoCAD MText 实体并将其转换为原始文本?
【发布时间】:2011-03-10 10:28:54
【问题描述】:

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

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

编辑:

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

问题:

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

【问题讨论】:

  • 在 teigha 库中,您可以分解 mtext 对象。这会将它们变成标准文本对象。

标签: c# .net parsing autocad


【解决方案1】:

Forum thread 包含一个 VB 程序,用于从 MText 中去除控制字符。该代码指示了应该如何去除每个控制字符,因此在 C# 中编写类似的内容应该很简单。

此外,格式代码的文档可在AutoCAD documentation 中找到。

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

    • 这假设我有一个会说 AutoCAD 的 DLL。我实际上正在寻求开发它,以便它可以在没有预装 AutoCAD 的情况下运行。这个 DLL 的名称是什么?它是 AutoCAD 附带的还是第三方 DLL?
    • 这是使用 AutoCAD 中的 AutoCAD 库。你不是在开发插件吗?如果没有,您需要指定从哪种文件中解析 MText。 AutoCAD 支持多种格式。虽然 dwg 是最常见的,但 dxf 也是 AutoCAD 原生格式。
    【解决方案3】:

    如果您在没有 AutoCAD 的情况下解析 AutoCAD 文件,则需要指定要解析的文件类型。但是,这个问题基本上是以下问题的一个子集:

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

    如果这没有帮助,请提供更多详细信息,说明您正在尝试做什么。

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        猜你喜欢
        • 2015-10-18
        • 2011-11-22
        • 2014-02-24
        • 2011-03-29
        • 1970-01-01
        • 1970-01-01
        • 2014-06-04
        • 1970-01-01
        • 2019-05-24
        相关资源
        最近更新 更多