Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  AutoCAD VBA
  VB.NET

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
Autor Thema:  VB.NET (4750 mal gelesen)
GüSo
Mitglied
Elektrotechniker


Sehen Sie sich das Profil von GüSo an!   Senden Sie eine Private Message an GüSo  Schreiben Sie einen Gästebucheintrag für GüSo

Beiträge: 138
Registriert: 22.01.2009

Windows 7 Professional SP1, AutoCAD 2011, Office 2013
Windows 10, Office2019

erstellt am: 23. Jun. 2011 13:12    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Ich will mich nun an die VB.NET-Programmierung in und von AutoCAD rantasten. Einiges habe ich dazu schon gelesen. Beim ersten kleinen Projekt haberte es aber schon. Wie bekomme ich es denn hin, daß ich ein AutoCAD.Applicationobjekt erstellen kann. Die Referenzen auf acmgd.dll und acdbmgd.dll. habe ich erstellt.
Welche Imports brauche ich da evtl. noch?

System Windows 7, 64bit, AutoCAD 2011

Gruß Günter

------------------
MfG

Günter

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP


Ex-Mitglied

erstellt am: 23. Jun. 2011 13:23    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

>> Wie bekomme ich es denn hin, daß ich ein AutoCAD.Applicationobjekt erstellen kann

Schreibst Du eine EXE oder eine (ins AutoCAD zu ladende) DLL?

Im zweiteren Fall brauchst Du kein Application-Object erstellen, denn Du stehst ja mit der DLL mitten drin. 

Schreibst Du eine EXE, dann kannst Du über COM (CreateObject oder GetObject) den ActiveX-Server von AutoCAD anstarten oder über Processes-Funktionen die ACAD.EXE anstarten.

Es gibt natürlich Aufgaben, AutoCAD von aussen zu steuern. Der bessere Weg (für reine AutoCAD-Applikationen) ist aber intern per DLL (und diese mit NETLOAD laden) zu arbeiten.

- alfred -

------------------
www.hollaus.at

GüSo
Mitglied
Elektrotechniker


Sehen Sie sich das Profil von GüSo an!   Senden Sie eine Private Message an GüSo  Schreiben Sie einen Gästebucheintrag für GüSo

Beiträge: 138
Registriert: 22.01.2009

Windows 7 Professional SP1, AutoCAD 2011, Office 2013
Windows 10, Office2019

erstellt am: 23. Jun. 2011 14:04    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Im Endeffekt brauche, oder will ich beide Methoden beherrschen. Zunächst wollte ich erstmal die .Net API von AutoCAD ausprobieren und damit erste Erfahrungen sammeln. Ich stimme Dir zu, daß in vielen Fällen die Verwendung von dll`s, die quasi dem AutoCAD neue Funktionen verleihen, sinnvoller ist. Ich glaube wir hatten darüber schon mal gesprochen (vor ca. 1 bis 1,5 Jahren). Aber das ist der zweite Schritt. Ich habe von früher her noch eine Reihe Programme mit denen ich Daten aus den AutoCAD-Zeichnungen auslese und zur weiteren Bearbeitung ins Excel schreibe. Diese werden dann nach der Bearbeitung wieder zurück geschrieben. Das sind so kleine Progrämmchen, die sich in der Vergangenheit als nützlich erwiesen haben. Der Hintergrund ist Elektroplanung.

Günter

------------------
MfG

Günter

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP


Ex-Mitglied

erstellt am: 23. Jun. 2011 14:09    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

>> Zunächst wollte ich erstmal die .Net API von AutoCAD ausprobieren und damit erste Erfahrungen sammeln

Dafür ist Methode 'DLL' sinnvoll (und notwendig).


>> Ich habe von früher her noch eine Reihe Programme mit denen ich Daten aus den AutoCAD-Zeichnungen
>> auslese und zur weiteren Bearbeitung ins Excel schreibe

In welcher Form hast Du diese Programme (welcher Typ und welche Programmiersprache).
Du kannst auch von DLL aus Excel-Daten lesen oder erzeugen.


- alfred -

------------------
www.hollaus.at

GüSo
Mitglied
Elektrotechniker


Sehen Sie sich das Profil von GüSo an!   Senden Sie eine Private Message an GüSo  Schreiben Sie einen Gästebucheintrag für GüSo

Beiträge: 138
Registriert: 22.01.2009

Windows 7 Professional SP1, AutoCAD 2011, Office 2013
Windows 10, Office2019

erstellt am: 24. Jun. 2011 09:17    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Alfred!
Die Programme wurden seinerzeit in VB6 geschrieben. Die Allerersten waren teilweise in Excel-, bzw. AutoCAD-VBA. Ich hatte mir ein Programm geschrieben, das eine separate Anwendung darstellte, die die laufenden Excel- bzw. AutoCAD-Anwendungen "einfing", ich meine als Objekte sich verfügbar machte. Über die ActiveX-Fähigkeit konnte ich dann diese Objekte steuern. Da ich die Programmiererei ja nebenbei betreibe, war ich damit in der Lage, separat in Excel- oder AutoCAD-VBA zu experimentieren. Zweitens ist die VB6 eine Einsteigerversion, die es nicht erlaubte dll`s zu erstellen.
Wie bereits gesagt will ich den Vorteil von dll`s nicht in Abrede stellen, aber man sollte doch alle Methoden kennen und in den Grundzügen beherrschen, damit man dann zu gegebener Zeit die geeignete Methode auswählen und anwenden kann.

Günter

------------------
MfG

Günter

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP


Ex-Mitglied

erstellt am: 24. Jun. 2011 09:26    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

>> Über die ActiveX-Fähigkeit konnte ich dann diese Objekte steuern

Funktioniert genauso mit VB.NET, kein Unterschied, nur unter Verweise sind (aus der Karte 'COM') die 2 AutoCAD-Verweise hinzuzufügen:

    AutoCAD 20xx Type Library
    AutoCAD/ObjectDBX Common xx.x Type Library

Achtung bei der Unterscheidung 32bit und 64bit; imho wird's schwer, wenn Du 64bit-AutoCAD und 32bit-Excel aus einer EXE ansprechen willst. Ich hab darüber zwar noch nicht nachgedacht, kann mir aber vorstellen, das macht Brösel im Entwicklergetriebe.


>> Zweitens ist die VB6 eine Einsteigerversion, die es nicht erlaubte dll`s zu erstellen

