AutoCAD jest jednym z najbardziej wszechstronnych narzędzi projektowych, ale jego potencjał można znacznie zwiększyć dzięki zastosowaniu programowania. Po eksploracji VBA i AutoLISP, ostatnim elementem naszej serii jest .NET z wykorzystaniem języka C#. Jest to jedno z najbardziej elastycznych podejść, umożliwiające integrację z innymi systemami, budowę rozbudowanych aplikacji i precyzyjne zarządzanie danymi rysunkowymi.
Dlaczego warto używać .NET w AutoCAD?
.NET zapewnia dostęp do obszernej biblioteki klas, co czyni je wysoce elastycznym narzędziem do tworzenia aplikacji. Oto kilka powodów, dlaczego warto skorzystać z tej technologii:
- Zaawansowana kontrola: Używając .NET, można manipulować niemal każdym aspektem rysunku AutoCAD.
- Integracja z innymi systemami: Umożliwia łączenie AutoCAD z bazami danych, aplikacjami webowymi lub innymi narzędziami.
- Szybkość działania: Aplikacje napisane w C# są bardziej wydajne niż te stworzone w VBA.
- Nowoczesność: .NET to nowoczesny ekosystem wspierany przez Microsoft, co oznacza regularne aktualizacje i wsparcie techniczne.
Przygotowanie do pracy z .NET i AutoCAD
Aby rozpocząć pracę, potrzebujesz:
- Zainstalowanego AutoCAD’a (wersja z obsługą API .NET).
- Microsoft Visual Studio (wystarczy wersja Community).
- Autodesk AutoCAD .NET API SDK, dostępne w ramach subskrypcji Autodesk.
- Strona dokumentacji AutoCAD.NET API Docs.
Po pobraniu SDK możesz dodać odpowiednie referencje do swojego projektu C#. Kluczowe biblioteki to:
AcDbMgd.dll
AcMgd.dll
Dodaj je do projektu jako referencje, aby uzyskać dostęp do API AutoCAD.
Tworzenie pierwszej aplikacji w .NET C#
Przykładowa aplikacja stworzy nową warstwę i narysuje na niej linię.
Kod:
using Autodesk.AutoCAD.ApplicationServices; using Autodesk.AutoCAD.DatabaseServices; using Autodesk.AutoCAD.EditorInput; using Autodesk.AutoCAD.Runtime; using Autodesk.AutoCAD.Geometry; [assembly: CommandClass(typeof(MyAutoCADPlugin.Commands))] namespace MyAutoCADPlugin { public class Commands { [CommandMethod("AddLineToLayer")] public void AddLineToLayer() { Document doc = Application.DocumentManager.MdiActiveDocument; Database db = doc.Database; Editor ed = doc.Editor; using (Transaction trans = db.TransactionManager.StartTransaction()) { try { // Tworzenie nowej warstwy LayerTable lt = (LayerTable)trans.GetObject(db.LayerTableId, OpenMode.ForRead); if (!lt.Has("MyLayer")) { lt.UpgradeOpen(); LayerTableRecord ltr = new LayerTableRecord { Name = "MyLayer", Color = Autodesk.AutoCAD.Colors.Color.FromColorIndex(Autodesk.AutoCAD.Colors.ColorMethod.ByAci, 1) // Kolor czerwony }; lt.Add(ltr); trans.AddNewlyCreatedDBObject(ltr, true); } // Dodawanie linii BlockTable bt = (BlockTable)trans.GetObject(db.BlockTableId, OpenMode.ForRead); BlockTableRecord btr = (BlockTableRecord)trans.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite); Line line = new Line(new Point3d(0, 0, 0), new Point3d(100, 100, 0)) { Layer = "MyLayer" }; btr.AppendEntity(line); trans.AddNewlyCreatedDBObject(line, true); trans.Commit(); ed.WriteMessage("Linia została dodana do warstwy 'MyLayer'.\n"); } catch (System.Exception ex) { ed.WriteMessage("Błąd: " + ex.Message + "\n"); } } } } }
Wyjaśnienie kodu
- Dodawanie warstwy: Sprawdzamy, czy warstwa „MyLayer” już istnieje. Jeśli nie, tworzymy ją i ustalamy jej kolor na czerwony.
- Tworzenie linii: Dodajemy linię do przestrzeni modelu i przypisujemy ją do nowej warstwy.
- Transakcje: Używamy transakcji, aby upewnić się, że wszystkie zmiany są atomowe i mogą być cofnięte w przypadku błędu.
Kompilacja i testowanie
- Skopiuj skompilowany plik DLL do folderu AutoCAD’a.
- W AutoCAD wpisz komendę
NETLOAD
i wybierz plik DLL. - Uruchom komendę
AddLineToLayer
w konsoli AutoCAD.
Zalety podejścia .NET
Użycie .NET otwiera drzwi do zaawansowanej automatyzacji, pozwalając na tworzenie rozwiązań, które nie są możliwe do zrealizowania w VBA czy AutoLISP. Integracja z innymi technologiami, nowoczesny interfejs i wsparcie dla złożonych operacji czyną z C# idealne narzędzie dla profesjonalistów pracujących w AutoCAD.
Czy używasz już .NET w swoim projekcie AutoCAD? Podziel się swoimi doświadczeniami w komentarzach!