Jak zrobić własną nakładkę na CAD’a ? Część 2

W tym wpisie postaram się przedstawić, jak przygotować się do pisania kodu prostej nakładki działającej w środowisku CAD. Zakładam, że czytelnikowi znane są podstawy programowania w C# i posiada zainstalowane środowisko Visual Studio. Przed rozpoczęciem kodowania musimy ściągnąć ze strony  autodesku (lub innej odpowiedniej dla naszego programu CAD) API umożliwiające dostęp do środowiska programowania. Dla autocada będzie to ObjectARX SDK, w którym znajdziemy wiele przykładów oraz dokładną dokumentację w tym również dla .NET. Warto korzystać z tej skarbnicy informacji, nawet jak planujemy pisać kod dla innego nieautodeskowego środowiska.

Rozpoczynamy nowy projekt wybierając typ Class Library oraz target Framework .NET 4.5. Do naszego projektu musimy podlinkować biblioteki z potrzebnym API, które znajdziemy w katalogu SDK (np. ..\ObjectARX 2017\inc) lub bezpośrednio w miejscu, gdzie mamy zainstalowany nasz program CAD.

Dla projektu w wersji dla AutoCada będziemy potrzebowali następujące assembly:

  • accoremgd.dll  czyli implementację AutoCAD Core Engine .NET Managed Wrapper
  • Acdbmgd.dll –  ObjectDBX .NET Managed Wrapper
  • Acmgd(acmgd.dll) – AutoCAD .NET Managed Wrapper
  • AcWindows (AcWindows.dll) – AutoCAD Windows Library.

Gdy uruchamiamy naszą nakładkę w ZWCAD będą to następujące pliki:

  • ZwDatabaseMgd  (ZwDatabaseMgd.dll) czyli implementacja ZRX .NET Managed Wrapper
  • ZwManaged (ZwManaged.dll)
  • ZWCAD (Interop.ZWCAD.dll)

W przypadku niektórych projektów potrzebne mogą być również inne assembly.

Jeśli macie taką możliwość, warto rozpocząć pisanie programu w wersji dla autocada, aby następnie później próbować go uruchomić w wersji dla innego programu. Należy dokonywać testów dla różnych platform po implementacji kluczowych funkcji, żeby upewnić się, czy dobrze one działają również w nie autodeskowym środowisku. W 95% przypadków kod będziemy mogli bez przeszkód przenieść, ale zdarzają się sytuacje braku implementacji w .NET części API. Pozostaje wtedy „ratowanie się” LISP’em, o czym napiszę w dalszych częściach.

Nasz „uniwersalny kod” powinien więc zaczynać się następująco:

#if ACAD //wersja dla AutoCada

using MgdAcApplication = Autodesk.AutoCAD.ApplicationServices.Application;
using MgdAcException = Autodesk.AutoCAD.Runtime.Exception;
using MgdAcDocument = Autodesk.AutoCAD.ApplicationServices.Document;
using MgdAcDocumentCollection = Autodesk.AutoCAD.ApplicationServices.DocumentCollection;
using MgAcAppServices = Autodesk.AutoCAD.ApplicationServices;
using MgdAcWindows = Autodesk.AutoCAD.Windows;

#endif

#if ZWCAD //Wersja dla ZwCada

using MgdAcApplication = ZwSoft.ZwCAD.ApplicationServices.Application;
using MgdAcDocument = ZwSoft.ZwCAD.ApplicationServices.Document;
using MgdAcException = ZwSoft.ZwCAD.Runtime.Exception;
using MgdAcWindows = ZwSoft.ZwCAD.Windows;

using MgdAcColors = ZwSoft.ZwCAD.Colors;
using MgdAcDocumentCollection = ZwSoft.ZwCAD.ApplicationServices.DocumentCollection;
using MgAcAppServices = ZwSoft.ZwCAD.ApplicationServices;

#endif

#if BCAD //wersja dla BricsCada

using MgdAcApplication =  Bricscad.ApplicationServices.Application;
using MgdAcDocument =  Bricscad.ApplicationServices.Document;
using MgdAcException =  Bricscad.Runtime.Exception;
using MgdAcWindows =  Bricscad.Windows;

#endif

W kolejnej części cyklu napiszemy nasz pierwszy program usprawniający rysowanie konstrukcji żelbetowych.

 

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *