Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  AutoCAD ObjectARX und .NET
  Fehler Common Language

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:  Fehler Common Language (2640 mal gelesen)
kaifreeman
Mitglied
Projektleiter


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

Beiträge: 45
Registriert: 29.08.2006

Pentium 4 2*3,2 GHz 2,5 GB RAM NVIDIA Quadro FX1400 Grafikkarte.
ProE 2001 und WF2 M191

erstellt am: 25. Jun. 2012 13:15    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

Mahlzeit,

Ich bin gerade an einem kleinen Tool dran das die Version einer AutoCAD Datei abfragt (die Code Snipplets hab ich vom Autodesk Support bekommen)

Im Kern geht es eigentlich darum eine Datei ohne öffnen von Autodesk auf die Version abzuprüfen, das ganze soll nichts anderes sein wie ein einlesen der Datei in eine AutoCAD "Datenbank" und dann Abfrage der Property OriginalFileVersion.

Hier mein Code:

Code:

        Public Function acd_version(ByVal v_filepath As String) As Boolean
            'Dateipfad richtig übergeben?
            If v_filepath = Nothing Or v_filepath = "" Then Return False
            'Endung *.dwg richtig (simple Stringabfrage)
            If Not v_filepath.EndsWith(".dwg") Then Return False
            'Prüfen ob Datei exisitert:
            If Not System.IO.File.Exists(v_filepath) Then Return False

            Dim v_db As Autodesk.AutoCAD.DatabaseServices.Database = New Database(False, False)

            Try
                v_db.ReadDwgFile(v_filepath, IO.FileShare.Read, True, "")
            Catch
                MsgBox("Fehler beim lesen der dwg")
                Return False
            End Try

            Dim v_vers as Autodesk.AutoCAD.DatabaseServices.DwgVersion = v_db.OriginalFileVersion

            Select Case v_version
                Case ...
                case else
                     msgbox "blabla"
            End Select

            Return True


            'Catch ex As System.Exception
            '    Return False
            'End Try

            Return False
        End Function


Eigentlich funktioniert der Code tadellos er wird bis zum Abfragen der OriginalFileversion Eigenschaft ausgeführt aber sobald er diese erreicht wird eine Fehlermeldung:
System.InvalidProgramException wurde nicht behandelt.
  Message=Die Common Language Runtime hat ein ungültiges Programm gefunden.
  Source=Acdbmgd
  StackTrace:
       bei Autodesk.AutoCAD.DatabaseServices.Database.get_OriginalFileVersion()
       bei ACAD_Vercheck_GUI.ACAD_Verscheck.ACAD_Verscheck_APP.acd_version(String v_filepath) in C:\Documents and Settings\paps\my documents\visual studio 2010\Projects\ACAD_Vercheck_GUI\ACAD_Vercheck_GUI\ACAD_Verscheck_APP.vb:Zeile 51.
       bei ACAD_Vercheck_GUI.Form1.cmd_check_Click(Object sender, EventArgs e) in C:\Documents and Settings\paps\my documents\visual studio 2010\Projects\ACAD_Vercheck_GUI\ACAD_Vercheck_GUI\Form1.vb:Zeile 17.
       bei System.Windows.Forms.Control.OnClick(EventArgs e)
       bei System.Windows.Forms.Button.OnClick(EventArgs e)
       bei System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
       bei System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
       bei System.Windows.Forms.Control.WndProc(Message& m)
       bei System.Windows.Forms.ButtonBase.WndProc(Message& m)
       bei System.Windows.Forms.Button.WndProc(Message& m)
       bei System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
       bei System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
       bei System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
       bei System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
       bei System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
       bei System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
       bei System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
       bei Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.OnRun()
       bei Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.DoApplicationModel()
       bei Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.Run(String[] commandLine)
       bei ACAD_Vercheck_GUI.My.MyApplication.Main(String[] Args) in 17d14f5c-a337-4978-8281-53493378c1071.vb:Zeile 81.
       bei System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
       bei System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
       bei Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
       bei System.Threading.ThreadHelper.ThreadStart_Context(Object state)
       bei System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
       bei System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
       bei System.Threading.ThreadHelper.ThreadStart()
  InnerException:

