Automatyzacja pracy w AutoCAD .NET C# - cz. 1

Automatyzacja pracy w AutoCAD przy użyciu .NET C# – cz.1

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:

  1. Zaawansowana kontrola: Używając .NET, można manipulować niemal każdym aspektem rysunku AutoCAD.
  2. Integracja z innymi systemami: Umożliwia łączenie AutoCAD z bazami danych, aplikacjami webowymi lub innymi narzędziami.
  3. Szybkość działania: Aplikacje napisane w C# są bardziej wydajne niż te stworzone w VBA.
  4. 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:

  1. Zainstalowanego AutoCAD’a (wersja z obsługą API .NET).
  2. Microsoft Visual Studio (wystarczy wersja Community).
  3. Autodesk AutoCAD .NET API SDK, dostępne w ramach subskrypcji Autodesk.
  4. 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

  1. Dodawanie warstwy: Sprawdzamy, czy warstwa „MyLayer” już istnieje. Jeśli nie, tworzymy ją i ustalamy jej kolor na czerwony.
  2. Tworzenie linii: Dodajemy linię do przestrzeni modelu i przypisujemy ją do nowej warstwy.
  3. Transakcje: Używamy transakcji, aby upewnić się, że wszystkie zmiany są atomowe i mogą być cofnięte w przypadku błędu.

Kompilacja i testowanie

  1. Skopiuj skompilowany plik DLL do folderu AutoCAD’a.
  2. W AutoCAD wpisz komendę NETLOAD i wybierz plik DLL.
  3. 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!

.netacadAutoCADautocadapilispvba
Udostępnij:
Automatyzacja pracy w AutoCAD przy użyciu .NET C# – cz.1
Napisane przez
Michał Wrochna
Co myślisz o tym artykule?
0 reakcji
love
0
like
0
so-so
0
weakly
0
0 komentarzy
Najnowsze komentarze
  • Najnowsze komentarze
  • Najlepsze komentarze
Zaloguj się, aby dodać komentarz.
Prawa zastrzeżone Pi Corp sp. z o.o. copyright 2020-2022