| |
| 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 - DXF automatisch öffnen - Strukturfehler abfangen (1478 mal gelesen)
|
tappenbeck Mitglied Vermessungsingenieur
Beiträge: 1213 Registriert: 30.05.2002 AutoCAD (Map)2019, Topobase, MapEdit, Lisp, .vb.net
|
erstellt am: 26. Okt. 2017 07:48 <-- editieren / zitieren --> Unities abgeben:
Moin! ich habe da eine Problematik und vielleicht fällt einem von Euch spontan ein Ansatz dazu ein. Folgende Situation: Eine DXF-Datei soll geöffnet werden. Im Prinzip einfach – ist auch schon realisiert. Nun aber folgendes Problem: Die DXF-Datei hat in der Struktur einen Fehler ! AutoCAD informiert in der Befehlszeile über diesen Fehler und dann soll der Anwender RETURN drücken. Das kann man auch innerhalb der durch VB aufgerufenen Funktion machen. Mein Ziel: Reaktion auf diesen Fehler und weitere Steuerung über vb.net. Natürlich sollte die Fehlermeldung ausgelesen werden. Meine Gedankenansätze • Den Inhalt der Befehlszeile kann man ggf. irgendwie auslesen. • Überwachung des Texthinhaltes der Befehlszeile und Prüfung auf Kennworte • Öffnungsprozess abbrechen (wie?) • Vielleicht kommen auch noch Reaktoren ins Spiel (welche?) Hat einer eine Idee oder einen Lösungsvorschlag? Gruß Jan
------------------ jan :-) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Brischke Moderator CAD on demand GmbH
Beiträge: 4171 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools
|
erstellt am: 27. Okt. 2017 11:48 <-- editieren / zitieren --> Unities abgeben: Nur für tappenbeck
Zitat: Original erstellt von tappenbeck: ... Im Prinzip einfach – ist auch schon realisiert. ...
Wie öffnest du die DXF-Datei? Vielleicht macht es ja Sinn, die DXF-Datei zunächst in den Speicher zu laden (ReadDwgFile / DxfIn ?? ), und die dabei auftretenden Fehler abzufangen? Grüße! Holger
------------------ Holger Brischke CAD on demand GmbH Individuelle Lösungen von Heute auf Morgen.
defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme!
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tappenbeck Mitglied Vermessungsingenieur
Beiträge: 1213 Registriert: 30.05.2002 AutoCAD (Map)2019, Topobase, MapEdit, Lisp, .vb.net
|
erstellt am: 27. Okt. 2017 12:11 <-- editieren / zitieren --> Unities abgeben:
hi ! ich mache das mit Code: Dim acDoc As Autodesk.AutoCAD.ApplicationServices.Document = Autodesk.AutoCAD.ApplicationServices.DocumentCollectionExtension.Open(acDocMgr, NewFileDXF)
Den anderen Weg kenne ich nicht ! Gruß Jan ------------------ jan :-) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Brischke Moderator CAD on demand GmbH
Beiträge: 4171 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools
|
erstellt am: 27. Okt. 2017 12:19 <-- editieren / zitieren --> Unities abgeben: Nur für tappenbeck
Zitat: Original erstellt von tappenbeck: ... Den anderen Weg kenne ich nicht ! ...
Und nun? Die beiden o.g. Methoden hängen am Database-Objekt - Leere/neue Database erzeugen, und dann schauen, was beim Import passiert. (ungetesteter Ansatz) Grüße! Holger ------------------ Holger Brischke CAD on demand GmbH Individuelle Lösungen von Heute auf Morgen.
defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme!
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tappenbeck Mitglied Vermessungsingenieur
Beiträge: 1213 Registriert: 30.05.2002 AutoCAD (Map)2019, Topobase, MapEdit, Lisp, .vb.net
|
erstellt am: 27. Okt. 2017 12:22 <-- editieren / zitieren --> Unities abgeben:
|
tappenbeck Mitglied Vermessungsingenieur
Beiträge: 1213 Registriert: 30.05.2002 AutoCAD (Map)2019, Topobase, MapEdit, Lisp, .vb.net
|
erstellt am: 10. Nov. 2017 07:46 <-- editieren / zitieren --> Unities abgeben:
Moin! das hat mit folgendem Code soweit geklappt. Code:
''' <summary> ''' Prüfen, ob eine DXF-Datei funktioniert ''' </summary> ''' <param name="Path">zu prüfende Datei</param> ''' <param name="Log">Log für eine Rückmeldung</param> ''' <param name="MessageByError"></param> ''' <returns>-1 ... nicht vorhanden oder LEERSTRING / 0 ... keine gültige Datei / 1 ... OK</returns> ''' <remarks></remarks> Public Function CheckDxfFile(Path As String, Optional ByRef Log As String = "", Optional ByVal MessageByError As String = "") As Integer If Path.Length = False Then Log += "Fehler beim DXF-Test - KEINE Datei angegeben!" & vbCrLf If MessageByError.Length > 0 Then Log += "Info:= " & MessageByError & vbCrLf Return -1 End If If System.IO.File.Exists(Path) = False Then Log += "Fehler beim DXF-Test - amgegebene Datei nicht gefunden!" & vbCrLf If MessageByError.Length > 0 Then Log += "Info:= " & MessageByError & vbCrLf Log += "Path:= " & Path & vbCrLf Return -1 End If Try Using dwg As Database = New Database(False, False) dwg.ReadDwgFile(Path, System.IO.FileShare.Read, True, Nothing) End Using Catch ex As Exception Log += "Fehler beim DXF-Test" & vbCrLf & _ "File:= " & Path & vbCrLf & _ ex.ToString & vbCrLf If ex.ToString.ToUpper.IndexOf("ebaddwgheader") Then Log += "Vermutlich Fehler in DXF-Struktur" & vbCrLf Dim commandline As System.Collections.Generic.List(Of String) Dim TempT As String ' Get most recent last 10 lines of command lines commandline = Autodesk.AutoCAD.Internal.Utils.GetLastCommandLines(10, True) Log += "---- Inhalt der Befehlszeile ---------------------------------------" & vbCrLf Dim Lines2Log As Integer = commandline.Count If Lines2Log > 30 Then Lines2Log = 30 Log += "**** gekürzt!!! ****" & vbCrLf End If For I As Integer = 0 To Lines2Log - 1 TempT += Trim(commandline.Item(I)) & vbCrLf Next Log += TempT Log += "---- Inhalt der Befehlszeile ENDE ----------------------------------" & vbCrLf & vbCrLf Return 0 End Try Return 1 End Function
Im Fall eines Fehlers lese ich auch das Befehlszeilenfenster aus - leider wird die angezeigte Fehlermeldung beim öffnen der fehlerhaften DXF-Datei Zitat:
... ungültige oder unvollständige DXF-Eingabe -- Zeichnung abgebrochen Drücken Sie die EINGABETASTE, um fortzufahren
nicht in der Befehlszeile dokumentiert. Hat einer von Euch noch eine Idee, wie man an diese Meldung gelangen kann? Gruß Jan ------------------ jan :-) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |