[C#] Komunikacja z aplikacją Zwcad


Recommended Posts

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?

Edited by pop3k
Link to comment
Share on other sites

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

 

Edited by perlon
Link to comment
Share on other sites

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 😄

Link to comment
Share on other sites

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.

 

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share