2013-07-08 47 views
0

我很新的Autocad編程,幾個月新的,但我設法用約10 Autocad命令編寫一個應用程序。大多數這些命令顯示一個窗口,其他所有內容都是從該窗口完成的。我嘗試使我的應用程序MVVM..ish。因爲Model Model ViewModels Views和命令之間幾乎有1對1的對應關係,所以我覺得把命令放在MVVM的3個部分中是合適的。首先,我決定將該命令放入ViewModel中,然後我意識到我的命令僅顯示一個窗口,ViewModel不應該處理窗口,因此我將該命令移至View的Codebehind。據我所知,只要與代碼隱藏嚴格相關,就可以在代碼隱藏中使用代碼。然後我讀關於Autodesk提供一些教程CommandClass屬性,我發現這一點:我應該將哪些命令放入Autocad VB.NET項目中?

CommandClassAttribute 這個自定義屬性類是用來標記類型應用程序的命令類。應用程序可以指定一個類型作爲它的命令類。 AutoCAD會在具有此屬性的類型上查找應用程序的命令方法。

這表明我應該有一個類包含我所有的命令。然後我讀了這個,確認了上面的內容:

對於一個實例命令方法,該方法的封閉類型爲每個打開的文檔分別實例化。

所以我的第一種方法把視圖或視圖模型中的命令是完全錯誤的,因爲我會有viewmodel實例沒有做別的比運行命令。然後我在ObjectARX的文檔中讀到:

如果應用程序使用CommandClass屬性,則必須爲包含AutoCAD命令處理程序方法的每種類型聲明該屬性的實例。

這與上面引用的教程直截了當地矛盾,並且還表明,這是一個批准的做法,有多個類來處理命令。

所有的Autocad .NET教程都是一個類和一個命令的項目,所以你不需要做很多選擇。

一些經驗豐富的Autocad .NET開發人員是否可以提供一個最佳實踐,或者至少一個好的或者不錯的實踐來管理一個相當大的項目中的Autocad命令?

+0

[嘗試看看下面的鏈接,它可以幫助你] [1] [1]:http://stackoverflow.com/questions/1338955/autocad-in-vb-net?rq = 1 –

+0

感謝您的回覆,但我沒有「入門」問題。幾個月前,當我真正開始使用Autocad .NET時,我已經訪問過大多數這些鏈接。不幸的是,其中大部分涵蓋了基本的問候世界問題。 – Andrei

回答

1

在我的工作中,我已將那個CommandClass屬性附加到單個類,正如我用於啓動的嚮導所提供的那樣。

在那個命令類裏面,我把命令都放在這個命令類中。 每一個與CommandMethod屬性。

所以他們不依附於任何物體或視圖(我真的認爲這是唯一可能使用VBA,沒有.NET)

但他們的代碼是不是在那裏寫的,我做出不同的類來管理命令,因此主要的命令類大多像一個命令索引一樣工作,每個命令在我爲自己的目的而創建的不同類中調用其各自的主體。

因此,在您的位置,我可能會製作一個MyCommandsCommandClass attibute具有所有命令。每個命令只需從下面的ViewCommands類調​​用命令主體。

創建一個ViewCommands類(以及許多其他需要使其容易使用的模型)。 該類doesn't具有CommandClass屬性,只是有常規方法。 它將具有從CommandClass方法中調用的命令的核心。

我從來沒有試過與多個CommandClass一起工作,我相信最好將所有命令集中在一個地方,以保持良好的跟蹤你的插件。

+0

感謝您的意見和分享您的經驗,但是我想讓問題在幾天之內得不到答覆,以便Autocad.NET專家可以看到它並提供更好的論證答案。 – Andrei

+0

正如我最近發現的,當它說它只能有一個commandclass屬性時,這個幫助就是錯誤的,所以Autodesk不打算只有一個commandclass。 – Andrei

+0

所以,這取決於你。可能的最佳實踐將來自一般開發實踐,因爲我沒有看到有關Autocad .NET的具體內容。可能你甚至不需要'CommandClass'屬性,我在插件嚮導中的幫助表明它不是強制性的,但提高了性能。 –

相關問題