|  |  | 
|  | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte | 
|  |  | 
|  | NVIDIA RTX PRO 6000 Blackwell Max-Q Workstation Edition, eine Pressemitteilung 
 | 
| Autor | Thema:  Fehler Common Language (2747 mal gelesen) | 
 | kaifreeman Mitglied
 Projektleiter
 
  
 
      Beiträge: 45Registriert: 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 / zitieren -->    Unities abgeben:            
  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)             Tryv_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_versionCase ...
 case else
 msgbox "blabla"
 End Select
             Return True 'Catch ex As System.Exception
 '    Return False
 'End Try
             Return FalseEnd 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
 
         
 
  
 
      Beiträge: 4201Registriert: 17.05.2001
 AutoCAD 20XX, defun-tools |    erstellt am: 25. Jun. 2012 14:19  <-- editieren / zitieren -->    Unities abgeben:           Nur für kaifreeman   | 
                        | kaifreeman Mitglied
 Projektleiter
 
  
 
      Beiträge: 45Registriert: 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 / zitieren -->    Unities abgeben:            
  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
 
         
 
  
 
      Beiträge: 4201Registriert: 17.05.2001
 AutoCAD 20XX, defun-tools |    erstellt am: 25. Jun. 2012 14:51  <-- editieren / zitieren -->    Unities abgeben:           Nur für kaifreeman   
  ... 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
 
  
 
      Beiträge: 45Registriert: 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 / zitieren -->    Unities abgeben:            
  Also eingebunden ist: Code:
 ACDbMgd
 ACMgd
 
 
 Code:
 Option Explicit On
 Imports SystemImports System.IO
 Imports System.Type
 Imports System.CLSCompliantAttribute
 Imports System.Reflection
 Imports System.Runtime.InteropServices
 Imports Autodesk.AutoCAD.RuntimeImports 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
 
         
 
  
 
      Beiträge: 4201Registriert: 17.05.2001
 AutoCAD 20XX, defun-tools |    erstellt am: 25. Jun. 2012 15:17  <-- editieren / zitieren -->    Unities abgeben:           Nur für kaifreeman   
  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
 
  
 
      Beiträge: 45Registriert: 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 / zitieren -->    Unities abgeben:            
  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
 
         
 
  
 
      Beiträge: 4201Registriert: 17.05.2001
 AutoCAD 20XX, defun-tools |    erstellt am: 25. Jun. 2012 15:31  <-- editieren / zitieren -->    Unities abgeben:           Nur für kaifreeman   | 
                        | kaifreeman Mitglied
 Projektleiter
 
  
 
      Beiträge: 45Registriert: 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 / zitieren -->    Unities abgeben:            
  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.ClickWith 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 SystemImports System.IO
 Imports System.Type
 Imports System.CLSCompliantAttribute
 Imports System.Reflection
 Imports System.Runtime.InteropServices
 Imports Autodesk.AutoCAD.RuntimeImports 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
         TryDim v_vers As Autodesk.AutoCAD.DatabaseServices.DwgVersion
 v_vers = v_db.OriginalFileVersion
 Catch
 MsgBox("muell")
 Return False
 End Try
         Return FalseEnd 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
 
         
 
  
 
      Beiträge: 4201Registriert: 17.05.2001
 AutoCAD 20XX, defun-tools |    erstellt am: 25. Jun. 2012 15:51  <-- editieren / zitieren -->    Unities abgeben:           Nur für kaifreeman   
  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
 
  
 
      Beiträge: 45Registriert: 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 / zitieren -->    Unities abgeben:            
  hm das hab ich mir auch schon gedacht aber lt. TechNote wie folgt: IssueI 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
 
         
 
  
 
      Beiträge: 4201Registriert: 17.05.2001
 AutoCAD 20XX, defun-tools |    erstellt am: 25. Jun. 2012 16:03  <-- editieren / zitieren -->    Unities abgeben:           Nur für kaifreeman   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
 
  
 
      Beiträge: 45Registriert: 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 / zitieren -->    Unities abgeben:            
  *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
 
         
 
  
 
      Beiträge: 4201Registriert: 17.05.2001
 AutoCAD 20XX, defun-tools |    erstellt am: 25. Jun. 2012 16:12  <-- editieren / zitieren -->    Unities abgeben:           Nur für kaifreeman   | 
                       
 | kaifreeman Mitglied
 Projektleiter
 
  
 
      Beiträge: 45Registriert: 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 / zitieren -->    Unities abgeben:            |