Podgląd plików SolidWorks za pomocą interfejsu API

Witam

Mam aplikację (VB6.0  32bit development, możemy to porównać do VBA w Excelu  32bit )

Mam "obiekt" typu ImageList , którego używam do wyświetlania podglądów wybranych  plików (obrazy podglądu otrzymuję z eksploratora Windows)

działa dobrze z plikami CATIA V5 / Autodesk  CAD, ale mój kod nie działa z plikami SolidWorks 

(jest to 32-bitowy kod, który działał z 32-bitową wersją SolidWorks, ale teraz tylko z wersją 64-bitową :-( )

Czy istnieje sposób na odzyskanie obrazu podglądu pliku SolidWorks w formacie VBA (w wersji 32-bitowej)

--

Znalazłem "PreviewDoc" (patrz poniżej),  ale nie udało mi się go użyć (musisz skompilować bibliotekę DLL, a nie rozumiałem, jak uzyskać obiekt obrazu .....)

=> Czy ktoś z was kiedykolwiek robił coś podobnego? 

--

Potem pomyślałem o wygenerowaniu obrazu, ale podczas testów stwierdziłem, że przetwarzanie tesmps jest bardzo długie, nie wspominając o widoku, aby ustawić ISO i ponownie ustawić ostrość .....

--

Przykładowy kod PreviewDoc

Dim instancja As ISldWorks
Dim HWnd As System.Integer
Dim FullName As System.String
Wartość przyciemniona As System.Boolean
 
wartość = wystąpienie. PreviewDoc(HWnd, Imię i Nazwisko)

Parametry

HWnd
Uchwyt okna, w którym ma być wyświetlany podgląd mapy bitowej; Ten wskaźnik nie jest prawidłowy we wszystkich procesach; w związku z tym ta metoda działa tylko wtedy, gdy aplikacja jest zaimplementowana jako biblioteka DLL
Imię i nazwisko
Pełna ścieżka nazwa dokumentu do podglądu

 

Witam
Stworzyłem w VB.Net aplikację, która zarządza relacjami między naszym ERP a SolidWorks. W szczególności zarządza wstrzykiwaniem poprawek do bazy danych ERP SQL, tworzeniem planów PDF, DXF i eDrawings oraz wstawianiem linków do bazy danych. Tworzy również widoki JPG części i złożeń, do których odwołuje się ERP, a następnie wstawia łącze do bazy danych.

Myślałem o zdobyciu podglądu eksploratora, ale nie wszystkie są poprawne, a tym bardziej w orientacji ISO. Z drugiej strony kuracja jest długa. Ale rzucamy go mniej więcej raz w tygodniu.

Oto uproszczona wersja funkcji, która obsługuje generowanie klipów i obrazów:

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

 

Moja aplikacja jest w wersji 64-bitowej. Nie sądzę, aby możliwe było zakodowanie 32bita.

Mam nadzieję, że ci pomogłem.
Miłego dnia