Forum Konstruktor budowlany Strona Główna Konstruktor budowlany
Forum projektantów
 
 FAQFAQ   SzukajSzukaj   UżytkownicyUżytkownicy   GrupyGrupy   GalerieGalerie   RejestracjaRejestracja 
 ProfilProfil   Zaloguj się, by sprawdzić wiadomościZaloguj się, by sprawdzić wiadomości   ZalogujZaloguj 

Visual C# 2010 Express

 
Napisz nowy temat   Odpowiedz do tematu    Forum Konstruktor budowlany Strona Główna -> Programowanie
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Tomasz79
Doświadczony Forumowicz



Dołączył: 30 Paź 2007
Posty: 79
Przeczytał: 0 tematów

Pomógł: 3 razy
Ostrzeżeń: 0/5
Skąd: Radom

PostWysłany: Wto 21:51, 27 Wrz 2011    Temat postu: Visual C# 2010 Express

Witam.
Czy za pomocą Visual C# 2010 Express można się dobrać do AutoCad-a lub ZwCada? Jeśli tak to jak ?

Pozdrawiam


Post został pochwalony 0 razy
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
mch
Doświadczony Forumowicz



Dołączył: 30 Maj 2009
Posty: 167
Przeczytał: 0 tematów

Pomógł: 5 razy
Ostrzeżeń: 0/5
Skąd: Kraków

PostWysłany: Wto 22:15, 27 Wrz 2011    Temat postu:

do autocada można się dobrać za pomocą c#. Osobiście programuje za pomocą COM. Aby móc korzystać z autocada przy pomocy COM w Visual c# najpierw należy dodać do projektu 2 biblioteki: acax18enu.tlb oraz axdb18enu.tlb.

Poniżej wklejam przykładowy kod generujący zwykłą linie (na "formę" należy dodać przycisk button1). Aby program zadziałał należy mieć uruchomionego AutoCada.



Kod:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using AutoCAD = Autodesk.AutoCAD.Interop;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private AutoCAD.AcadApplication AcadApp;
        private AutoCAD.AcadDocument AcadDoc;
        private AutoCAD.Common.AcadModelSpace AcadDwg;

        private void button1_Click(object sender, EventArgs e)
        {

            this.AcadApp = (AutoCAD.AcadApplication)System.Runtime.InteropServices.Marshal.GetActiveObject("Autocad.Application");
            this.AcadDoc = this.AcadApp.ActiveDocument;
            this.AcadDwg = this.AcadDoc.ModelSpace;

            AutoCAD.Common.AcadLine linia;
            double[] start = new double[3];
            double[] koniec = new double[3];
            start[0] = 0;
            start[1] = 0;
            start[2] = 0;
            koniec[0] = 10;
            koniec[1] = 10;
            koniec[2] = 0;
            linia = this.AcadDwg.AddLine(start, koniec);
            try
            {
                System.Runtime.InteropServices.Marshal.ReleaseComObject(this.AcadApp);
            }
            catch
            {
            }

        }
    }
}

Cały model obiektowy Autocada znajduje się w pomocy i nazywa się "AutoCAD ActiveX and VBA reference" (poszukać plik acadauto.chm na dysku).

Jeżeli ktos poszukuje informacji po polsku na temat programowania AutoCADA i zna Delphi (odświeżony Pascal:)) to polecam książkę Wojciecha Czyżyńskiego i Edwarda Lisowskiego "AutoCAD. Automatyzacja zadań grafiki za pomocą Delphi".


Post został pochwalony 0 razy

Ostatnio zmieniony przez mch dnia Wto 22:35, 27 Wrz 2011, w całości zmieniany 3 razy
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Tomasz79
Doświadczony Forumowicz



Dołączył: 30 Paź 2007
Posty: 79
Przeczytał: 0 tematów

Pomógł: 3 razy
Ostrzeżeń: 0/5
Skąd: Radom

PostWysłany: Wto 22:30, 27 Wrz 2011    Temat postu:

Dzięki wielkie

Post został pochwalony 0 razy
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
MaciejSz
Początkujący Forumowicz



Dołączył: 13 Lis 2012
Posty: 8
Przeczytał: 0 tematów

Ostrzeżeń: 0/5
Skąd: Kraków

PostWysłany: Śro 15:32, 05 Gru 2012    Temat postu:

Można alternatywnie wykorzystać AutoCad .NET API, która umożliwia tworzenie add-inów pod AutoCada. To zarządzana wersja dosyć skomplikowanego ObjectARX.
Kod rysujący pojedynczą linię będzie wyglądał tak:
Kod:


using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.Geometry;
using Autodesk.AutoCAD.Runtime;