Meine Recherchen im Internet haben nichts gebracht  

Die ObjectARX Version ist brandaktuell, das erstellte Projekt ist eine Windows Formsanwendung mit einem Formular mit 2 Knöpfen einer zum ausuchen der Datei und einer zum anwerfern der Routine.

Ich könnte ja noch verstehen wenn er den Fehler bekommt wenn der Readdwg ausführt aber danach??
Ich hoffe ihr könnt mir weiterhelfen.

Danke  


------------------
mfG.
Stephan Papst

[Diese Nachricht wurde von kaifreeman am 25. Jun. 2012 editiert.]

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

Brischke
Moderator
CAD on demand GmbH




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

Beiträge: 4171
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools

erstellt am: 25. Jun. 2012 14: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 Nur für kaifreeman 10 Unities + Antwort hilfreich

... öffne doch einfach die DwgDatei als Stream und lies die ersten Zeichen aus. Diese enthalten die Dateiversion.

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

kaifreeman
Mitglied
Projektleiter


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

Beiträge: 45
Registriert: 29.08.2006

Pentium 4 2*3,2 GHz 2,5 GB RAM NVIDIA Quadro FX1400 Grafikkarte.
ProE 2001 und WF2 M191

erstellt am: 25. Jun. 2012 14: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

ja das wäre die simpelste Methode ich hab nur leider das Problem das ich AutoCAD M 2012 von AutoCAD 2010 M unterscheiden muss und die haben beide den selben String AC1024

Ich hab das jetzt Tagelang mit der Supporthotline diskutiert ^^
das Problem ist das unser Serverseitiges AutoCAD eine Mech 2010 Version ist und wir aber Standorte mit 2012 haben, diese speichern zwar auf 2010 zurück aber Menschen machen Fehler daher möchten wir den Prozess besser absichern und vor dem öffnen auf dem Server prüfen ob es sich wirklich um eine 2010er Version handelt und lt. Subscription kann ich das mit diesem Code leider krieg ich die Datenbank aufgrund des o.a. Fehlers nicht geöffnet ich krieg auch den gleichen Fehler wenn ich eine Transaction durchführen möchte oder eben eine andere Eigenschaft der Klasse abfragen will.

Anscheinend gibt es ein Problem mit der acdbmgd.dll ich hab sogar schon das Framework umstellen versucht alles ohne Erfolg 

------------------
mfG.
Stephan Papst

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

Brischke
Moderator
CAD on demand GmbH




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

Beiträge: 4171
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools

erstellt am: 25. Jun. 2012 14: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 Nur für kaifreeman 10 Unities + Antwort hilfreich

... du hast doch sicher die Acad-Bibliotheken eingebunden. Schau mal in den Eigenschaften, ob du diese beim kompilieren mit in das Ausgabeverzeichnis kopierts. Das darf man mit den Acad-Bibos nicht machen.

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

kaifreeman
Mitglied
Projektleiter


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

Beiträge: 45
Registriert: 29.08.2006

Pentium 4 2*3,2 GHz 2,5 GB RAM NVIDIA Quadro FX1400 Grafikkarte.
ProE 2001 und WF2 M191

erstellt am: 25. Jun. 2012 15:10    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

Also eingebunden ist:

Code:

ACDbMgd
ACMgd

Code:

Option Explicit On

Imports System
Imports System.IO
Imports System.Type
Imports System.CLSCompliantAttribute
Imports System.Reflection
Imports System.Runtime.InteropServices

Imports Autodesk.AutoCAD.Runtime
Imports Autodesk.AutoCAD.ApplicationServices
Imports Autodesk.AutoCAD.DatabaseServices

<Assembly: ExtensionApplication(GetType(ACAD_Verscheck.ACAD_Verscheck_APP))>


