Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Rund um AutoCAD
  Datei öffnen, Layout anzeigen

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:  Datei öffnen, Layout anzeigen (3914 mal gelesen)
jupa
Ehrenmitglied V.I.P. h.c.
Ruheständler


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

Beiträge: 6050
Registriert: 16.09.2004

Windows 10 64bit, ACAD Rel. 14 - ACAD 2023

erstellt am: 09. Sep. 2010 13: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

Hallo zusammen,

wie ist es möglich, aus einer Drittanwendung heraus (konkret MS Access) eine AutoCAD-Zeichnung zu öffnen !und! dabei auch gleich ein bestimmtes Layout dieser Zeichnung anzeigen zu lassen?


jupa

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

CADmium
Moderator
Maschinenbaukonstrukteur




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

Beiträge: 13508
Registriert: 30.11.2003

Hinweis: Meine Mitarbeit auf CAD.DE ist fakultativ, unentgeltlich und beruht nur auf einem ausgeprägtem Helfersyndrom.

erstellt am: 09. Sep. 2010 13: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 Nur für jupa 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von jupa:
Hallo zusammen,

wie ist es möglich, aus einer Drittanwendung heraus (konkret MS Access) eine AutoCAD-Zeichnung zu öffnen !und! dabei auch gleich ein bestimmtes Layout dieser Zeichnung anzeigen zu lassen?


jupa


dem open-Befehl kann man das nicht direkt mitgeben .. du könntest im acad aber (setvar "CTAB" "LAYOUTNAME") absetzen . oder wenn du acad neu startest ddie dwg und ein Script ( mit ctab ) als Parameter mitgeben ...

------------------
  - Thomas -          
"Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben."

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

jupa
Ehrenmitglied V.I.P. h.c.
Ruheständler


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

Beiträge: 6050
Registriert: 16.09.2004

Windows 10 64bit, ACAD Rel. 14 - ACAD 2023

erstellt am: 09. Sep. 2010 17:26    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

Danke für die Antwort. Aber wie sag ich's nun meinem Kinde? Meine VBA-Kenntnisse (und darauf läuft es ja sicherlich hinaus) streben leider gegen Null. Wären vielleicht ein paar Codezeilen als Beispiel möglich?

TIA
jupa

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


Ex-Mitglied

erstellt am: 09. Sep. 2010 17:37    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

zeig mal den Code, mit dem Du AutoCAD aus MSAccess startest, ich setz Dir den Rest ein, wenn ich Deines verstehe.

- alfred -

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

jupa
Ehrenmitglied V.I.P. h.c.
Ruheständler


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

Beiträge: 6050
Registriert: 16.09.2004

Windows 10 64bit, ACAD Rel. 14 - ACAD 2023

erstellt am: 10. Sep. 2010 08: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

Im einfachsten Fall könnte das wohl so aussehen:

Private Sub Befehl0_Click()

    Call Shell("""D:\Programme\Autodesk\AutoCAD 2009\acad.exe""", 1)

End Sub


Den Dateinamen und das gewünsche Layout wöllte ich gern als Parameter übergeben, aber was kann der shell-Befehl mit diesen Parametern anfangen?

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


Ex-Mitglied

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

Hi,

nee, so nicht, dieser Weg ist ein sehr übler Weg, denn Du hast AutoCAD zwar gestartet, aber nicht an der Leine. Sprich nachdem das AutoCAD gestartet ist, obliegt es nicht mehr Deiner Kontrolle. Dazu kommt, dass Du mit diesem Weg AutoCAD mehrfach startest, wenn Du mehrere DWG's aus Deinem MSAccess öffnest ==> das macht wenig Sinn und ist speichermordend.

Willst Du trotzdem bei diesem Weg bleiben, dann guck Dir dieses an: >>>Starten von AutoCAD mit Script<<<, da kannst Du zuerst eine Scriptdatei schreiben (aus Deinem MSAccess-Makro) und dann AutoCAD mit diesem Script starten.

