2011-01-06 27 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