1

我正在使用 ObjectARX .Net API 在 AutoCAD 中工作。有没有办法使用线条/曲线/折线创建文本,或将现有文本对象分解成线条/等?最好我希望能够根据现有的 AutoCAD 文本样式生成线条。

编辑:我可以在这里找到 TxtExp 命令的来源。然而,它在 AutoCAD 自己的 Lisp 语言中,我无法确定它的正面或反面。

编辑:查看 TxtExp 的来源,它只是将文本导出为 WMF 文件,然后将其导入。不幸的是,没有为导入和导出 WMF 文件而公开的 .NET API,因此我不能使用该方法来执行此操作。

4

2 回答 2

2

您是否尝试过使用AcGiWorldGeometryand AcGiWorldDraw?我没有使用 ObjectArx,但我使用了 DwgDirect(现在称为 Teigha for DWG - 可从http://www.opendesign.com/获得),其中的一部分应该是 ObjectArx 的克隆。通过简要阅读 ObjectArx 文档可以看出,您似乎可以实现自己的AcGiWorldGeometry对象并将其传递给worldDraw文本的方法。

AcGiGeometry指定许多回调函数的数量。当几何图形将自身“绘制”到“世界绘制”对象中时,将调用各种回调函数。

以我使用 DwgDirect 的方式,您可以覆盖一些回调,具体取决于您希望如何接收结果。本质上,您将实现一个对象来捕获几何的“矢量化”或“爆炸”(在您的情况下为文本)。在 DwgDirect 中,在最简单的情况下,我只能实现“折线”功能。任何元素在“渲染”时最终都会分解为一条或多条折线。例如,在我的项目中,如果我不想得到一个“圆圈”,我对“圆圈”回调的实现将是简单地调用基本实现(或者我根本不会覆盖那个回调——我不记得了)。这将导致下一级“简化”发生,我的“多边形”回调将被调用。

还有可能有帮助的 AcGiTextEngine 类。请注意,它的方法被标记为“仅供内部使用”。话虽如此,有一种 tesellate 方法(重载)似乎可以提供抚摸/爆炸/镶嵌能力。从签名来看,你给它一个文本样式、一些文本(字符串)和一个“PolylineCallback”,我猜它会根据参数调用回调。

很抱歉我没有给你一个好的代码示例,但我使用 DwgDirect 的项目是很久以前的事了,现在我无法轻松访问该代码。我没有直接使用 ObjectArx,所以我也没有该代码的任何示例。

回顾了我的答案并仔细查看了文档(我在这里找到了:http: //docs.autodesk.com/ACDMAC/2011/ENU/ObjectARX%20Reference/index.html),看起来我一直在寻找在 C++ 文档中。我不知道 .NET 接口中是否存在等效功能。

[编辑]

根据我在此处找到的帮助文件 (http://www.codeproject.com/KB/dotnet/arxref.aspx),看起来 .NET 版本中有类似的类可能允许您尝试做什么我在上面描述过。从 WorldGeometry 和 WorldDraw 开始,您可能会得到您想要的结果。

祝你好运!

于 2011-01-07T21:32:20.847 回答
0

我只是在 Autodesk 讨论页面上进行了快速搜索,因为我什至不确定是否可以爆炸文本。我找到了这篇文章并在 AutoCad 2010 中进行了尝试。它将文本分解成一堆 2D 折线。

我在 .Net 讨论中进行了搜索,但没有找到任何内容。也许你可以ActiveDocument.SendCommand()用来执行它。

我知道这不能回答你的问题,但也许它会让你感动。玩得开心!

于 2011-01-07T15:21:58.640 回答