Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  Vorschaubild per VB/API als separates BMP speichern

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
  
SOLIDWORKS Electrical 3D Schulung, ein Seminar am 26.06.2025
Autor Thema:  Vorschaubild per VB/API als separates BMP speichern (3495 mal gelesen)
Herrmann
Mitglied



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

Beiträge: 302
Registriert: 13.03.2002

erstellt am: 14. Jan. 2003 17:35    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,

gibt es eine Möglichkeit mit VB / APIProgrammier- und Anwendungsschnittstelle (Application Programming Interface), das Vorschaubild der SWXSolidWorks-Objekte auszulesen und als BMP abzuspeichern???

Danke für die Info's..............Herrmann

------------------

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

Klaus Greim
Mitglied
CAD-Administrator


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

Beiträge: 178
Registriert: 10.05.2000

SWX 2013 SP 5.0
Windows 7 Prof.
Intel Xenon CPU
W3520
12 GB RAM

erstellt am: 15. Jan. 2003 08:22    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 Herrmann 10 Unities + Antwort hilfreich

Hallo,

die Lösung findest Du unterfolgendem Link auf der Homepage unseres Superadmins Stefan.
http://solidworks.cad.de/apitut_kap06.htm

Auch auf der Amerikanischen SolidWorks Homepage ist was zu finden unter : http://www.solidworks.com/api/index.cfm?template=Downloads

Versuche auch gerade diese Funktion zu nutzen und damit unsere Access Datenbank etwas aufpolieren.

Gruß

Klaus

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

Oberparleiter
Mitglied
Konstrukteur


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

Beiträge: 706
Registriert: 06.06.2000

erstellt am: 15. Jan. 2003 08: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 Herrmann 10 Unities + Antwort hilfreich

Hallo Herrmann

Der Befehl den du suchst heißt "retval = ModelDoc2.SaveBMP ( filenameIn, widthIn, heightIn )"
"filenameIn" ist der Pfad mit Dateiname
"widthIn" und "heightIn" sind die Pixelgrösse des Bildes

Hier noch ein Codesnipsel:
       retUrsprung = modeldoc.GetUserPreferenceToggle(6) ' Prüfen ob der Ursprung ein- oder ausgeblendet ist
        If retUrsprung = True Then modeldoc.ViewDispOrigins 'wenn ja Ursprung ausblenden
   
        retFarbverlauf = swApp.GetUserPreferenceToggle(68) ' Prüfen ob der Farbverlauf AN oder AUS ist
        If retFarbverlauf = True Then swApp.SetUserPreferenceToggle 68, False  'wenn ja dann auschalten
        modeldoc.EditRebuild 'Neuaufbau damit die Änderung in den Optionen wirksam werden
       
' Savebmp Schattiert
       
        modeldoc.ViewDisplayShaded ' Ansicht Schattiert einblenden
        retSaveBMP = modeldoc.SaveBMP(BmpDateiPfad, "300", "300") 'Bitmap speichern

' SaveBmp nur Linien

        modeldoc.ViewDisplayHiddenremoved ' Ansicht Linien einblenden
        retSave1BMP = modeldoc.SaveBMP(BmpDateiETPfad, "300", "300") 'Bitmap speichern

------------------
Soo Long

Frank O.

[Diese Nachricht wurde von Oberparleiter am 15. Januar 2003 editiert.]

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

Herrmann
Mitglied



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

Beiträge: 302
Registriert: 13.03.2002

erstellt am: 15. Jan. 2003 09:11    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

Wooooooowwwwwwwwwwwwwwww,

ich bin begeistert 
Das werden wir sofort ausprobieren

Danke für die Info's  ..........Grüße...... Herrmann

------------------

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

KMassler
Ehrenmitglied V.I.P. h.c.
CAD Admin + Mädchen für Alles...



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

Beiträge: 2675
Registriert: 06.11.2000

SolidWorks Start 1999
** CSWP 01/2008 **
------------------
Zuletzt beruflich:
- SWX2020 SP5;
- SAP/PLM+ECTR;
- DriveWorks Pro;
- Programmierung:
VBA, aktuell Visual Studio 2022/VB.Net
------------------
ab 2024 (privat):
Onshape und anderes

