2012-02-16 83 views
2

我使用dot net 3.50添加了autocad,並且我引用了acdbmgd.dll,autocad 2012中的acmgd.dll 我該怎麼做才能讓它在autocad 2010上運行和autocad 2011 如果我應該參考acdbmgd.dll,從autocad 2010 acmgd.dll我在哪裏可以得到這個DLL,而我只有autocad 2012如何使Autocad插件運行在許多autocad版本上

回答

5

我已經在AutoCAD 2010中使用2008庫的一些成功,所以使用庫從AutoCAD 2010開始可能是你最好的選擇,雖然不能保證工作。這將取決於你在做什麼。

您可以從Autodesk Developer Center(位於頁面底部)作爲ObjectARX 2010軟件包的一部分下載這些庫。如果需要,您也可以從那裏獲得ObjectARX 2011。

4

我用AutoLISP一直在使用AutoCAD附加組件的壽命。我有1995年寫的工具,它們現在仍然很強大,沒有任何修改。

+0

我完全同意你 – 2012-03-24 16:23:18

+0

(我可以看到(如何(這((測試時間(但))括號內驅動器)我)堅果)。);)語法錯誤 – 2013-02-16 11:48:22

+0

@CADbloke我無法控制我的笑在這裏。第一件讓我轉而離開LISP的是它的語法。順便說一下,您是否嘗試過在以前版本中運行AutoCAD 2012 .net應用程序而無需重新編譯。使用正常的API,我們可以使用2012年的庫。 – Jatin 2013-04-30 02:13:10

1

.Net API與ActiveX相比更加兼容,但仍然存在一些差異。

您可以隨時使用Reflection來調用函數(按名稱調用它們),但是會有一大堆檢查工作要完成,並且您的應用程序需要很多工作。所有版本的反應方式都是一樣的。

你最好打賭(我至少會做什麼)將是爲每個你想要的功能性做一個包裝類。例如,我將創建一個「MyCircle」類來操作圓,然後在這個類的內部創建一個通用函數(例如:「ChangeThickness(int newThickness)」),並在那裏執行反射代碼,以便您可以根據安裝的AutoCAD版本控制調用的方式(例如,不要在特定版本的AutoCAD中調用特定功能,因爲它包含錯誤)。 這將創建一個可擴展的圖層,您可以在所有版本的AutoCAD中重複使用該圖層,並且您將能夠支持API中的任何更改。

0

我爲2012年和2013年做了這件事。他們之間有一些區別。

我一般用2012 Acad.NET嚮導和2013 Acad .NET嚮導啓動兩個項目。

更新兩者同時進行它只是複製粘貼一些情況下

大多數情況下,這將是不同的,其中在2013年API在2012年Civil3d已經進化例如心不是任何合作進入點的API,其中如在2013年,他們所以在那種情況下,我需要改變一點點的代碼在2013年的工作。

+0

太難以手動完成而不會炸掉它。我寫了https://github.com/CADbloke/CodeLinker來保持同步。無論如何,你最好擁有一組代碼文件並使用編譯器指令來控制差異。 – 2016-10-20 11:38:56