2017-10-13 159 views
1

任何人都可以描述你可以在Autocad中用C#創建什麼? 我想改善設計辦公室的工作,但我不知道我的選擇是什麼。.NET在AutoCad中的功能

  • 我可以創建新對象嗎?
  • 疊加形成aomomatically繪製基於給定的數據
  • 其他

在我發現只有兩個博客從早幾年的職位淨。沒有新東西。

任何人都可以推薦任何有趣的文章,指南嗎?

任何幫助將有助於開始。我知道有文件,但我需要逐步解釋一切如何運作。

+0

檢查出[標記維基](https://stackoverflow.com/tags/autocad/info) –

回答

-2

.Net可以創建一個新的對象嗎? 答案是否定的。您需要使用ObjectArx。但是,使用.Net您可以修改對象的外觀。例如,你可以修改一行看起來像一個箭頭。不僅看起來如何,而且它的表現如何。因此.Net中足夠的靈活性足以彌補創建新對象的需求。基本上.Net你有Windows和autocad的力量。

.Net樣本的一個很好的資源是通過接口by Kean Walmsley。試着通過這個博客,你會在AutoCAD中學到更多關於.Net的功能,而不是我所能描述的。

+0

「使用.Net可以創建一個新的對象嗎?答案是否定的。「 - 錯了。 [創建線對象(.NET)](https://knowledge.autodesk.com/search-result/caas/CloudHelp/cloudhelp/2015/ENU/AutoCAD-NET/files/GUID-47E8A12E-2ED4-4E78- ADA3-AAC9B4223C3C-htm.html) –

0

隨着.Net你可以創建一個新的對象? 答案是否定的。您需要使用ObjectArx。但是,使用.Net您可以修改對象的外觀。例如,你可以修改一行看起來像一個箭頭。不僅看起來如何,而且它的表現如何。因此.Net中足夠的靈活性足以彌補創建新對象的需求。基本上.Net你有Windows和autocad的力量。

的.Net樣本的一個很好的資源是通過] 1

0

你絕對可以創建與AutoCAD的.NET API新的對象,下面是一個例子I wrote a while ago,創建一個MLeader。

.Net API是C++ ObjectARX API的託管包裝器,因此它涵蓋了C++ API的大部分功能。它不能做的一件事是從本地派生自定義類,例如AcDbLine不能通過.Net擴展。爲了達到這個目的,你需要使用C++ API,並且可以在C++/CLI中編寫一個自定義的.Net包裝來將它暴露給.Net,那麼你將能夠從.Net類似於內置的實例化你的自定義類。

但是,使用​​可以在.Net中直接修改內置實體的行爲。

如果你的插件只能在Windows上工作,那麼.Net是比C++更方便的選擇,並且更靈活地實現UI。

[CommandMethod( 「netTextMLeader」)] 公共靜態無效netTextMLeader(){

Document doc = Application.DocumentManager.MdiActiveDocument; 

    Database db = doc.Database; 

    Editor ed = doc.Editor; 

    using (Transaction Tx = db.TransactionManager.StartTransaction()) { 

    BlockTable table = Tx.GetObject(
    db.BlockTableId, 
    OpenMode.ForRead) as BlockTable; 


    BlockTableRecord model = Tx.GetObject(
     table[BlockTableRecord.ModelSpace], 
     OpenMode.ForWrite) as BlockTableRecord; 


    MLeader leader = new MLeader(); 

    leader.SetDatabaseDefaults(); 

    leader.ContentType = ContentType.MTextContent; 


    MText mText = new MText(); 

    mText.SetDatabaseDefaults(); 

    mText.Width = 100; 

    mText.Height = 50; 

    mText.SetContentsRtf("MLeader"); 

    mText.Location = new Point3d(4, 2, 0); 

    leader.MText = mText; 

    int idx = leader.AddLeaderLine(new Point3d(1, 1, 0)); 

    leader.AddFirstVertex(idx, new Point3d(0, 0, 0)); 

    model.AppendEntity(leader); 

    Tx.AddNewlyCreatedDBObject(leader, true); 

    Tx.Commit(); 
    } 
}