[C#] Komunikacja z aplikacją Zwcad


Rekomendowane odpowiedzi

Witam, chciałbym za pomocą aplikacji zewnętrznej w C# i xaml po kliknięciu w button narysować linię/okrąg w aktywnym oknie i rysunku ZWCad (bez uruchamiania go poprzez netload).

Widziałem kiedyś taką apkę w AutoCadzie. Jest to w ogóle możliwe w Zwcad?

Edytowane przez pop3k
Odnośnik do komentarza
Udostępnij na innych stronach

Na podstawie Kean Walmsley blog

using System;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using ZWCAD;

namespace CadExecute
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            const string progID = "ZWCAD.application";
            IZcadApplication zcApp = null;
            try
            {
                zcApp = (IZcadApplication)Marshal.GetActiveObject(progID);
            }
            catch
            {
                try
                {
                    Type acType = Type.GetTypeFromProgID(progID);
                    zcApp = (IZcadApplication)Activator.CreateInstance(acType, true);
                }
                catch
                {
                    MessageBox.Show("Cannot create object of type \"" + progID + "\"");
                }
            }
            if (zcApp != null)
            {
                zcApp.Visible = true;
                zcApp.ActiveDocument.SendCommand("_CIRCLE 0,0 10 ");
            }
        }
    }
}

Przestrzeń nazw ZWCAD trzeba dodać przez referencję COM -> OLE Automation i ZWCAD 2020 Type Library

1534009361_2020-04-1221_47_45-ReferenceManager-CadExecute.png.f8d840a4a1977ff7009f769a50fdb7d9.png

 

Edytowane przez perlon
Odnośnik do komentarza
Udostępnij na innych stronach

Jednak napotkałem problemy.

Zaczynając od tego, że nie mam do wyboru biblioteki ZWCAD 2020 Type Library, tylko ZWCAD Type Library

Nie można zdefiniować using Zwcad -> tylko using Zwsoft.Zwcad

Te wszystkie drobne zmiany nie dają mi dostępu do klasy IZcadApplication

Proszę również o wyrozumiałość za mój pierwszy program 😄

Odnośnik do komentarza
Udostępnij na innych stronach

Prawdę mówiąc nie wiem czy po instalacji ZwCAD'a czy pakietu SDK ale u mnie na liście jak widać na zrzucie taka biblioteka typów jest.

Plik to C:\Program Files\Common Files\ZWSoft Shared\zwcad18.tlb W VisualStudio można ręcznie dodać do listy bibliotekę typów przyciskiem Browse. Może coś w ten deseń. Ja tego ręcznie u siebie nie robiłem. Było z dobrodziejstwem inwentarza.

 

Odnośnik do komentarza
Udostępnij na innych stronach

Testowałem na Visual Studio 2010.

Miałem dostepne ZWCAD 2020 Type Library w pliku

C:\Program Files\Common Files\ZWSoft Shared\ZWCAD18.tlb 

i ZWCAD Type Library w plik

C:\Program Files\Common Files\ZWSoft Shared\ZWCAD17.tlb

Ale przeszedłem na zakładkę  Browse, wybrałem plik

c:\Program Files\ZWSOFT\ZWCAD 2020\ZWCAD.exe

Przestrzeń ZWCAD stała się dostępna.

using ZWCAD;

Plik

C:\Program Files\Common Files\ZWSoft Shared\ZWCAD18.tlb 

Nie jest częścią SDK. Na innym komputerze gdzie nie mam SDK ten plik jest dostępny, więc pewnie w Pana przypadku wystarczy wskazać plik nie z listy tylko wybierając z dysku.

Odnośnik do komentarza
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

Ładowanie