Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  API - Preview

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 SOLIDWORKS
Autor Thema:  API - Preview (2101 mal gelesen)
GuentherA
Mitglied
Selbsständig Maschinenbau/Robotik

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

Beiträge: 8
Registriert: 30.07.2014

erstellt am: 30. Jul. 2014 20: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

Hallo zusammen!

Habe da ein lästiges Problem mit dem viel disskutierten Thema "Preview eines Modells über die SW Document Manager API".

Mein Code funktioniert prinzipiell, allerdings kommt bei einigen Bauteilen die Rückmeldung "No preview data stored in document(swDmPreviewErrorNoPreview). Aussagekräftig wäre die Fehlermeldung ja   ABER: ich habe noch keine möglichkeit gefunden, dies zu aktualisieren   . Weder ein rebuild, noch speichern hilft mir da weiter....

Code:

    Public Function GetPreview(ModDoc As sldworks.ModelDoc2) As String
        ' Substitute the path and name of your file for the following path and file name
        Dim Pfad As String = ModDoc.GetPathName
        Dim sDocFileName As String = Pfad '"C:\Program Files\SolidWorks Corp\SolidWorks\samples\tutorial\multibody\multi_inter.sldprt" 'Specify document
        Dim sExtractDir As String = IO.Path.GetTempPath()
        Dim swClassFact As SwDMClassFactory
        Dim swDocMgr As SwDMApplication
        Dim swDoc As SwDMDocument
        Dim swCfgMgr As SwDMConfigurationMgr
        Dim vCfgNameArr As Object
        Dim vCfgName As Object
        Dim swCfg As ISwDMConfiguration7 'SwDMConfiguration7
        Dim pPreview As IPictureDisp
        Dim nDocType As Long
        Dim nRetVal As Long
        Dim image As Drawing.Image

        Dim std As stdole.IPictureDisp
        Try
            If InStr(LCase(sDocFileName), "sldprt") > 0 Then
                nDocType = SwDmDocumentType.swDmDocumentPart
            ElseIf InStr(LCase(sDocFileName), "sldasm") > 0 Then
                nDocType = SwDmDocumentType.swDmDocumentAssembly
            ElseIf InStr(LCase(sDocFileName), "slddrw") > 0 Then
                nDocType = SwDmDocumentType.swDmDocumentDrawing
            Else
                nDocType = SwDmDocumentType.swDmDocumentUnknown
                Exit Function
            End If

            If (nDocType <> SwDmDocumentType.swDmDocumentDrawing) Then

                swClassFact = CreateObject("SwDocumentMgr.SwDMClassFactory")
                swDocMgr = swClassFact.GetApplication("xxxxxxxx") 'Specify license key
                swDoc = swDocMgr.GetDocument(sDocFileName, nDocType, True, nRetVal) ': Debug.Assert(SwDmDocumentOpenError.swDmDocumentOpenErrorNone = nRetVal)
                swDoc.Save()

                swCfgMgr = swDoc.ConfigurationManager

                Debug.Print("File = " & swDoc.FullName)
                Debug.Print("  Active configuration name    = " & swCfgMgr.GetActiveConfigurationName)
                vCfgNameArr = swCfgMgr.GetConfigurationNames

                For Each vCfgName In vCfgNameArr
                    swCfg = swCfgMgr.GetConfigurationByName(vCfgName)
                    pPreview = swCfg.GetPreviewPNGBitmap(nRetVal)
                    'swDmPreviewErrorNone           0 = Success
                    'swDmPreviewErrorFileOpen     1 = Failed to open the document
                    'swDmPreviewErrorNoPreview     2 = No preview data stored in document
                    'swDmPreviewErrorMakeBmpFail 4 = Failed to make the bitmap
                    If nRetVal = 2 Then
                        'Versuch den Fehler zu korrigieren
                    End If
                    If nRetVal = 0 Then
                        image = PictConverter.AxHostConverter.PictureDispToImage(pPreview)
                        image.Save(sExtractDir & vCfgName & ".PNG")
                        GetPreview = sExtractDir & vCfgName & ".PNG"
                    End If

                Next
            End If
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
    End Function


Ich hoffe auf Eure Vorschläge :-)

Danke für Eure Unterstützung,

Günther

[Diese Nachricht wurde von GuentherA am 30. Jul. 2014 editiert.]

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

Carsten1210
Mitglied
staatl. geprüfter Holztechniker


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

Beiträge: 1358
Registriert: 24.07.2002

AutoCAD ACA 2019
Solidworks 2021 Sp5.1
Enterprise PDM 2021 Sp5
Pascam Woodworks
Visual Studio 2017 Pro
Windows 10 64Bit
Dell T3620
Intel Core i7-7700K
16 GB Arbeitsspeicher
2x Dell Ultrasharp U2415
Dell M4800

erstellt am: 30. Jul. 2014 21:57    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 GuentherA 10 Unities + Antwort hilfreich

Hi Günther,

Hast du eine Beispieldatei bei der der Fehler auftritt?!
Und nimm bitte deinen Licensekey aus dem Code oben raus.