erstellt am: 28. Apr. 2008 13:41    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 Herrmann 10 Unities + Antwort hilfreich

Nach langer Zeit aufgewärmt:
Ich suche so was ähnliches- ich hätte gerne die Vorschau in meiner Form dargestellt (ähnlich wie Stefan in seinem Tool "Pac4SWX").
Aber irgendwie klappt das bei mir nicht.
Bei Stefans Beispiel "Vorschaubild in VB anzeigen" bekomme ich immer einen Fehler:
"Laufzeitfehler '429': Objekterstellung durch ActiveX-Komponente nicht möglich" an der Stelle
    ...
    If BmpSaver.extractBitMap2File(sldFilename, tmpFilename) Then
    ...

Mit dem Beispielmakro aus der Hilfe "SldWorks_GetPreviewBitmap.swp" bekomme ich den Fehler
"Laufzeitfehler '5': Ungültiger Prozeduraufruf oder ungültiges Argument"

Mach ich was falsch oder ist meine Maschine (64bit) zu blöd?

------------------
Klaus

www.al-ko.com | mein Gästebuch | privat...

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

StefanBerlitz
Guter-Geist-Moderator
IT Admin (CAx)



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

Beiträge: 8756
Registriert: 02.03.2000

SunZu sagt:
Analysiere die Vorteile, die
du aus meinem Ratschlag ziehst.
Dann gliedere deine Kräfte
entsprechend und mache dir
außergewöhnliche Taktiken zunutze.

erstellt am: 28. Apr. 2008 13:51    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 Herrmann 10 Unities + Antwort hilfreich

Hallo Klaus,

jupps, das gibt es mittlerweile seit der 2008 nicht mehr, dieses BMPSaver kam aus der sdm.dll, die seit der 2008 nicht mehr ausgelifert wird. Mittlerweile kann man den "SolidWorks Document Manager" dafür nutzen, ich bin auch gerade dabei das PAC4SWX darauf umzubauen. Die ganzen Beschreibungen dazu findest du auch in der API Hilfe.

da gibt es auch ein Beispiel in der API Hilfe namens "Get PNG Preview Bitmap and Stream for Configuration Example (VB)", das funktioniert mit der BMPPreviewbitmap im Prinzip genauso.

Ciao,
Stefan

------------------
Inoffizielle deutsche SolidWorks Hilfeseite    http://solidworks.cad.de
Stefans SolidWorks Blog

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

KMassler
Ehrenmitglied V.I.P. h.c.
CAD Admin + Mädchen für Alles...



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

Beiträge: 2675
Registriert: 06.11.2000

SolidWorks Start 1999
** CSWP 01/2008 **
------------------
Zuletzt beruflich:
- SWX2020 SP5;
- SAP/PLM+ECTR;
- DriveWorks Pro;
- Programmierung:
VBA, aktuell Visual Studio 2022/VB.Net
------------------
ab 2024 (privat):
Onshape und anderes

erstellt am: 28. Apr. 2008 14:04    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 Herrmann 10 Unities + Antwort hilfreich

Das ist natürlich jetzt blöd, da ich noch bis auf weiteres mit der 2007 arbeite ... gibts die Funktion da auch schon?

Die Vorschau von deinem Pac4SWX funktioniert übrigens.

Ach ja: die Fehler treten auch auf anderen Maschinen auf, egal ob 32 oder 64bit
------------------
Klaus

    www.al-ko.com | mein Gästebuch | privat...

[Diese Nachricht wurde von KMassler am 28. Apr. 2008 editiert.]

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

StefanBerlitz
Guter-Geist-Moderator
IT Admin (CAx)



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

Beiträge: 8756
Registriert: 02.03.2000

SunZu sagt:
Analysiere die Vorteile, die
du aus meinem Ratschlag ziehst.
Dann gliedere deine Kräfte
entsprechend und mache dir
außergewöhnliche Taktiken zunutze.

erstellt am: 28. Apr. 2008 14:35    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 Herrmann 10 Unities + Antwort hilfreich