Kleiner Einspruch, mit VB6 konnte man auch DLL (und OCX und ...) erstellen.


>> aber man sollte doch alle Methoden kennen und in den Grundzügen beherrschen

Keine Frage, aber von der EXE kommst Du nur über ActiveX hin, da kannst Du nicht alle Methoden kennenlernen.


- alfred -

------------------
www.hollaus.at

GüSo
Mitglied
Elektrotechniker


Sehen Sie sich das Profil von GüSo an!   Senden Sie eine Private Message an GüSo  Schreiben Sie einen Gästebucheintrag für GüSo

Beiträge: 138
Registriert: 22.01.2009

Windows 7 Professional SP1, AutoCAD 2011, Office 2013
Windows 10, Office2019

erstellt am: 24. Jun. 2011 10:23    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Zitat:

Achtung bei der Unterscheidung 32bit und 64bit; IMHOIn my humble oppinion (Meiner Meinung nach) wird's schwer, wenn Du 64bit-AutoCAD und 32bit-Excel aus einer EXE ansprechen willst. Ich hab darüber zwar noch nicht nachgedacht, kann mir aber vorstellen, das macht Brösel im Entwicklergetriebe.


Das verstehe ich nicht. Könntest Du mir das bitte näher erklären?

Günter

------------------
MfG

Günter

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP


Ex-Mitglied

erstellt am: 24. Jun. 2011 10:51    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat


CADde_VS2010_AcadFromExe_COM_AN01.zip

 
Hi,

weil ich annehme, dass es zu Differenzen kommen wird, wenn Du von einer EXE aus ActiveX-Objekte steuern willst, die nicht im gleichen Modus (32/64bit) arbeiten.

Ich hab jetzt mal selbst probiert, eine EXE machen, die selbst in 32bit läuft und das 64bit-AutoCAD anstartet und bedient. Ich muss zugeben, dass ich überrascht war, dass das überhaupt funktioniert und als solches sieht es mal so aus, dass meine obige 'Vorsichtsdarstellung' übertrieben schien. Und doch fürchte ich, dass es Dich damit irgendwann erwischt und gewisse Funktionen dann doch Exceptions auslösen, die bei gleichen Modi's (EXE 32bit und AutoCAD 32bit bzw. 64bit und 64bit) nicht auftreten.

Wie dem auch sei, ich nehme meine Warnung von oben (ein klein wenig) zurück, dafür behältst Du sie doch im Hinterkopf, wenn mal was nicht läuft wie es gedacht war. 

- alfred -

PS: und weil ich jetzt schon probiert hab, ein Beispiel (VS2010) anbei

------------------
www.hollaus.at

GüSo
Mitglied
Elektrotechniker


Sehen Sie sich das Profil von GüSo an!   Senden Sie eine Private Message an GüSo  Schreiben Sie einen Gästebucheintrag für GüSo

Beiträge: 138
Registriert: 22.01.2009

Windows 7 Professional SP1, AutoCAD 2011, Office 2013
Windows 10, Office2019

erstellt am: 24. Jun. 2011 12:51    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Alfred, kann leider das Testprojekt nicht öffen, da ich noch VS2008habe. Könntest Du das evtl. in einer älteren Version speichern?

Günter

------------------
MfG

Günter

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP


Ex-Mitglied

erstellt am: 24. Jun. 2011 13:02    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

>> Könntest Du das evtl. in einer älteren Version speichern?

Nee, zurückspeichern ist in VS2010 nicht, aber mach Dir ein neues Projekt in VS2008 (Windows-Forms-Projekt, damit eine EXE draus wird), erstelle ein Formular und einen Button, doppelklick auf den Button und dann fügst Du den Code von meinem Form1.vb
...oder dieses hier, was auf's gleiche kommt:
Ganz oben in der Code-Datei des Forms:

Code:
Imports Autodesk.AutoCAD

Und für den Doppelklick innerhalb des Form-Codes:
Code:
   Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
      Try
         Dim tAcadApp As Interop.AcadApplication = CType(CreateObject("AutoCAD.Application.18.2"), Interop.AcadApplication)
         Dim tAcadDoc As Interop.AcadDocument = tAcadApp.ActiveDocument
         tAcadApp.Visible = True
         MsgBox(tAcadDoc.Name)
      Catch ex As Exception
         MsgBox("Fehler: " & vbNewLine & ex.Message)
      End Try
   End Sub

Die Versionsnummer korrigierst Du (bei 'AutoCAD.Application.xx.x') passend zu Deiner AutoCAD-Version

Und dann noch die obigen Verweise einfügen und starten.

- alfred -

------------------
www.hollaus.at

[Diese Nachricht wurde von a.n. am 24. Jun. 2011 editiert.]

GüSo
Mitglied
Elektrotechniker


Sehen Sie sich das Profil von GüSo an!   Senden Sie eine Private Message an GüSo  Schreiben Sie einen Gästebucheintrag für GüSo

Beiträge: 138
Registriert: 22.01.2009

Windows 7 Professional SP1, AutoCAD 2011, Office 2013
Windows 10, Office2019