namespace MyExample
{
    public class MyClass
    {
        [CommandMethod("mycommand")]
        public void MyCommandMethod()
        {

            Point3d p1 = new Point3d(0, 0, 0);
            Point3d p2 = new Point3d(10, 10, 0);
            Line line = new Line(p1, p2);

            Database workingDatabase = HostApplicationServices.WorkingDatabase;
            Transaction transaction = workingDatabase.TransactionManager.StartTransaction();

            using (transaction)
            {
                BlockTableRecord blockTableRecord =
                   (BlockTableRecord)transaction.GetObject(workingDatabase.CurrentSpaceId, OpenMode.ForWrite);

                blockTableRecord.AppendEntity(line);
                transaction.AddNewlyCreatedDBObject(line, true);

                transaction.Commit();
            }
        }
    }
}



Program kompiluje się jako biblioteka *.dll, wczytywany jest do AutoCada poprzez autocadowskie polecenie NETLOAD i wprowadzenie w konsoli nazwy komendy zawartej w atrybucie "CommandMethod".
Programowanie przy użyciu tego API jest nieco bardziej skomplikowane niż przy użyciu COM, zwłaszcza jak przychodzi wstawić np. blok z atrybutami. Natomiast addiny są wygodniejsze w użytkowaniu, instalowaniu i ewentualnej dystrybucji.


Post został pochwalony 0 razy
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
mch
Doświadczony Forumowicz



Dołączył: 30 Maj 2009
Posty: 167
Przeczytał: 0 tematów

Pomógł: 5 razy
Ostrzeżeń: 0/5
Skąd: Kraków

PostWysłany: Śro 16:21, 05 Gru 2012    Temat postu:

masz jakis sposób na testowanie swoich aplikacji? Bo z tego co pamiętam to w celu wczytania kolejnego (następna kompilacja) pliku *.dll trzeba było restartować autocada.

Post został pochwalony 0 razy
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
MaciejSz
Początkujący Forumowicz



Dołączył: 13 Lis 2012
Posty: 8
Przeczytał: 0 tematów

Ostrzeżeń: 0/5
Skąd: Kraków

PostWysłany: Śro 22:16, 05 Gru 2012    Temat postu:

mch napisał:
masz jakis sposób na testowanie swoich aplikacji? Bo z tego co pamiętam to w celu wczytania kolejnego (następna kompilacja) pliku *.dll trzeba było restartować autocada.


Masz rację, trzeba restartować autocada, ale nigdy mi to nie przeszkadzało. Aplikację testuje się używając wszystkich narzędzi jakie udostępnia Visual Studio, czyli możesz w każdej chwili przerwać działanie aplikacji, zrobić poprawki i wznowić program. W Project -> Properties -> Debug wybierasz
(o) Start External Program no i wskazujesz acad.exe.
Z tego co pamiętam w żeby wersji VS express debugować to trzeba zrobić jakiejś tam obejście, ale na necie można to znaleźć bez problemu.


Post został pochwalony 0 razy
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
adrian87
Początkujący Forumowicz



Dołączył: 05 Sty 2013
Posty: 1
Przeczytał: 0 tematów

Ostrzeżeń: 0/5
Skąd: Wrocław

PostWysłany: Sob 22:49, 05 Sty 2013    Temat postu:

Witam!
mimo dodania bibliotek acax19enu.tlb oraz axdb19enu.tlb (korzystam z cada 2013 i tylko takie znalazłem w plikach programu:)) w VS dalej dostaje błąd "The type or namespace AutoCad could not be found" nasuwa sie komuś jaka może byc przyczyna? dzieki za pomoc
pozdrawiam


Post został pochwalony 0 razy
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
MaciejSz
Początkujący Forumowicz



Dołączył: 13 Lis 2012
Posty: 8
Przeczytał: 0 tematów

Ostrzeżeń: 0/5
Skąd: Kraków

PostWysłany: Nie 2:03, 06 Sty 2013    Temat postu:

adrian87 napisał:

mimo dodania bibliotek acax19enu.tlb oraz axdb19enu.tlb


Do projektu należy dodać referencje: acdbmgd.dll, acmgd.dll oraz (od wersji 2013) AcCoreMgd.dll.


Post został pochwalony 0 razy
Powrót do góry
Zobacz profil autora
Wyświetl posty z ostatnich:   
Napisz nowy temat   Odpowiedz do tematu    Forum Konstruktor budowlany Strona Główna -> Programowanie Wszystkie czasy w strefie EET (Europa)
Strona 1 z 1

 
Skocz do:  
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach

fora.pl - załóż własne forum dyskusyjne za darmo
Powered by phpBB © 2001, 2005 phpBB Group
Regulamin