Rekomendowane odpowiedzi

Opublikowano (edytowane)

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
Opublikowano (edytowane)

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
Opublikowano

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 😄

Opublikowano

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.

 

Opublikowano

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.

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