erstellt am: 24. Jun. 2011 14:53    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Ich bekomme den folgenden Fehler:
Fehler 1 "AcadApplication" ist im Namespace "Autodesk.AutoCAD.Interop" nicht eindeutig. C:\Users\Günter\AppData\Local\Temporary Projects\Test von Alfred(2)\Form1.vb 6 29 Test von Alfred(2)
Fehler 2 "AcadDocument" ist im Namespace "Autodesk.AutoCAD.Interop" nicht eindeutig. C:\Users\Günter\AppData\Local\Temporary Projects\Test von Alfred(2)\Form1.vb 7 29 Test von Alfred(2)

------------------
MfG

Günter

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP


Ex-Mitglied

erstellt am: 24. Jun. 2011 15:03    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

lade bitte die gesamte Solution (ist ja noch klein) hier hoch, damit ich mir's ansehen kann.
Die Fehlermeldung hat leider zu viele Möglichkeiten als Ursache (um diese jetzt alle durchraten zu wollen).

- alfred -

------------------
www.hollaus.at

GüSo
Mitglied
Elektrotechniker


Sehen Sie sich das Profil von GüSo an!   Senden Sie eine Private Message an GüSo  Schreiben Sie einen Gästebucheintrag für GüSo

Beiträge: 138
Registriert: 22.01.2009

Windows 7 Professional SP1, AutoCAD 2011, Office 2013
Windows 10, Office2019

erstellt am: 24. Jun. 2011 15:24    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


GueSo.zip

 
Ich hoffe, der upload hat geklappt. Ich mußte die Datei in zip umbenennen, da zipx verboten ist. Habe dummerweise mit "optimale Methode wählen" gezippt

Günter

------------------
MfG

Günter

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP


Ex-Mitglied

erstellt am: 24. Jun. 2011 15:31    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

sorry, ich kann mit ZIPX nix anfangen. Mach bitte ein normales ZIP (oder RAR).

- alfred -

------------------
www.hollaus.at

GüSo
Mitglied
Elektrotechniker


Sehen Sie sich das Profil von GüSo an!   Senden Sie eine Private Message an GüSo  Schreiben Sie einen Gästebucheintrag für GüSo

Beiträge: 138
Registriert: 22.01.2009

Windows 7 Professional SP1, AutoCAD 2011, Office 2013
Windows 10, Office2019

erstellt am: 24. Jun. 2011 15:44    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


GueSo2.zip

 
Hier die Version 2.

------------------
MfG

Günter

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP


Ex-Mitglied

erstellt am: 24. Jun. 2011 15:57    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

Du hast 2 * den Verweis auf AutoCAD 2012 TypeLibrary mit 2 verschiedenen Methoden referenziert und jetzt kennt sich der SyntaxCheck nicht mehr aus, auf welche der beiden Interop-Assemblies hinzugreifen ist.

Dass sich diese unterschiedlich benennen, kommt aus der Wahl der Methode, wie Du diese referenziert hast. Erkennbar, dass diese gleich sind, kannst Du hinten (rechts in der Verweiszeile) am 2-maligen Vorkommen von Autodesk.Interop.Common

Also einen der beiden Verweise löschen und fertig.

- alfred -

PS: lass Dich nicht verwirren von den Einträgen '<System kann den angegebenen Verweis nicht finden>' ==> ich hab die wo anders stehen und nicht aktualisiert, als ich Dein Projekt geöffnet hatte.

PPS: Du verweist auf AutoCAD 2012 - Libraries, für AutoCAD 2012 Entwicklung mit Framework 4 brauchst Du VS2010. Du kannst natürlich auch mit Framework 3.5 arbeiten, aber um da die eigene App zu debuggen, braucht es Kunstgriffe.
Das ist egal, solange Du eine EXE machst und über COM arbeitest, da hat es keinen Einfluss.

------------------
www.hollaus.at

GüSo
Mitglied
Elektrotechniker


Sehen Sie sich das Profil von GüSo an!   Senden Sie eine Private Message an GüSo  Schreiben Sie einen Gästebucheintrag für GüSo

Beiträge: 138
Registriert: 22.01.2009

Windows 7 Professional SP1, AutoCAD 2011, Office 2013
Windows 10, Office2019

erstellt am: 24. Jun. 2011 16:20    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Zitat:

Du hast 2 * den Verweis auf AutoCAD 2012 TypeLibrary mit 2 verschiedenen Methoden referenziert .....


Wo? Im Projektexplorer, "MyProject", Verweise kann ich nichts von 2012 entdecken. Zumal ich nur 2011 habe und nichts weiter auf dieser Maschine.

------------------
MfG

Günter

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP


Ex-Mitglied

erstellt am: 24. Jun. 2011 16:30    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat


CADde_GueSo_VSInteropVerweise_AN01.png

 
Hi,

>> Wo? Im Projektexplorer, "MyProject"

Klick mal im Projektexplorer auf das VB-Projektfile ('Test von Alfred(2)') ==> rechte Maustaste ==> Eigenschaften
Die Seite mit den Projekteigenschaften zeigt sich und links kannst Du auf den Reiter 'Verweise' umschalten.
Da kannst Du dann eine Zeile mit einem Verweis anklicken und entfernen.


>> Verweise kann ich nichts von 2012 entdecken

Vergiss es, ich hab vergessen, dass AutoCAD 2012 die Lib's von 2011 überschreibt ==> deswegen stand bei mir 2012 und darauf beruhte meine Annahme. Wenn Du nur 2011 installiert hast, dann sind's bei Dir die 2011-Verweise und es passt mit Framework 3.5.

- alfred -

[EDIT] ich seh grad, dass ich zuerst den Screenshot vergessen habe [/EDIT]

------------------
www.hollaus.at

[Diese Nachricht wurde von a.n. am 24. Jun. 2011 editiert.]

GüSo
Mitglied
Elektrotechniker


Sehen Sie sich das Profil von GüSo an!   Senden Sie eine Private Message an GüSo  Schreiben Sie einen Gästebucheintrag für GüSo

Beiträge: 138
Registriert: 22.01.2009

Windows 7 Professional SP1, AutoCAD 2011, Office 2013
Windows 10, Office2019