Die Libs sind beide Version 18.2 und lokale Kopie steht auf "True" und der Pfad zur ObjectARX Installation ist übernommen und eingetragen habe das auch mit dem "HalloWelt" Programm der Beispielsbibliothek verglichen

------------------
mfG.
Stephan Papst


Nachtrag: habe versucht die ACAD Dlls auf Lokale Kopie "False" zu setzen dann kommt direkt diese Fehlermeldung:

Code:

System.IO.FileNotFoundException wurde nicht behandelt.
  FileName=Acdbmgd, Version=18.2.0.0, Culture=neutral, PublicKeyToken=null
  FusionLog==== Zustandsinformationen vor Bindung ===
LOG: Benutzer =
LOG: DisplayName = Acdbmgd, Version=18.2.0.0, Culture=neutral, PublicKeyToken=null
(Fully-specified)
LOG: Appbase = file:///C:/Documents and Settings/paps/my documents/visual studio 2010/Projects/ACAD_Vercheck_GUI/ACAD_Vercheck_GUI/bin/Debug/
LOG: Ursprünglicher PrivatePath = NULL
Aufruf von Assembly : ACAD_Vercheck_GUI, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null.
===
LOG: Diese Bindung startet im default-Load-Kontext.
LOG: Die Anwendungskonfigurationsdatei wird verwendet: C:\Documents and Settings\paps\my documents\visual studio 2010\Projects\ACAD_Vercheck_GUI\ACAD_Vercheck_GUI\bin\Debug\ACAD_Vercheck_GUI.vshost.exe.Config
LOG: Die Computerkonfigurationsdatei von C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\config\machine.config wird verwendet.
LOG: Die Richtlinie wird derzeit nicht auf den Verweis angewendet (private, benutzerdefinierte, teilweise oder pfadbasierte Assemblybindung)
LOG: Download von neuem URL file:///C:/Documents and Settings/paps/my documents/visual studio 2010/Projects/ACAD_Vercheck_GUI/ACAD_Vercheck_GUI/bin/Debug/Acdbmgd.DLL.
LOG: Download von neuem URL file:///C:/Documents and Settings/paps/my documents/visual studio 2010/Projects/ACAD_Vercheck_GUI/ACAD_Vercheck_GUI/bin/Debug/Acdbmgd/Acdbmgd.DLL.
LOG: Download von neuem URL file:///C:/Documents and Settings/paps/my documents/visual studio 2010/Projects/ACAD_Vercheck_GUI/ACAD_Vercheck_GUI/bin/Debug/Acdbmgd.EXE.
LOG: Download von neuem URL file:///C:/Documents and Settings/paps/my documents/visual studio 2010/Projects/ACAD_Vercheck_GUI/ACAD_Vercheck_GUI/bin/Debug/Acdbmgd/Acdbmgd.EXE.

  Message=Die Datei oder Assembly Acdbmgd, Version=18.2.0.0, Culture=neutral, PublicKeyToken=null oder eine Abhängigkeit davon wurde nicht gefunden. Das System kann die angegebene Datei nicht finden.
  Source=ACAD_Vercheck_GUI
  StackTrace:
       bei ACAD_Vercheck_GUI.ACAD_Verscheck.ACAD_Verscheck_APP.acd_version(String v_filepath)
       bei ACAD_Vercheck_GUI.Form1.cmd_check_Click(Object sender, EventArgs e) in C:\Documents and Settings\paps\my documents\visual studio 2010\Projects\ACAD_Vercheck_GUI\ACAD_Vercheck_GUI\Form1.vb:Zeile 17.
       bei System.Windows.Forms.Control.OnClick(EventArgs e)
       bei System.Windows.Forms.Button.OnClick(EventArgs e)
       bei System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
       bei System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
       bei System.Windows.Forms.Control.WndProc(Message& m)
       bei System.Windows.Forms.ButtonBase.WndProc(Message& m)
       bei System.Windows.Forms.Button.WndProc(Message& m)
       bei System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
       bei System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
       bei System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
       bei System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
       bei System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(Int32 dwComponentID, Int32 reason, Int32 pvLoopData)
       bei System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
       bei System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
       bei System.Windows.Forms.Application.Run(ApplicationContext context)
       bei Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.OnRun()
       bei Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.DoApplicationModel()
       bei Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.Run(String[] commandLine)
       bei ACAD_Vercheck_GUI.My.MyApplication.Main(String[] Args) in 17d14f5c-a337-4978-8281-53493378c1071.vb:Zeile 81.
       bei System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args)
       bei System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
       bei Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
       bei System.Threading.ThreadHelper.ThreadStart_Context(Object state)
       bei System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
       bei System.Threading.ThreadHelper.ThreadStart()
  InnerException:


[Diese Nachricht wurde von kaifreeman am 25. Jun. 2012 editiert.]

[Diese Nachricht wurde von kaifreeman am 25. Jun. 2012 editiert.]

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

Brischke
Moderator
CAD on demand GmbH




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

Beiträge: 4171
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools

erstellt am: 25. Jun. 2012 15: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 Nur für kaifreeman 10 Unities + Antwort hilfreich

Lokale Kopie auf False ist auf jeden Fall richtig!

Kompiliere mal direkt in irgendein Verzeichnis auf Laufwerk C.
(ich habe mir eine Debug-Verzeichnis direkt im Acad-Ordner angelegt)

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

kaifreeman
Mitglied
Projektleiter


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

Beiträge: 45
Registriert: 29.08.2006

Pentium 4 2*3,2 GHz 2,5 GB RAM NVIDIA Quadro FX1400 Grafikkarte.
ProE 2001 und WF2 M191

erstellt am: 25. Jun. 2012 15:27    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

Also ich hab jetzt die beiden DLLs nochmal extra aus dem Ordner inc (unter dem Object ARX) in einen lokalen Ordner auf C: kopiert und den Verweis nochmals angelegt Lokale Kopie auf False kein Erfolg selbe Fehlermeldung.

Kompilierverzeichnis auf C:\Test geändert gleiche Fehlermeldung er findet die DLLs einfach nicht sobald ich Lokale Kopie auf False setze es ist zum schreien sowas hab ich noch nie erlebt.

Kann es sein das sich die DLLs mit der Windows Forms Anwendung nicht vertragen?

------------------
mfG.
Stephan Papst

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

Brischke
Moderator
CAD on demand GmbH




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

Beiträge: 4171
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools

erstellt am: 25. Jun. 2012 15: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 Nur für kaifreeman 10 Unities + Antwort hilfreich

... Wie lädts und startest du das Programm?

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

kaifreeman
Mitglied
Projektleiter


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

Beiträge: 45
Registriert: 29.08.2006

Pentium 4 2*3,2 GHz 2,5 GB RAM NVIDIA Quadro FX1400 Grafikkarte.
ProE 2001 und WF2 M191

erstellt am: 25. Jun. 2012 15:38    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

Wie jede WindowsForms Anwednung:
Ich habe das Projekt mit dem Startformular "Formular1"

Code:

Public Class Form1
    Dim v_path As String = ""

    Private Sub cmd_fileselect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmd_fileselect.Click
        With open_file
            .ShowDialog()
            v_path = .FileName
            TextBox1.Text = v_path
        End With
    End Sub

    Private Sub cmd_check_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmd_check.Click
        'Prüfen:
        If v_path = "" Then Exit Sub
        If MsgBox("Versionscheck durchführen=?", MsgBoxStyle.YesNo + MsgBoxStyle.Question, "Frage") = MsgBoxResult.No Then Exit Sub
        Dim v_checker As New ACAD_Verscheck_APP
        If v_checker.acd_version(v_path) Then
            MsgBox("OK")
        Else
            MsgBox("NOK")
        End If


    End Sub
End Class