Hallo Klaus,

ja, den SwDocumentMgr.dll (diesen Document manager) gibt es schon geraume Zeit, offiziell inkl. Dokumentation aber erst seit der 2007, wenn ich mich nicht irre. Damit kann man ein paar nette machen, ohne gleich SolidWorks zur Hand haben zu müssen, z.B. auch an die Dateieigenschaften (konfigurationsspezifisch) rankommen oder Referenzen umbiegen. Diese DLL wird mit der Installation von SolidWorks in C:\Programme\Gemeinsame Dateien\SolidWorks Shared installiert, man darf die aber auch selbst mit seiner Applikation verteilen.

Dass die Vorschau in PAC4SWX nicht funktioniert bemerkst du nur, wenn auf dem Rechner noch nie eine 2007 oder älter installiert war, da die sdm.dll erst seit der 2008 nicht mehr mit ausgeliefert wird.

Ciao,
Stefan

------------------
Inoffizielle deutsche SolidWorks Hilfeseite    http://solidworks.cad.de
Stefans SolidWorks Blog

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

KMassler
Ehrenmitglied V.I.P. h.c.
CAD Admin + Mädchen für Alles...



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

Beiträge: 2675
Registriert: 06.11.2000

SolidWorks Start 1999
** CSWP 01/2008 **
------------------
Zuletzt beruflich:
- SWX2020 SP5;
- SAP/PLM+ECTR;
- DriveWorks Pro;
- Programmierung:
VBA, aktuell Visual Studio 2022/VB.Net
------------------
ab 2024 (privat):
Onshape und anderes

erstellt am: 29. Apr. 2008 12:08    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 Herrmann 10 Unities + Antwort hilfreich

Die SwDocumentMgr.DLL kann ich nicht finden, weder bei installierter SWX 2007 noch bei SWX 2008.

Ich habe das mal mit GetPreviewBitmap und vb.net versucht, komme aber nicht zum Ziel.

Code:
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        'SWX connecten:
        If Not ConnectToSW(swApp) Then End

        mybitmap = swApp.GetPreviewBitmap(SWXFile, "Standard")

        If mybitmap Is Nothing Then
            MsgBox("Nothing")
            End
        End If

' sonst scheint alles zu klappen.
' Aber wie bringe ich jetzt die Bitmap in meine PicturBox pbPreview?
' Hier brauche ich nicht das System.drawing.bitmap,
' sondern ein System.drawing.Image

        pbPreview.Image = ???

'Das CType führt auch zu nix:
        pbPreview.Image = CType(mybitmap, Image)

    End Sub


Oder fehlt mir noch was, um das zugewiesese Image auch darzustellen? Müsste doch sofort kommen?

Grübel grübel ...

[Edit]
Vergesst das erst mal..man sollte die Bemerkungen in der API-Hilfe manchmal doch lesen:
"NOTE: Currently, only in-process applications (that is, macros or add-ins) can use this method; out-of-process applications (that is, executables) will get an automation error because the IPictureDisp interface cannot be marshalled across process boundaries. This is a Microsoft behaviour by design. See the Microsoft Knowledge Base for details."
Also komme ich hier mit meiner externen Anwendung nciht weiter. Ganz abgesehen davon, dass das Bitmap als stdole.StdPicture deklariert werden müsste.
Mist.
[/Edit]
------------------
Klaus

    www.al-ko.com | mein Gästebuch | privat...

[Diese Nachricht wurde von KMassler am 29. Apr. 2008 editiert.]

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

KMassler
Ehrenmitglied V.I.P. h.c.
CAD Admin + Mädchen für Alles...



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

Beiträge: 2675
Registriert: 06.11.2000

SolidWorks Start 1999
** CSWP 01/2008 **
------------------
Zuletzt beruflich:
- SWX2020 SP5;
- SAP/PLM+ECTR;
- DriveWorks Pro;
- Programmierung:
VBA, aktuell Visual Studio 2022/VB.Net
------------------
ab 2024 (privat):
Onshape und anderes

