2011-01-06 130 views
1

使用文本样式我使用的ObjectARX .NET API在AutoCAD中工作。有没有办法使用直线/曲线/多段线创建文本,或将现有的文本对象分解为直线/多边形?优先考虑我希望能够基于现有的AutoCAD文本样式生成线条。创建线条/几何在AutoCAD

编辑:我能找到TxtExp命令的来源here。然而,它在AutoCAD中拥有Lisp语言,我无法做出正面或反面的评论。

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

回答

0

我刚刚在Autodesk Discussion页面上做了一个快速搜索,因为我甚至都不确定是否可以爆炸文本。我发现了this后,并在AutoCad 2010中试用了它。它将文本分解为二维多段线。

我执行了搜索here广告在.Net讨论中没有发现任何东西。也许你可以用ActiveDocument.SendCommand()来执行它。

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

+0

是的,我不能使用TxtExp命令,主要是因为我正在离屏。尽管TxtExp是Express Tools插件的一部分,但它给了我希望它可以完成的工作。我只需要源代码! – Kratz 2011-01-07 18:47:32

2

您是否尝试过使用AcGiWorldGeometryAcGiWorldDraw?我没有使用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开始,你可能会得到你想要的结果。

祝你好运!

+0

这听起来像它会工作。看起来.NET界面看起来不够暴露足够的类和功能使这项工作。我可能不得不试着用C++来做它,并从.Net中调用它。 – Kratz 2011-01-27 14:56:31