Aperçu des fichiers SolidWorks avec une API

Bonjour

j'ai une application (developpement VB6.0  32bit , on peut rapprocher cela à un VBA dans Excel  32bit )

j'ai un "objet" de type ImageList qui me sert a afficher les aperçus des fichiers sélectionnés  (je récupère les images d'aperçu de l'explorateur Windows)

cela fonctionne bien avec des fichiers CAO CATIA V5 / Autodesk  Mais mon code ne fonctionne pas avec des fichiers SolidWorks 

(c'est un code 32 bit qui fonctionnait avec une version 32bit de SolidWorks , mais pus maintenant avec uniquement une version 64bit :-( )

Est ce qu'il y a un moyen de récupérer l'image d'aperçu d"un fichier SolidWorks , dans un VBA (en 32bit)

--

j'ai trouvé "PreviewDoc" (cf ci dessous)  , mais je n'ai pas réussi à l'utiliser ( il faut compiler une DLL , et je n'ai pas compris comment on recuère l'objet image .....)

=> est ce que l'un d'entre vous a déjà fait qqc de similaire ? 

--

Ensuite j'ai pensé à générer une image , mais quand j'ai testé ,j'ai trouvé super long le tesmps de traitement , sans parler la vue a mettre en ISO et recentrer .....

--

exemple du code PreviewDoc

Dim instance As ISldWorks
Dim HWnd As System.Integer
Dim FullName As System.String
Dim value As System.Boolean
 
value = instance.PreviewDoc(HWnd, FullName)

Parameters

HWnd
Window handle where you want the preview bitmap to display; this pointer is not valid across processes; therefore, this method only works if your application is implemented as a DLL
FullName
Full path name of document to preview

 

Salut,
J'ai créé une application en VB.Net qui gère les la relation entre notre ERP et SolidWorks. Elle gère notamment l'injection des révisions dans la base SQL de l'ERP, la création de plan PDF, DXF et eDrawings et l'insertion des liens dans la base. Elle créée aussi des vues au format JPG des pièces et assemblages référencés dans l'ERP puis insert le lien dans la base.

J'avais pensé récupérer l'aperçu de l'explorateur mais elle ne sont pas toutes correctes et encore moins en orientation ISO. En contrepartie le traitement est long. Mais on le lance environ une fois par semaine.

Voici une version simplifié de la fonction qui gère la génération de plans et d'images :

Sub TraitementCreaDocsSwPrt(ByVal Fichier As String, ByRef SW_Errors As Integer, ByRef SW_Warning As Integer, ByRef SW_Errors_MEP As Integer, ByRef SW_Warning_MEP As Integer)
        Dim SW_Model As SldWorks.ModelDoc2, SW_Model_MEP As SldWorks.ModelDoc2
        Dim SW_ModelDocExtension As SldWorks.ModelDocExtension
        Dim Info_MEP As FileInfo
        Try
            SW_Model = SW_App.OpenDoc6(Fichier, swDocumentTypes_e.swDocPART, swOpenDocOptions_e.swOpenDocOptions_Silent, "", SW_Errors, SW_Warning)
            If SW_Errors = Nothing Then
                SW_ModelDocExtension = SW_Model.Extension
                SW_ModelDocExtension.HideFeatureManager(True)
                SW_Model.ShowNamedView2("*Isométrique", swStandardViews_e.swIsometricView)
                SW_Model.ViewZoomtofit2()
                SW_Model.SaveAs3(Info_dossier_Export.FullName & "\" & Path.GetFileNameWithoutExtension(Fichier) & ".jpg", swSaveAsVersion_e.swSaveAsCurrentVersion, swSaveAsOptions_e.swSaveAsOptions_Silent)
                SW_Model.SaveAs3(Info_dossier_Export.FullName & "\" & Path.GetFileNameWithoutExtension(Fichier) & ".eprt", swSaveAsVersion_e.swSaveAsCurrentVersion, swSaveAsOptions_e.swSaveAsOptions_Silent)
                Info_MEP = New FileInfo(Left(Fichier, Fichier.Length - 7) & ".slddrw")
                If Info_MEP.Exists = True Then
                    SW_Model_MEP = SW_App.OpenDoc6(Info_MEP.FullName, swDocumentTypes_e.swDocDRAWING, swOpenDocOptions_e.swOpenDocOptions_Silent, "", SW_Errors_MEP, SW_Warning_MEP)
                    SW_Model.SaveAs3(Info_dossier_Export.FullName & "\" & Path.GetFileNameWithoutExtension(Fichier) & ".dxf", swSaveAsVersion_e.swSaveAsCurrentVersion, swSaveAsOptions_e.swSaveAsOptions_Silent)
                    Export_Pdf(SW_App, SW_Model_MEP, Info_dossier_Export.FullName & "\" & Path.GetFileNameWithoutExtension(Fichier) & ".pdf")
                Else
                    ' Traitement de l'erreur de présence de la MEP
                End If
            Else
              ' Traitement de l'erreur d'ouverture du fichier
            End If
            If ProcessSW.HasExited = False Then
                SW_App.CloseAllDocuments(True)
            End If
        Catch Ex As Exception
            ' Traitement de l'erreur
        End Try
End Sub

 

Mon application est en 64bits. Je ne crois pas que cela soit possible de coder un 32bits.

J'espère t'avoir aidé.
Bonne journée