Gruss, Carsten

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

GuentherA
Mitglied
Selbsständig Maschinenbau/Robotik

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

Beiträge: 8
Registriert: 30.07.2014

erstellt am: 30. Jul. 2014 22:24    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


Bauteiltest.sldprt

 
Hi Carsten,

DANKE für den Hinweis!!! Sowas muss mir ja passieren! Naja, wie auch immer, Danke - Mir wär das nicht aufgefallen!

So, zurück zum Problem:

Im Anhang ist ein Bauteil bei dem der besagte Fehler auftritt. Detail am Rande: Auch im Explorer wird die Miniaturansicht nicht dargestellt.

Danke und LG
Günther

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

Andi Beck
Ehrenmitglied V.I.P. h.c.
Konstrukteur



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

Beiträge: 2570
Registriert: 02.10.2006

Firma: SW 2023-4.0 + PDM Prof.
Windows 10 Pro 64bit, i9-11900
32 GbRAM, Quadro P2200
Home:
SW 2022-5.0
Passungstabelle von Heinz
Windows 11 Pro 64bit,
i7-12700K, 32 GbRAM,
GeForce GTX 1050Ti
Samsung C34H892, 3440x1440 Pixel

erstellt am: 31. Jul. 2014 00:47    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 GuentherA 10 Unities + Antwort hilfreich


Bauteiltest-SW2014.JPG

 
Zitat:
Original erstellt von GuentherA:

Detail am Rande: Auch im Explorer wird die Miniaturansicht nicht dargestellt.

Hallo Guenther,
und herzlich Willkommen hier im Forum.

Wenn ich dein Bauteil in SW2014 lade und lokal speichere, bekomme ich ein Miniaturbild im Explorer.
Was ist den dein eigentliches Ziel mit deinem Makro?
Möchtest du ein Miniaturbild speichern?
Wenn ja, warum speicherst du nicht direkt als PNG bzw. TIF?

Wenn es dich interessiert, findest du passenden Code in meinem Makro hier.
http://ww3.cad.de/foren/ubb/Forum2/HTML/023775.shtml

Grüße, Andi

------------------
Hast du kein Problem?
Such dir eins. ( Und löse es )

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

MWN
Mitglied
Dipl.-Ing.


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

Beiträge: 492
Registriert: 14.02.2007

erstellt am: 31. Jul. 2014 08: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 Nur für GuentherA 10 Unities + Antwort hilfreich

Guten Morgen Günther,

hast du schon einmal probiert, das Teil per Speichern unter in z.B. ein temporäres Verzeichnis zu speichern und dann wieder per Speichern unter das Ausgangsteil zu überschreiben (alternativ ginge auch, das Teil auf Explorer - Ebene in das Ausgangsverzeichnis zurück zu kopieren)?
Das funktioniert allerdings mit dem Documentmanager nicht, du bräuchtest dafür (zumindest temporär und nur in diesem Fehlerfall) ein SWX.
Soweit mir bekannt, erzeugt SWX das preview - image beim Speichern unter. Wenn dort etwas schief läuft, fehlt dir das Bild nachher.
Grüße und HTH

Tobias

------------------
Besucht mich doch mal in meiner Tischlerei

"...Kommunikation ist nur so gut wie ihr Ergebnis..." - frei nach Richard Bandler / John Grinder

"...Wenn du das tust, was du schon immer tust, wirst du auch nur das erhalten, was du schon immer erhalten hast..."

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

GuentherA
Mitglied
Selbsständig Maschinenbau/Robotik

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

Beiträge: 8
Registriert: 30.07.2014

erstellt am: 31. Jul. 2014 09:39    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

Hallo Andi,
hallo Tobias,

@Andi: Ja das ist mir auch aufgefallen, dass sobald das File normal in SWX gespeichert wird, ist die Preview ok. Aber eben nur wenn ich's manuell speicher.

Folgender Einsatz für das Ganze: Ich lese über ein AddIn alle Komponenten einer Baugruppe zur Erstellung von Stücklisten und Vergabe von Dokumentnummern aus. Sollten während des Auslesens Informationen von bestimmten Bauteilen fehlen, so blendet sich ein Formular ein, welches die fehlenden Infos abfragt. Damit man in dem Formular auch weiß um welches Bauteil es geht, wird ein Preview Bild des Bauteils angezeigt. Das funktioniert wie gesagt auch eigentlich recht gut. Außer halt bei ein paar Teile.

Wenn ich so drüber nachdenke waren das aber alles Bauteile, die in SWX nur importiert wurden, also aus STP beispielsweise. Könnte ein Grund sein, aber nicht die Lösung... 


@Tobias:
Das funktioniert bei mir desshalb nicht, weil ich ja mitten in dem Auslesevorgang der Baugruppe bin. Keine Ahnung wie das den Ablauf beeinflußt, wenn da jetzt BG-Komponenten aufeinmal überschrieben werden (wenn überhaupt möglich).

LG Günther

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)2024 CAD.de | Impressum | Datenschutz