时间:2011-01-06 17:01:00

标签: .net autocad objectarx

2 个答案:

答案 0 :(得分:2)

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

AcGiGeometry指定了多少回调函数。当几何体“绘制”自身进入“世界绘制”对象时,将调用各种回调函数。

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

还有可能有用的AcGiTextEngine类。请注意,其方法标记为“仅供内部使用”。话虽如此,有一种tesellate方法(过载)似乎提供了抚摸/探索/ tesellation功能。从签名中,看起来你给它一个文本样式,一些文本(字符串)和一个“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开始,您可以获得所需的结果。

祝你好运!

答案 1 :(得分:0)

我刚刚在Autodesk讨论页面上进行了快速搜索,因为我甚至不确定是否可能会爆炸文本。我发现了this发布并在AutoCad 2010中尝试过它。它将文本分解为一堆二维折线。

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

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