auf dieser liegen 2 Buttons und eine TXT Box mit dem ersten Button lade ich einen Filedialog zum auswählen der DWG und speichere den Pfad in eine Variable und für mich als Zwischenkontrolle in die Textbox.

Dann kommt der klick auf den 2. Button "cmd_check"
Dieser verweist auf die Klasse ACAD_Verscheck_APP und lädt eben die Routine.

Der gesamte Quellcode der Klasse:

Code:

Option Explicit On

Imports System
Imports System.IO
Imports System.Type
Imports System.CLSCompliantAttribute
Imports System.Reflection
Imports System.Runtime.InteropServices

Imports Autodesk.AutoCAD.Runtime
Imports Autodesk.AutoCAD.ApplicationServices
Imports Autodesk.AutoCAD.DatabaseServices

Public Class ACAD_Verscheck_APP

    Public Function acd_version(ByVal v_filepath As String) As Boolean
        'Dateipfad richtig übergeben?
        If v_filepath = Nothing Or v_filepath = "" Then Return False
        'Endung *.dwg richtig (simple Stringabfrage)
        If Not v_filepath.EndsWith(".dwg") Then Return False
        'Prüfen ob Datei exisitert:
        If Not System.IO.File.Exists(v_filepath) Then Return False

        Dim v_db As Autodesk.AutoCAD.DatabaseServices.Database = New Autodesk.AutoCAD.DatabaseServices.Database(False, False)


        Try
            v_db.ReadDwgFile(v_filepath, IO.FileShare.ReadWrite, True, "")
        Catch
            MsgBox("Fehler beim lesen der dwg")
        End Try

        Try
            Dim v_vers As Autodesk.AutoCAD.DatabaseServices.DwgVersion
            v_vers = v_db.OriginalFileVersion
        Catch
            MsgBox("muell")
            Return False
        End Try

        Return False
    End Function

End Class


Also eigentlich nichts was irgendwie das Problem auslösen könnte ist ja nicht meine 1. WindowsForms Anwendung und lustigerweise habe ich auch schon ObjectARX Anwendungen die funktionieren aber bis dato halt immer nur "Klassenbibliotheken" welche direkt in ACAD eingebunden werden.

------------------
mfG.
Stephan Papst

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

Brischke
Moderator
CAD on demand GmbH




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

Beiträge: 4171
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools

erstellt am: 25. Jun. 2012 15: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 Nur für kaifreeman 10 Unities + Antwort hilfreich

Du kannst nicht direkt von außen auf Acad zugreifen. Grundsätzlich muss AutoCAD gestartet sein oder durch das Programm gestartet werden.
Dann erst kannst du dich via COM auf das geöffnete AutoCAD verbinden und mit dem Acad-Objekten arbeiten.

Der Code dafür wäre etwas umfangreicher.


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

kaifreeman
Mitglied
Projektleiter


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

Beiträge: 45
Registriert: 29.08.2006

Pentium 4 2*3,2 GHz 2,5 GB RAM NVIDIA Quadro FX1400 Grafikkarte.
ProE 2001 und WF2 M191

erstellt am: 25. Jun. 2012 15:59    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

hm das hab ich mir auch schon gedacht aber lt. TechNote wie folgt:

Issue
I need to detect a drawing file version without loading it in the AutoCAD editor, how do I do it?
Solution
To acquire an Acad drawing file version, you can open a drawing file for reading using AcDbDatabase::readDwgFile() and check the file version using the AcDbDatabase: riginalFileVersion() method. The following code snippet handles the version number starting from AutoCAD 2.5. Note that originalFileVersion() works down to AutoCAD 1.2 and MFC stock file dialog is used to provide a simple UI.

Code:

void GetDwgVersion()
{
  CFileDialog fileDlg(TRUE, _T("dwg"), NULL, OFN_HIDEREADONLY,
      _T("AutoCAD Drawing files (*.dwg) |*.dwg| |"));

  if (IDOK != fileDlg.DoModal())
    return;

  AcDbDatabase *pDb = new AcDbDatabase(Adesk::kFalse, Adesk::kTrue);
  Acad::ErrorStatus es = pDb->readDwgFile(fileDlg.GetPathName());
  if (es != Acad::eOk)
  {
    delete pDb;
    acutPrintf("\nCannot read drawing file.\n");
    return;
  }

  // Get the DWG version number.
  AcDb::AcDbDwgVersion dwgVer = pDb->originalFileVersion();

  switch (dwgVer)
  {
  case AcDb::kDHL_1002:
    acutPrintf("\nAutoCAD 2.5\n");
    break;
  case AcDb::kDHL_1003:
    acutPrintf("\nAutoCAD 2.6\n");
    break;
  case AcDb::kDHL_1004:
  case AcDb::kDHL_1005:
    acutPrintf("\nRelease 9\n");
    break;
  case AcDb::kDHL_1006:
  case AcDb::kDHL_1007:
  case AcDb::kDHL_1008:
    acutPrintf("\nRelease 10\n");
    break;
  case AcDb::kDHL_1009:
  case AcDb::kDHL_1010:
  case AcDb::kDHL_1011:
    acutPrintf("\nR11 and R12\n");
    break;
  case AcDb::kDHL_1012:
    acutPrintf("\nR13\n");
    break;
  case AcDb::kDHL_1013:
    acutPrintf("\nR14 (mid version).\n");
    break;
  case AcDb::kDHL_1014:
    acutPrintf("\nR14 (final version).\n");
    break;
  case AcDb::kDHL_1500:
    acutPrintf("\nR15 development (Tahoe)\n");
    break;
  case AcDb::kDHL_1015:
    acutPrintf("\nR15 final version (AutoCAD 2000 or above).\n");
    break;
  default:
    acutPrintf("\nUnknown version.\n");
  }

  delete pDb;
}


Wenn ich das richtig interpretiere sollte der Code darauf getrimt sein ohne ein geladenes ACAD zu funktionieren oder? 

------------------
mfG.
Stephan Papst

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

Brischke
Moderator
CAD on demand GmbH




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

Beiträge: 4171
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools

erstellt am: 25. Jun. 2012 16:03    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 kaifreeman 10 Unities + Antwort hilfreich

without loading it in the AutoCAD editor bedeutet lediglich, dass die Zeichnung nicht in den Editor geladen wird. Das heißt jedoch nicht, dass AutoCAD nicht getartet werden muss.

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

kaifreeman
Mitglied
Projektleiter


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

Beiträge: 45
Registriert: 29.08.2006

Pentium 4 2*3,2 GHz 2,5 GB RAM NVIDIA Quadro FX1400 Grafikkarte.
ProE 2001 und WF2 M191

erstellt am: 25. Jun. 2012 16:09    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

*facepalm*
Das wundervolle Gefühl Stunden seines Lebens umsonst investiert zu haben ^^
d.h. eigentlich mache ich wie gehabt eine Klassenbibliothek also eine DLL die ich beim Run von ACAD automatisch lade.
Ich muss aber die zu prüfende Zeichnung nicht direkt "öffnen" sondern kann durch die "ReadDWG" quasi auf die Datei zugreifen und meinen Code abarbeiten hab ich das jetzt so richtig verstanden?

------------------
mfG.
Stephan Papst

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

Brischke
Moderator
CAD on demand GmbH




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

Beiträge: 4171
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools

erstellt am: 25. Jun. 2012 16: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 Nur für kaifreeman 10 Unities + Antwort hilfreich

ja

------------------
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

kaifreeman
Mitglied
Projektleiter


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

Beiträge: 45
Registriert: 29.08.2006

Pentium 4 2*3,2 GHz 2,5 GB RAM NVIDIA Quadro FX1400 Grafikkarte.
ProE 2001 und WF2 M191

erstellt am: 25. Jun. 2012 16:15    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 Hilfe, man sollte halt ab und an mal früher nachdenken 

------------------
mfG.
Stephan Papst

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