erstellt am: 27. Jun. 2011 09:40    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hi Alfred,

nach einem frustrierenden Wochende, weil nichts lief bin ich nun wieder aktiv.
Ich war soweit gekommen, daß es mir gelang über CreateObject("....") AutoCAD zustarten. Das Objekt sichtbar zu schalten gelang auch noch. Den Fensterstatus konnte ich aber schon nicht mehr ändern.
Gegenwärtig recherchiere ich gerade im Katalog der Deutschen Bücherei nach AutoCAD und .Net-Programmierung. Das sieht ja trübe aus. Zu .Net gibt es ja eine Menge aber nicht in Verbindung mit AutoCAD, Zumindest dem Titel nach. Über die weiteren Detail würde ich mich dann morgen melden, wenn ich wieder an meiner W7 Maschine mit AutoCAD2011 sitze.

Günter

------------------
MfG

Günter

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

GüSo
Mitglied
Elektrotechniker


Sehen Sie sich das Profil von GüSo an!   Senden Sie eine Private Message an GüSo  Schreiben Sie einen Gästebucheintrag für GüSo

Beiträge: 138
Registriert: 22.01.2009

Windows 7 Professional SP1, AutoCAD 2011, Office 2013
Windows 10, Office2019

erstellt am: 28. Jun. 2011 11:24    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


Fehlermeldung1.PNG


VerweiseundNamespaces.PNG


CodedesForms.zip

 
Hi Alfred,
Ich würde Dir jetzt mal eine Codedatei von dem Form schicken und Bildschirmfotografien von den Verweisen und importierten namespaces.
Ich kann das AutoCAD zwar starten, aber beim Sichtbarschalten des Fensters kommt die Fehlermeldung. Im Lokalfenster, wenn ich mir mein AutoKAD-Objekt ansehe, dann kann ich dort sogar die Visible-Eigenschaft umstellen. Was ist also an AutoKAD.visible=true falsch? Der Fehler kommt ja erst zur Laufzeit.

Noch eine Frage: Wo finde ich den diesen Verwis, oder besser wie füge ich den ein? Woher?

Zitat:

Ein Verweis auf die Assembly "Autodesk.AutoCAD.Interop.Common, Version=18.1.0.0, Culture=neutral, PublicKeyToken=eed84259d7cbf30b", die
        den Typ "Autodesk.AutoCAD.Interop.Common.AcWindowState" enthält, ist erforderlich.
        Fügen Sie dem Projekt einen Verweis hinzu.

Günter

------------------
MfG

Günter

