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.dllAcMgd.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ę
NETLOADi wybierz plik DLL. - Uruchom komendę
AddLineToLayerw 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!