erstellt am: 29. Apr. 2008 13: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 Nur für Herrmann 10 Unities + Antwort hilfreich

ich schon wieder.

Jetzt habe ich die SwDocumentMgr.DLL gefunden, die wurde bei uns allerdings nicht mit installiert, ich vermute, die gehört zu PDMWorks o.ä.

Ich habe die in mein Projekt eingebunden und versuche, darüber die Preview zu bekommen:
                mybitmap = SwDocumentMgr.SwDMDocument.GetPreviewBitmap(IntError)
bekomme aber den Fehler "Verweis auf einen nicht freigegebenen Member erfordert einen Objektverweis."
 
Wie soll ich denn das noch einbinden? Ich habe einen Verweis auf SwDocumentMgr gesetzt und SwDocumentMgr per Imports reingeholt. SwDMDocument wird im Objekt-Browser als "Public class" angezeigt, sollte also verwendbar sein.

Was mache ich wie immer falsch?

------------------
Klaus

www.al-ko.com | mein Gästebuch | privat...

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

KMassler
Ehrenmitglied V.I.P. h.c.
CAD Admin + Mädchen für Alles...



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

Beiträge: 2675
Registriert: 06.11.2000

SolidWorks Start 1999
** CSWP 01/2008 **
------------------
Zuletzt beruflich:
- SWX2020 SP5;
- SAP/PLM+ECTR;
- DriveWorks Pro;
- Programmierung:
VBA, aktuell Visual Studio 2022/VB.Net
------------------
ab 2024 (privat):
Onshape und anderes

erstellt am: 29. Apr. 2008 16:15    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 Herrmann 10 Unities + Antwort hilfreich

Auch auf die Gefahr hin, dass ich nerve      ...

Jetzt habe ich das ganze nochmal mit der Solidworks_ExtractBitmap.DLL von Stefans Seite (ganz unten) probiert.

Und siehe da: Mit VB6 klappt das!!!            Damit könnte ich jetzt schön alle meine alten Programme verschönern.

Code:
Private Sub Form_Load()

    Dim retval As Long
    Const SolidWorksFilename = "c:\sw-work\preview.sldprt"
    Const BitmapFilename = "c:\temp\temp.bmp"
    Dim mySWXExtractBitmap As SldWorks_ExtractBitmap.SldWorks_ExtractBitmap
   
    Set mySWXExtractBitmap = New SldWorks_ExtractBitmap.SldWorks_ExtractBitmap
   
    retval = mySWXExtractBitmap.ExtractBitmap(SolidWorksFilename, BitmapFilename, _
                                              200, 200)
 
    pbPreview.Picture = LoadPicture(BitmapFilename)
End Sub


Nur mit VB.Net 2008 Express klappt das nicht.

Ich habe den Code von VB6 praktisch 1:1 in VB.Net übernommen und natürlich den Verweis auf die DLL gesetzt.
Aber da bekomme ich immer den Fehler 'Eine Ausnahme (erste Chance) des Typs "System.Runtime.InteropServices.COMException" ist in SWX-PreviewBitmap.exe aufgetreten'

Was ist jetzt daran falsch:

Code:
Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim retval As Long
        Const SolidWorksFilename = "c:\sw-work\preview.sldprt"
        Const BitmapFilename = "c:\temp\temp.bmp"
        Dim mySWXExtractBitmap As SldWorks_ExtractBitmap.SldWorks_ExtractBitmap

        'Bei dieser New-Anweisung tritt offenbar der Fehler auf:
        mySWXExtractBitmap = New SldWorks_ExtractBitmap.SldWorks_ExtractBitmap

        retval = mySWXExtractBitmap.ExtractBitmap(SolidWorksFilename, BitmapFilename, _
                                                  200, 200)
        Debug.Print(retval)
        pbPreview.Image = Image.FromFile(BitmapFilename)

    End Sub
End Class


------------------
Klaus

    www.al-ko.com | mein Gästebuch | privat...

[Diese Nachricht wurde von KMassler am 29. Apr. 2008 editiert.]

[Diese Nachricht wurde von KMassler am 29. Apr. 2008 editiert.]

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