| |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
 | PNY wird von NVIDIA zum Händler des Jahres gewählt - zum dritten Mal in Folge, eine Pressemitteilung
|
Autor
|
Thema: acdbGetPreviewBitmapFromDwg() in .NET/C# (2742 mal gelesen)
|
peterjacx Mitglied Software Entwickler

 Beiträge: 14 Registriert: 08.02.2005
|
erstellt am: 21. Nov. 2006 15:46 <-- editieren / zitieren --> Unities abgeben:         
Hallo, suche in .NET/C# ein Äquivalent für die globale Funktion acdbGetPreviewBitmapFromDwg(). Kennt jemand eine Möglichkeit, wie man in .NET/C# das PreviewBitmap aus einer DWG lesen kann? Gruss Peter Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
IvanNintchev Mitglied CAD-Administrator
 Beiträge: 7 Registriert: 14.12.2004
|
erstellt am: 22. Nov. 2006 09:38 <-- editieren / zitieren --> Unities abgeben:          Nur für peterjacx
|
peterjacx Mitglied Software Entwickler

 Beiträge: 14 Registriert: 08.02.2005
|
erstellt am: 24. Nov. 2006 08:12 <-- editieren / zitieren --> Unities abgeben:         
Hallo Ivan, danke für den Hinweis. Das dort angegebene Beispiel läuft bei mir unter Acad2007 leider nicht. es wird eine Exception geworfen, dass der Einstiegspunkt nicht gefunden wird. Hat noch jemand eine Idee? using System; using System.Drawing; using System.Runtime.InteropServices; using Autodesk.AutoCAD.Runtime; namespace acdbUtils { public class ThumbnailExtractor { [System.Security.SuppressUnmanagedCodeSecurity] [DllImport("acdb17.dll", CallingConvention = CallingConvention.Cdecl, EntryPoint = "?acdbGetPreviewBitmap@@YAPAUtagBITMAPINFO@@PBD@Z")] extern static private IntPtr acdbGetPreviewBitmap(string filename); static Bitmap GetBitmapFromDwg(string filename) { return Marshaler.BitmapInfoToBitmap(acdbGetPreviewBitmap(filename)); } } Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
IvanNintchev Mitglied CAD-Administrator
 Beiträge: 7 Registriert: 14.12.2004
|
erstellt am: 24. Nov. 2006 15:52 <-- editieren / zitieren --> Unities abgeben:          Nur für peterjacx
Hallo Peter, benutze bitte folgende Signatur: EntryPoint = "?acdbGetPreviewBitmap@@YAPAUtagBITMAPINFO@@PB_W@Z" der Aufruf dann sollte klappen! (es hat bei mir aber kein brauchbares Ergebnis geliefert!) du solltes einfach den Link zu Ende lesen, da ist auch angepasster Code für AC2007 dabei, es wird eine andere Funktion benutzt (aus acad.exe) Zitat: // R17 ONLY[DllImport( "acad.exe", CallingConvention = CallingConvention.Cdecl, EntryPoint = "?acedGenerateThumbnailBitmap@@YAPAUtagABITMAPINFO@@XZ")] private static extern IntPtr acedGenerateThumbnailBitmap();
Gruss Ivan Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
peterjacx Mitglied Software Entwickler

 Beiträge: 14 Registriert: 08.02.2005
|
erstellt am: 28. Nov. 2006 15:56 <-- editieren / zitieren --> Unities abgeben:         
Hallo Ivan, danke für den Hinweis mit der Funktion acdbGetPreviewBitmap. acedGenerateThumbnailBitmap hatte ich auch gefunden und ausprobiert. Funktioniert auch. Die Funktion liefert aber das Bitmap von der aktuell geöffneten Datei. Ich möchte aber von einer beliebigen DWG das Bitmap haben. Gruss Peter Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
IvanNintchev Mitglied CAD-Administrator
 Beiträge: 7 Registriert: 14.12.2004
|
erstellt am: 28. Nov. 2006 16:12 <-- editieren / zitieren --> Unities abgeben:          Nur für peterjacx
ein kleiner Nachtrag: eine Änderung in der Deklaration der Funktion <acdbGetPreviewBitmap> (UNICODE lässt grüssen) führte zu Erfolg, nämlich VB.NET <System.Security.SuppressUnmanagedCodeSecurity(), _ DllImport("C:\Programme\Autodesk Map 3D 2007\acdb17.dll", _ CallingConvention:=CallingConvention.Cdecl, _ EntryPoint:="?acdbGetPreviewBitmap@@YAPAUtagBITMAPINFO@@PB_W@Z")> _ Private Shared Function acdbGetPreviewBitmap(<MarshalAs(UnmanagedType.LPWStr)> ByVal sFilename As String) As IntPtr End Function C#
[System.Security.SuppressUnmanagedCodeSecurity(), DllImport("C:\\Programme\\Autodesk Map 3D 2007\\acdb17.dll", CallingConvention = CallingConvention.Cdecl, EntryPoint = "?acdbGetPreviewBitmap@@YAPAUtagBITMAPINFO@@PB_W@Z")] private static IntPtr acdbGetPreviewBitmap( [MarshalAs(UnmanagedType.LPWStr)] string sFilename) falls das Bitmap (Thumbnail) in eine Datei gespeichert werden soll, dann: Dim hBmp As IntPtr = IntPtr.Zero hBmp = acdbGetPreviewBitmap(filename) Dim _dBMP As System.Drawing.Bitmap = Autodesk.AutoCAD.Runtime.Marshaler.BitmapInfoToBitmap(hBmp) _dBMP.Save("c:\temp\dingsbums.bmp", Imaging.ImageFormat.Bmp) Gruss Ivan
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
peterjacx Mitglied Software Entwickler

 Beiträge: 14 Registriert: 08.02.2005
|
erstellt am: 28. Nov. 2006 16:30 <-- editieren / zitieren --> Unities abgeben:         
|