Besser (und stabiler, weil mehr Kontrolle) hast Du es, wenn Du über den ActiveX-Server von AutoCAD gehst, also ähnlich wie:

Code:
On Error Resume Next
Dim tAcadApp as AcadApplication
Set tAcadApp = GetObject(,"AutoCAD.Application")  'verbindet sich mit AutoCAD, wenn dieses schon laeuft
If tAcadApp is Nothing then
  'dann laeuft noch keine AutoCAD-Session ==> also eine starten
  set tAcadApp = CreateObject("AutoCAD.Application")
end if
if tAcadApp is Nothing then
  'dann Fehlermeldung ausgeben, AutoCAD kann nicht gestartet werden
else
  tAcadApp.Visible = true
  '..... Dein Code, jetzt hast Du AutoCAD in der Hand
end if

HTH, - alfred -

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

jupa
Ehrenmitglied V.I.P. h.c.
Ruheständler


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

Beiträge: 6050
Registriert: 16.09.2004

Windows 10 64bit, ACAD Rel. 14 - ACAD 2023

erstellt am: 10. Sep. 2010 17:29    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

Danke für Deine Bemühungen. Ich muß aber wohl erst mal meine Hausaufgaben machen.
Erstens läuft der code bei mir nicht: Kompilierfehler, daß benutzerdefinierter Typ (vermutlich der Typ AcadApplication ?) nicht definiert sei.
Zweitens vermisse ich nach meinem Verständnis die Stelle, an der ich dem Programm  mitteile, wo denn eigentlich nach dem zu startenden AutoCAD gesucht werden soll. (Diese Frage drängt sich bei mir insbesonders deshalb auf, da ich mehrere AutoCAD-Versionen auf meinem Rechner installiert habe. Mit welchem soll das Programm nun kommunizierren?). Vermutlich habe ich das ganza überhaupt noch nicht verstanden - also zurück in die Vorschulklasse ;-(

jupa

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


Ex-Mitglied

erstellt am: 10. Sep. 2010 17:35    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

Du kannst auch statt AcadApplication die Deklaration als Object machen. Das bringt mal den Fehler beim Kompilieren weg. Später wirst Du dann unter Extras ==> Verweise die Acad-TypeLibrary hinzufügen, weil der Code dann leichter zu schreiben ist, aber auch leider nicht mehr AutoCAD-Versions-neutral.

Und die Version kannst Du indirekt angeben bei GetObject bzw. CreateObject, hier kannst Du z.B.
AutoCAD.Application.18.1
angeben, wenn Du willst, dass AutoCAD 2011 startet.

- alfred -

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

jupa
Ehrenmitglied V.I.P. h.c.
Ruheständler


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

Beiträge: 6050
Registriert: 16.09.2004

Windows 10 64bit, ACAD Rel. 14 - ACAD 2023

erstellt am: 10. Sep. 2010 18:35    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

Danke für Deine unendliche Geduld. Das funktioniert nun schon soweit, daß ich jede installierte AutoCAD-Version starten kann. Wenn Du mir jetzt noch verrätst, wie ich mich nun mit AutoCAD "unterhalten" kann (wo findet man die ganzen Objekte, Methoden, Eigenschaften?), vielleicht am eingangs genannten Beispiel, ein bestimmtes Layout einer bestimmten Datei zu öffnen? (BTWBy the way (So nebenbei bemerkt): Verweis auf die AutoCAD-Typbibliothek ist inzwischen eingebunden)

jupa

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


Ex-Mitglied

erstellt am: 10. Sep. 2010 18:48    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

das Objekt tAcadApp ist jetzt Dein ActiveX-Server, den Du unterhalten kannst, über den Du verfügen kannst, sogar (ganz entgegen der feinen Art) dem Du Deine gesamte Meinung aufzwingen kannst.

Als solches steht Dur tAcadApp.Documents zur Verfügung und hier die Methode .Open, um eine Datei zu öffnen.
Danach (nach dem Öffnen) hast Du auch schon das aktuelle Document (DWG-File) direkt vor dem Schuh und ein Kick in die Richtung <F1> (für Hilfe) zeigt Dir dann auch gleich die möglichen Zugriffe und Eigenschaften, die für so ein Objekt möglich sind. Also

Code:
dim tAcadDoc as AcadDocument
Set tAcadDoc = tAcadApp.Documents.Open("C:\TEMP\XX.DWG")  'hier natürlich Dein DWG-Name
tAcadDoc.Active<<<<<und genau hier hast DU schon eine Liste von Methoden

oder
tAcadDoc.SendCommand(.... <<<<<hier Deine Befehle, wenn Du mit diesen besser kannst, um das Layout zu aktivieren.


Viel Erfolg, - alfred -

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

jupa
Ehrenmitglied V.I.P. h.c.
Ruheständler


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

Beiträge: 6050
Registriert: 16.09.2004

Windows 10 64bit, ACAD Rel. 14 - ACAD 2023

erstellt am: 10. Sep. 2010 19: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

Nochmals herzlichen Dank. Mit so viel Input dürfte mein Wochenende nun voll ausgebucht sein.

jupa

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

jupa
Ehrenmitglied V.I.P. h.c.
Ruheständler


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

Beiträge: 6050
Registriert: 16.09.2004

Windows 10 64bit, ACAD Rel. 14 - ACAD 2023

erstellt am: 12. Sep. 2010 10:14    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

Irgendwo hab' ich noch 'nen Denkfehler. Mein aktueller Code:

Dim tAcadApp As Object
Dim tAcadDoc As AcadDocument

Set tAcadApp = GetObject(, "AutoCAD.Application.18.1")
If tAcadApp Is Nothing Then
  Set tAcadApp = CreateObject("AutoCAD.Application.18.1")
End If
If tAcadApp Then
  tAcadApp.Visible = True
  Set tAcadDoc = tAcadApp.Documents.Open("D:\test.dwg")
  If tAcadDoc.Active = True Then 'nun ein paar Varianten
    'tAcadDoc.SendCommand ("setvar ctab layout1" + Chr(13)) ' so geht's, ist aber sicherlich wenig elegant.
    Set tAcadDoc.ActiveLayout = "Layout1"  'wechselt nicht wie ich erwarte zum Layout
    'tAcadDoc.ActiveLayout = "Layout1"  'Fehlermeldung Typunverträglichkeit
   
  End If
End If


Die Zeile mit SendCommand funktioniert, gefällt mir aber nicht.
Mit Set tAcadDoc.ActiveLayout = "Layout1" passiert nichts. Ich hoffte, daß man damit die Eigenschaft welches das aktuelle Layout sei auf einen beliebigen Wert setzen könne. ("Layout1" existiert natürlich).
Wildes Probieren: tAcadDoc.ActiveLayout = "Layout1" scheitert an Typunverträglichkeit.
Wie gehts denn nun richtig?

Any help would be very appreciated.

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


Ex-Mitglied

erstellt am: 12. Sep. 2010 10:27    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

zuerst mal: diese Zeile ist fragwürdig:
If tAcadApp Then
...denn tAcadApp ergibt kein True/False Resultat, besser:
If (not (tAcadApp is Nothing)) Then

Und zu dem eigentlichen: tAcadDoc.ActiveLayout ist nicht vom Typ String, also kann auch kein String zugewiesen werden, Ersatz dafür (ohne Prüfung, ob das Layout überhaupt existiert):

Code:
tAcadDoc.ActiveLayout = tAcadDoc.Layouts("Layout1")

HTH, - alfred -

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

[Diese Nachricht wurde von a.n. am 12. Sep. 2010 editiert.]

jupa
Ehrenmitglied V.I.P. h.c.
Ruheständler


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

Beiträge: 6050
Registriert: 16.09.2004

Windows 10 64bit, ACAD Rel. 14 - ACAD 2023

erstellt am: 12. Sep. 2010 11:00    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,
zum Glück haben auch andere bei diesem schönen Wetter nichts besseres zu tun als am Rechner zu sitzen. Ist ja eine Super-Reaktionszeit ;-)
Nun klappt's aber endlich (unb bei mir fallen auch langsam die Groschen). Nochmals danke.

Schönes Wochenende

jupa

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

jupa
Ehrenmitglied V.I.P. h.c.
Ruheständler


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

Beiträge: 6050
Registriert: 16.09.2004

Windows 10 64bit, ACAD Rel. 14 - ACAD 2023

erstellt am: 16. Sep. 2010 08:31    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,

nun muß ich noch mal nerven:

Folgender Codeschnipsel:

Dim tAcadApp As Object
Dim tAcadDoc As Object

Set tAcadApp = GetObject(, "AutoCAD.Application.17.2")
If tAcadApp Is Nothing Then
  Set tAcadApp = CreateObject("AutoCAD.Application.17.2")
End If
If (Not (tAcadApp Is Nothing)) Then
  tAcadApp.Visible = True
  Set tAcadDoc = tAcadApp.Documents.Open("D:\NichtExistent.DWG")
  If tAcadDoc.Active = True Then
    ...
  Else
    MsgBox ("Datei nicht gefunden")
  End If

Ich versuche, eine Datei zu öffnen, die es gar nicht gibt. Trotzdem läuft das Programm in den then-Zweig von "If tAcadDoc.Active = True". Falls es D:\NichtExistent.dwg gar nicht gibt hätte ich aber erwartet, daß t.AcadDoc.Active den Wert False hat. Wo ist denn nun schon wieder mein Denkfehler?
Die AutoCAD-Hilfe gibt leider auch keine Auskunft darüber, was passiert, wenn man mit der Open-Methode ein Objekt (Zeichnung) öffnen will, das gar nicht vorhanden ist.

jupa

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


Ex-Mitglied

erstellt am: 16. Sep. 2010 08:39    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

ich vermute mal, dass Du  On Error Resume Next  in Deinem Code enthalten hast und dann läuft der Code halt weiter, wenn ein Fehler auftritt, in diesem Fall bist aber Du verantwortlich für die Behandlung von Fehlern (dem Programm hast Du die Behandlung ja entzogen )!

Also z.B.:

Code:
On Error Resume Next
Err.Clear
Set tAcadDoc = tAcadApp.Documents.Open("D:\NichtExistent.DWG")
'jetzt kannst Du auf zwei Arten prüfen
'if tAcadDoc is Nothing then      'dann wüsstest Du, dass da nix drin steht, oder
if Err.Number <> 0 Then
  'jetzt weisst Du, dass seit dem letzten Err.Clear ein Fehler aufgetreten ist

Kleiner ergänzender Hinweis dazu:  Err.Clear  musst Du nicht direkt nach  On Error Resume Next  setzen (denn  On Error... setzt das Fehlerstatusflag implizit zurück), aber mitten im Code ist es immer dann sinnvoll, wenn die nächste Zeile 'Gefahrenpotential' in sich birgt.

- alfred -

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

jupa
Ehrenmitglied V.I.P. h.c.
Ruheständler


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

Beiträge: 6050
Registriert: 16.09.2004

Windows 10 64bit, ACAD Rel. 14 - ACAD 2023

erstellt am: 16. Sep. 2010 10:19    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

Bingo!

Was würde ich nur ohne dieses Forum tun ...

Danke
jupa

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


Ex-Mitglied

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

Hi,

>> Was würde ich nur ohne dieses Forum tun ...

In das >>>Forum für AutoCAD-VBA<<< wechseln 

- alfred -

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

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