[Diese Nachricht wurde von GüSo am 28. Jun. 2011 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP


Ex-Mitglied

erstellt am: 28. Jun. 2011 12:12    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

>> Wo finde ich den diesen Verwis, oder besser wie füge ich den ein? Woher?

In den VB-Projekteigenschaften ==> Verweise ==> Hinzufügen ==> (Karte) COM ==> und in der Liste suchst Du nach:

AutoCAD/ObjectDBX Common 18.0 Type Library

Im Dialog der Verweise solltest Du dann 2 NameSpaces sehen:

    - AutoCAD.Interop
    - AutoCAD.Interop.Common

Lass wissen, ob der Fehler noch immer kommt, wenn Du dieses jetzt korrigiert hast.

- alfred -

------------------
www.hollaus.at

GüSo
Mitglied
Elektrotechniker


Sehen Sie sich das Profil von GüSo an!   Senden Sie eine Private Message an GüSo  Schreiben Sie einen Gästebucheintrag für GüSo

Beiträge: 138
Registriert: 22.01.2009

Windows 7 Professional SP1, AutoCAD 2011, Office 2013
Windows 10, Office2019

erstellt am: 28. Jun. 2011 13:45    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


Verweise2.PNG


Verweise3.PNG

 
"AutoCAD/ObjectDBX Common 18.0 Type Library" kann ich nicht finden. Welche Datei müßte das sein, damit man mal suchen kann, ob es die überhaupt gibt.

Um sicher zu gehen, hier nochmal 2 Bildschirmkopien.

------------------
MfG

Günter

[Diese Nachricht wurde von GüSo am 28. Jun. 2011 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP


Ex-Mitglied

erstellt am: 28. Jun. 2011 14:05    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

häng Dich mal nicht an dem 18.0 auf (darf auch 18.1 oder 18.2 sein).

Wenn Du gar keine AutoCAD/ObjectDBX Common xxxxx Type Library im COM-Register findest, dann wird's heikel.   

Dann kannst Du noch versuchen im 'Common Files'-Verzeichnis nach TLB-Dateien zu suchen. Ich vermute mal diese sollten es sein:
- axdb18enu.tlb
- acax18enu.tlb

Du kannst aber probehalber auch mal VB6 aufmachen und nachsehen, ob Du damit die Verweise findest.

- alfred -

------------------
www.hollaus.at

GüSo
Mitglied
Elektrotechniker


Sehen Sie sich das Profil von GüSo an!   Senden Sie eine Private Message an GüSo  Schreiben Sie einen Gästebucheintrag für GüSo

Beiträge: 138
Registriert: 22.01.2009

Windows 7 Professional SP1, AutoCAD 2011, Office 2013
Windows 10, Office2019

erstellt am: 28. Jun. 2011 15:12    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Alfreeeeeed, es klappt.

Ich habe die Dateien in Lw:\Programme\Autodesk\objARX\inc-x64\ gefunden. Allerdings klappte es nicht mit der Übergabe des Pfades und dann unter dem Reiter "COM", sondern unter dem Reiter "Durchsuchen" und dann Pfad und Datei auswählen.

------------------
MfG

Günter

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

GüSo
Mitglied
Elektrotechniker


Sehen Sie sich das Profil von GüSo an!   Senden Sie eine Private Message an GüSo  Schreiben Sie einen Gästebucheintrag für GüSo

Beiträge: 138
Registriert: 22.01.2009

Windows 7 Professional SP1, AutoCAD 2011, Office 2013
Windows 10, Office2019

erstellt am: 28. Jun. 2011 16:32    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


Fehler1.PNG


Austausch.txt


Form1_Code.zip

 
Nachdem ich nun etwas "gespielt" das Endresultat. Prinzipiell läuft es im "Schrittbetrieb" (F8) problemlos durch und reagiert wie ich es erwartet habe. Lasse ich das Degugging mit F5 komplett durchlaufen, dann gibt es gelegentlich an der Stelle "MSGBOX(AutoKAD.ActiveDocument.Name)" eine Fehlermeldung der Art "Aufgerufener lehnt Antwort ab". Starte ich die erzeugte exe, dann tritt der Fehler ständig auf. Ich sende Dir diese mal als Anhang mit.
Was mich außerdem noch stutzig macht ist, daß in der Debuggermeldung unter "Geladene Assemblies" lauter Win32-Versionen aufgeführt werden. Kennst Du die Erklärung?

------------------
MfG

Günter

PS: so klappt`s immer :
dim Zeichnungen as acaddocuments, DieZeichnung as acaddocument
....
....
Zeichnungen=AutoKAD.Documents
DieZeichnung=AutoKAD.ActiveDocument
msgbox(DieZeichnung.Name)

Günter

[Diese Nachricht wurde von GüSo am 28. Jun. 2011 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP


Ex-Mitglied

erstellt am: 28. Jun. 2011 20:22    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

im ZIP ist nur das VB-File, aber nicht die gesamte Solution. Rein vom Lesen sehe ich im VB-File mal keine Fehler und damit vermute ich den Fehler mal nicht in diesen Zeilen.

Zu Deinem PS:
>> dim Zeichnungen as acaddocuments, DieZeichnung as acaddocument

...kann ich Dir noch die Empfehlung mitgeben: stelle in den Projekteigenschaften 'Option Strict' und 'Option Explicit' auf ON (Projekteigenschaften ==> Karte 'Kompilieren'). Das hat zwar den Nachteil, dass Late-Binding nicht funktioniert, aber den Vorteil, dass eben jede Variablendeklaration im Code zwingend erforderlich ist.
Nun ergänzend: dass es 'zwingend erforderlich' ist, ist für sich noch kein Vorteil beim Schreiben, aber es werden damit Laufzeitfehler ausgeschlossen, da schon vor dem Compiling feststeht, was eine deklarierte Variable kann und Zuweisungen können schon beim Code-Schreiben geprüft werden.
Ist ein Programm mal im Lauf und dann kommt es erst drauf, dass Du eine falsche Zuweisung gemacht hast, endet es meist im Catch oder mit Crash.


>> daß in der Debuggermeldung unter "Geladene Assemblies" lauter Win32-Versionen aufgeführt werden.
>> Kennst Du die Erklärung

Lass Dich nicht davon ablenken, wenn 'Win32-Version' da steht, wichtig ist jeweils eine Zeile darunter 'CodeBase: file: ...'


HTH, - alfred -

------------------
www.hollaus.at

GüSo
Mitglied
Elektrotechniker


Sehen Sie sich das Profil von GüSo an!   Senden Sie eine Private Message an GüSo  Schreiben Sie einen Gästebucheintrag für GüSo

Beiträge: 138
Registriert: 22.01.2009

Windows 7 Professional SP1, AutoCAD 2011, Office 2013
Windows 10, Office2019

erstellt am: 29. Jun. 2011 09:40    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

 
Zitat:

...kann ich Dir noch die Empfehlung mitgeben: stelle in den Projekteigenschaften 'Option Strict' und 'Option Explicit' auf ON (Projekteigenschaften ==> Karte 'Kompilieren'). Das hat zwar den Nachteil, dass Late-Binding nicht funktioniert, aber den Vorteil, dass eben jede Variablendeklaration im Code zwingend erforderlich ist.


"Option Strict" stand auf off. Das habe ich geändert. Jetzt kommt die Fehlermeldung bei der Zeile
AutoKAD=createObject("AutoCAD.Application.18")
Die Meldung lautet:
"Option Strict On" lässt keine impliziten Konvertierungen von Object in Autodesk.AutoCAD.Interop.AcadApplication zu.
Daran bastle ich jetzt rum.

------------------
MfG

Günter

PS:
Schon geklärt, ging schneller als erwartet. Lösung CType(CreateObject(.....))

[Diese Nachricht wurde von GüSo am 29. Jun. 2011 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP


Ex-Mitglied

erstellt am: 29. Jun. 2011 09:45    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

Code:
AutoKAD=ctype(createObject("AutoCAD.Application.18"),Autodesk.AutoCAD.Interop.AcadApplication)

Guck im Internet nach 'Casting', im VB gibt's da zwei Varianten:

    CTYPE
    TRYCAST

- alfred -

------------------
www.hollaus.at

GüSo
Mitglied
Elektrotechniker


Sehen Sie sich das Profil von GüSo an!   Senden Sie eine Private Message an GüSo  Schreiben Sie einen Gästebucheintrag für GüSo

Beiträge: 138
Registriert: 22.01.2009

Windows 7 Professional SP1, AutoCAD 2011, Office 2013
Windows 10, Office2019

erstellt am: 29. Jun. 2011 10:08    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Zitat:

Stelle "MSGBOX(AutoKAD.ActiveDocument.Name)" eine Fehlermeldung der Art "Aufgerufener lehnt Antwort ab".


Diesen Fehler habe ich jetzt aber immer noch, wenn ich die exe (neu erstellte) ausführe.
Das nur am Rande. Ich umgehe das wie bereits gezeigt und gut ist.

------------------
MfG

Günter

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP


Ex-Mitglied

erstellt am: 29. Jun. 2011 10:16    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

>> Diesen Fehler habe ich jetzt aber immer noch, wenn ich die exe (neu erstellte) ausführe.
>> Das nur am Rande. Ich umgehe das wie bereits gezeigt und gut ist.

Meinst Du mit 'umgehen' dieses:
>> dim Zeichnungen as acaddocuments, DieZeichnung as acaddocument

Dann nenn ich das nicht 'umgehen' (im Sinne von 'halbem Workaround'), sondern der einzig richtige Weg für möglichst fehlerfreie Programmierung. 
Wenn Du was anderes meinst, dann hab ich 'umgehe wie gezeigt' nicht verstanden.

- alfred -

------------------
www.hollaus.at

GüSo
Mitglied
Elektrotechniker


Sehen Sie sich das Profil von GüSo an!   Senden Sie eine Private Message an GüSo  Schreiben Sie einen Gästebucheintrag für GüSo

Beiträge: 138
Registriert: 22.01.2009

Windows 7 Professional SP1, AutoCAD 2011, Office 2013
Windows 10, Office2019

erstellt am: 29. Jun. 2011 10:20    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Ja in dem Sinne einer richtigen, soliden Programmierung. Der saubere Weg also.

------------------
MfG

Günter

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

GüSo
Mitglied
Elektrotechniker


Sehen Sie sich das Profil von GüSo an!   Senden Sie eine Private Message an GüSo  Schreiben Sie einen Gästebucheintrag für GüSo

Beiträge: 138
Registriert: 22.01.2009

Windows 7 Professional SP1, AutoCAD 2011, Office 2013
Windows 10, Office2019

erstellt am: 29. Jun. 2011 10:32    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

In der Testroutine des Form1 habe ich doch verschiedene Ausgaben mit message box. Diese sind doch modal, d.h. sie werden angezeigt und so lange sie nicht "quittiert" sind, bleibt das Programm an der Aufrufstelle stehen und wird erst fortgesetzt, nachdem diese message box geschlossen wird. Oder liege ich falsch? Zumindestens war es bei mir bis gestern Abend so. Als ich jetzt das Debuggen nochmal mit F5 gestartet habe, erscheinen die Messageboxen nicht mehr. AutoCAD ist im Vollbildmodus auf dem Bildschirm und das Form1 wird auch angezeigt. Die msgbox-Meldungen erschienen nicht und sind auch nirgendwo zu finden. Für mich ist das unerklärlich.

------------------
MfG

Günter

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP


Ex-Mitglied

erstellt am: 29. Jun. 2011 10:42    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

kann es sein, dass die MessageBox nur hinter AutoCAD steht?
Der Code müsste ja dann auch an dem Punkt stehen, wo die MsgBox gestartet ist.

- alfred -

------------------
www.hollaus.at

GüSo
Mitglied
Elektrotechniker


Sehen Sie sich das Profil von GüSo an!   Senden Sie eine Private Message an GüSo  Schreiben Sie einen Gästebucheintrag für GüSo

Beiträge: 138
Registriert: 22.01.2009

Windows 7 Professional SP1, AutoCAD 2011, Office 2013
Windows 10, Office2019

erstellt am: 29. Jun. 2011 10:53    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Nein. Ich habe alle offenen Fenster auf die Taskleiste minimiert. Sie sind nicht zu sehen. Außerdem ist ja das Fester "Form1" meiner Testanwendung schon sichtbar. Dieses geschah "früher" erst nachdem diese Meldungen geschlossen worden waren. Genauer gesagt erscheint doch das Anwendungsfenster "Form1" erst, nachdem das "End Sub" der Form1_Load Prozedur abgearbeitet ist.

------------------
MfG

Günter

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

GüSo
Mitglied
Elektrotechniker


Sehen Sie sich das Profil von GüSo an!   Senden Sie eine Private Message an GüSo  Schreiben Sie einen Gästebucheintrag für GüSo

Beiträge: 138
Registriert: 22.01.2009

Windows 7 Professional SP1, AutoCAD 2011, Office 2013
Windows 10, Office2019

erstellt am: 29. Jun. 2011 12:12    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hi Alfred,

hier jetzt erstmal aus meiner Sicht eine

Vorläufige Zusammenfassung:
Was wir jetzt hier exerziert haben ist die Steuerung von AutoCAD über seine ActiveX-Fähigkeiten von außer her. Das steuernde Programm, in diesem Fall die "AutoCADObjekteTests.exe", läuft also außerhalb des Prozeßbereichs von AutoCAD (out-of-process). Die Voraussetzung dafür ist, daß im Projekt die Verweise auf die "AutoCAD 20xx Type Library" und "AutoCAD/ObjectDBX Common xx.x Type Library" eingetragen werden. Wenn man sich auf diese Art ein AutoCAD-ApplicationObject erstellt, dann hat man die Eigenschaften, Methoden und Ereignisse zur Verfügung, die das COM zur Verfügung stellt. Das sind aber nicht alle, die AutoCAD an sich besitzt. Wollte ich diese benutzen, dann müßte ich die .Net-API von AutoCAD benutzen. Dafür müßte ich, so die Hilfe von AutoCAD, die "AcDbMgd.dll", "AcMgd.dll" und "AcCui.dll" in die Projektverweise einbinden. Das sind die grundlegenden, für die meisten Aufgaben notwendigen, DLL`s. Es gibt also noch mehr.  Laut Autodesk ist die AutoCAD-.Net-API nur für die Verwendung in-process konstruiert. Die Verwendung des ActiveX-Servers kann dagegen sowohl in-process, als auch out-of-process erfolgen. Das "in-process" verstehe ich so, daß AutoCAD in jedem Falle gestartet sein muß und es nun mittels interner AutoCAD-Befehle (bsp.NETLOAD) eine DLL zu starten gilt, die dann innerhalb des Speicherbereichs vom AutoCAD, quasi als Teil von AutoCAD läuft. Es ist also ein Äquivalent zu vbarun, das früher das VBA-Programm abarbeitete.

Hieraus ergibt sich für mich erstmal folgende Frage:

Wie muß das besprochene Testprojekt aussehen, damit das Ergebnis eine dll wird?

------------------
MfG

Günter

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP


Ex-Mitglied

erstellt am: 29. Jun. 2011 12:40    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

>> Wie muß das besprochene Testprojekt aussehen, damit das Ergebnis eine dll wird?

Du hast doch schon das ObjectARX-Kit heruntergeladen, guck da mal in dieses Verzeichnis:
<ObjectARX-Verzeichnis>\samples\dotNet\HelloWorld

Da hast Du genau ein minimalistisches Beispiel, das zeigt, wie mit DLL umzugehen ist.
(... und da sind noch mehr Beispiele )

- alfred -

------------------
www.hollaus.at

GüSo
Mitglied
Elektrotechniker


Sehen Sie sich das Profil von GüSo an!   Senden Sie eine Private Message an GüSo  Schreiben Sie einen Gästebucheintrag für GüSo

Beiträge: 138
Registriert: 22.01.2009

Windows 7 Professional SP1, AutoCAD 2011, Office 2013
Windows 10, Office2019

erstellt am: 29. Jun. 2011 14:43    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Der Hinweis ist gut. Ich habe da jetzt erstmal Brot und es wird etwas dauern, bis die nächsten Fragen kommen werden.

Danke!

------------------
MfG

Günter

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

GüSo
Mitglied
Elektrotechniker


Sehen Sie sich das Profil von GüSo an!   Senden Sie eine Private Message an GüSo  Schreiben Sie einen Gästebucheintrag für GüSo

Beiträge: 138
Registriert: 22.01.2009

Windows 7 Professional SP1, AutoCAD 2011, Office 2013
Windows 10, Office2019

erstellt am: 30. Jun. 2011 10:39    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


GüSo_Projekt.zip

 
Hi,
ich habe mich mit dem Hinweis befaßt und habe davon ausgehend mein Testprojekt entworfen. Dieses lade ich als ZIP mit hoch.
Das geht soweit auch gut. Das Problem ist aber, daß der die DLL "DXFSTrukturierer" im falschen Verzeichnis sucht und natürlich einen Fehler bringt. Kopiere ich die DLL in das andere Verzeichnis gehts. Mein Problem ist also, wie bringe ich dem bei, im richtigen Verzeichnis zu suchen?

------------------
MfG

Günter

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP


Ex-Mitglied

erstellt am: 30. Jun. 2011 11:14    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

Im Projektmappenexplorer auf 'DXFStruktStarter' ==> rechte Maustaste ==> Eigenschaften. In diesem neuen Fenster auf Karte 'Verweise', die Zeile mit 'DXFStrukturierer' anklicken (hier siehst Du, dass die Eigenschaft 'lokale Kopie' nicht gesetzt ist, stell diese auf JA, kompiliere neu und gut ist.

- alfred -

------------------
www.hollaus.at

GüSo
Mitglied
Elektrotechniker


Sehen Sie sich das Profil von GüSo an!   Senden Sie eine Private Message an GüSo  Schreiben Sie einen Gästebucheintrag für GüSo

Beiträge: 138
Registriert: 22.01.2009

Windows 7 Professional SP1, AutoCAD 2011, Office 2013
Windows 10, Office2019

erstellt am: 30. Jun. 2011 11:50    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Gut, das Problem wäre erstmal geklärt. Ich habe aber noch eins. Ziel ist, wie gesagt, eine dll zu erstellen, die dann im AutoCAD laufen kann. Für die Lösung ihrer AUfgabe braucht die DLL einen Verzeichnispfad und einige Dateien, die der Benutzer am Programmbeginn auswählen muß. Dazu habe ich mir im Strukturiererprojekt neben dem Klassenmodul noch ein Windowsform eingefügt, das den FolderBrowserDialog und den OpenFileDialog enthält. Aber wie starte ich diese denn nun von meinem Klassenmodul aus?

------------------
MfG

Günter

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP


Ex-Mitglied

erstellt am: 30. Jun. 2011 11:59    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

>> Aber wie starte ich diese denn nun von meinem Klassenmodul aus?

Wenn Du direkt beim Laden der DLL dem User das Form zeigen willst, dann musst Du es in der Initialize-Sub machen (diese wird ausgeführt, wenn mit NETLOAD Deine DLL geladen wird).

Wenn der User irgendwann diesen Dialog starten will, dann wirst Du einen Befehl in der DLL erstellen müssen, ruft der Anwender den Befehl auf, dann bekommt er den Dialog.

Sorry, es hört sich für mich so an (bzw. die Antworten lesen sich so) als hätte ich das eigentliche Problem vielleicht nicht verstanden. 

- alfred -

------------------
www.hollaus.at

GüSo
Mitglied
Elektrotechniker


Sehen Sie sich das Profil von GüSo an!   Senden Sie eine Private Message an GüSo  Schreiben Sie einen Gästebucheintrag für GüSo

Beiträge: 138
Registriert: 22.01.2009

Windows 7 Professional SP1, AutoCAD 2011, Office 2013
Windows 10, Office2019

erstellt am: 30. Jun. 2011 12:25    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Das scheint an mir zu liegen, da ich einfach mal so drauf los gearbeitet habe.

Es gibt irgendwo auf dem Rechner ein Verzeichnis mit vielen dxf-Dateien und "Indexdateien". Diese Indexdateien, oder Teilmengen davon, müssen ausgewählt werden. Diese Indexdateien werden dann Datei für Datei geöffnet und entsprechend der in ihnen abgelegten Informationen die DXF-Dateien geöffnet, bearbeitet und anschließend unter einem neuen Namen in einem neuen Pfad gespeichert. Anschließend wird die Ausgangsdatei gelöscht. Das Ganze über alle in der Indexdatei genannten dxf-Dateien. So lief mein in grauer Vorzeit gebasteltes VBA-Programm. Dieses will ich nun mittels .Net in eine dll für die Benutzung innerhalb AutoCAD umstricken.

Meine Vorstellungen gehen dahin, daß die Klasse eigentlich nur eine Startmethode braucht, die die Auswahl der Indexdateien ermöglicht und eine Reihe von Private function, die dann in einer 2 stufigen Iteration durchlaufen werden.

------------------
MfG

Günter

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

GüSo
Mitglied
Elektrotechniker


Sehen Sie sich das Profil von GüSo an!   Senden Sie eine Private Message an GüSo  Schreiben Sie einen Gästebucheintrag für GüSo

Beiträge: 138
Registriert: 22.01.2009

Windows 7 Professional SP1, AutoCAD 2011, Office 2013
Windows 10, Office2019

erstellt am: 30. Jun. 2011 12:57    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Zitat:

Wenn Du direkt beim Laden der DLL dem User das Form zeigen willst, dann musst Du es in der Initialize-Sub machen (diese wird ausgeführt, wenn mit NETLOAD Deine DLL geladen wird).


Initialize und Finalize habe ich schon irgenwie mal gehört. Ich glaube auch im Zusammenhang mit Projektstartverhalten, bzw. Beendigungsverhalten. Momentan fehlt mir aber ein Stück Faden. Könntest Du mir bitte auf die Sprünge helfen?

------------------
MfG

Günter

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP


Ex-Mitglied

erstellt am: 30. Jun. 2011 13:04    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

wenn Du HELLO-WORLD aus dem ObjectARX-Kit mal angesehen hast (siehe Beitrag oben), da gibt es:

Code:
Namespace HelloWorld
    Public Class HelloWorldApp
        Implements Autodesk.AutoCAD.Runtime.IExtensionApplication

        Public Sub Initialize() Implements Autodesk.AutoCAD.Runtime.IExtensionApplication.Initialize
            [...]


Und von diesem 'Initialize ... Implements IExtensionApplication.Initialize' sprach ich. Das wird ausgeführt, wenn Du mit NETLOAD Deine App ins AutoCAD lädst.

- alfred -

------------------
www.hollaus.at

GüSo
Mitglied
Elektrotechniker


Sehen Sie sich das Profil von GüSo an!   Senden Sie eine Private Message an GüSo  Schreiben Sie einen Gästebucheintrag für GüSo

Beiträge: 138
Registriert: 22.01.2009

Windows 7 Professional SP1, AutoCAD 2011, Office 2013
Windows 10, Office2019

erstellt am: 30. Jun. 2011 15:37    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Jetzt habe ich das Problem wieder. Nachdem ich nun in Analogie zu "Hello Wolrd" das Statement Implements Autodesk.AutoCAD...... und die Sub Initalize()und Terminate eingefügt habe kommt die Fehlermeldung wieder. Die Eigenschaft LokaleKopie steht aber auf wahr. Kommentiere ich diese 3 Dinge aus, dann geht es wieder.

------------------
MfG

Günter

PS: Ist eine andere Datei gewesen. Am besten diese Mitteilung löschen, ist Unsinn

[Diese Nachricht wurde von GüSo am 30. Jun. 2011 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

GüSo
Mitglied
Elektrotechniker


Sehen Sie sich das Profil von GüSo an!   Senden Sie eine Private Message an GüSo  Schreiben Sie einen Gästebucheintrag für GüSo

Beiträge: 138
Registriert: 22.01.2009

Windows 7 Professional SP1, AutoCAD 2011, Office 2013
Windows 10, Office2019

erstellt am: 30. Jun. 2011 16:24    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Eine letzte Frage für heute:
Ist denn der Weg, wie er mir vorschwebte, überhaupt gangbar oder sinnvoll? Ich meine ein Startprojekt zu verwenden, um von dem aus die Klasse zu starten und schrittweise aufzubauen.

------------------
MfG

Günter

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP


Ex-Mitglied

erstellt am: 30. Jun. 2011 22:14    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

>> Ist denn der Weg, wie er mir vorschwebte, überhaupt gangbar oder sinnvoll?

Um da eine Antwort zu geben, weiss ich von Deinem Projekt zu wenig.
Wobei ich mir die ganze Zeit die Frage stelle, wozu das EXE, das AutoCAD aufruft, gebraucht wird. Aber Du wirst Deinen Grund dafür haben.

Sorry, - alfred -

------------------
www.hollaus.at

GüSo
Mitglied
Elektrotechniker


Sehen Sie sich das Profil von GüSo an!   Senden Sie eine Private Message an GüSo  Schreiben Sie einen Gästebucheintrag für GüSo

Beiträge: 138
Registriert: 22.01.2009

Windows 7 Professional SP1, AutoCAD 2011, Office 2013
Windows 10, Office2019

erstellt am: 04. Jul. 2011 12:39    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hi,

Was heißt Projekt? Ein Projekt in dem engeren Sinne habe ich derzeit nicht. Ich habe mir nur die Aufgabe gestellt, mich in die .Net-Programmierung im Allgemeinen und AutoCAD im Besonderen einzuarbeiten. Wie ich bereits erwähnte, existieren, historisch gewachsen, mehrere kleine Hilfsprogramme, die ich jetzt mal als Anfangspunkt gewählt habe. Die Frage, ob denn der Weg richtig sei, bezieht sich auf das handwerkliche Vorgehen bei der Erstellung und Erprobung einer dll und nicht darauf, ob dll oder exe. Ich dächte, daß ich das schon gesagt habe, daß ich nicht auf der Methode "exe" beharren will. Die Sache mit dem Startprojekt, dann dll-Projekt aufrufen und fertig ist der Lack ist doch komplexer und umfangreichenr als ich annahm. Ich werde jetzt erstmal weiter an diesem Thema experimentieren und dann weiter sehen.

------------------
MfG

Günter

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz