Weergave van de gegevenskaart via VBA-macro

Hoi allemaal :smiley:

Ik probeer momenteel een functie in een macro te implementeren, maar ik zit vast... Ik doe dan ook een beroep op uw kennis!
Ik wou dat ik de datamap van een PDM-bestand kon openen via een VBA-macro, maar het resultaat dat ik krijg, laat me perplex ahaha

Hier is het stukje code waarin we geïnteresseerd zijn:

Global File As IEdmFile13
Global Folder As IEdmFolder10
Set Folder = vault.GetFolderFromPath(fs.GetParentFolderName(CheminFichier))
Set File = Folder.GetFile(fs.GetFileName(CheminFichier))
Dim CardView As IEdmCardView63
Set CardView = Folder.CreateCardView2(File.ID, 0, 400, 100, , 253)
CardView.ShowWindow (True)

En het resultaat is als volgt...

Het toont de datakaart half transparant en als ik er met de muis overheen beweeg, verdwijnt hij!
Hulp bij de functie: CreateCardView2

Als iemand een idee heeft hoe het te doen? Of het nu met deze of een andere methode is, ik ben er helemaal voor!

Bij voorbaat dank :wink:

Hallo

Door snel te testen, denk ik dat de functie alleen de kaart weergeeft zonder er toegang toe te hebben vanuit het oogpunt van bewerking, dus je moet het "plaatsen" in een venster met een achtergrond (in principe op een gebruikersformulier met een grijze achtergrond verschijnt het normaal, anders verschijnt het in de macro-editor in transparantie)

1 like

Ah, ik begrijp het! Maar hoe "installeer" je het in een UserForm?!

Of door een gebruikersformulier te maken dat knoppen bevat en het codefragment aanroept.
Of zet het direct in de procedure voor het activeren van het formulier.
Aan de andere kant moet u de hoogte- en breedte-informatie van de kaart ophalen om het formaat van het formulier correct te wijzigen en de hele kaart weer te geven.
Met behulp van de api als je in vb#net bent, is het dit stukje code:

' Get the size needed to display the card 
        Dim width As Integer
        Dim height As Integer
        view.GetCardSize(width, height)

Anders ongeveer in vba:

Private Sub UserForm_Activate()
Dim File As IEdmFile13
Dim Folder As IEdmFolder10
Dim width As Long
Dim height As Long
Set vault = New EdmVault5

vault.LoginAuto "_TDM_PROD", 0
CheminFichier = "C:\xxx\xxx"
Set Folder = vault.GetFolderFromPath(CheminFichier)
Set File = Folder.GetFile("xxx.SLDPRT")
Set CardView = Folder.CreateCardView2(File.ID, 0, 400, 100, , 253)
CardView.GetCardSize width, height
UserForm1.width = width + 80 'à affiner pour la largeur
UserForm1.height = height + 10 'à affiner pour la hauteur

CardView.ShowWindow (True)
End Sub

Zelfs als ik deze code volg, zie ik nog steeds de gegevenskaart in transparantie in het midden van niets en niet op het UserForm :confused:

Heeft u het in de activeringsprocedure van UserForm gezet?
U dient dit formulier ook in een hoofdmodule aan te roepen via Userform.Show

Ja, in mijn eerste functie vervul ik:

UserForm1.Show 

en in UserForm1 heb ik de volgende code:


Public Sub UserForm_Activate()

Dim l As Long
Dim h As Long

        Set Folder = vault.GetFolderFromPath(fs.GetParentFolderName(CheminFichier))
        Set File = Folder.GetFile(fs.GetFileName(CheminFichier))
        Dim CardView As IEdmCardView63
        Set CardView = Folder.CreateCardView2(File.ID, 0, 400, 100, , 253)
        CardView.GetCardSize l, h
        UserForm1.Width = l + 80
        UserForm1.Height = h + 80
        CardView.ShowWindow (True)
End Sub

VBA-code in Excel of SW? (Ik heb getest op Excel)

VBA onder SolidWorks!

Ik zal later testen en feedback geven

1 like

Dank je wel @Cyril_f ! Niet de eerste keer dat het je lukt om me te deblokkeren met een macro verhaal ahaha :slight_smile:
Ik ga ook zelf graven en ik zal ook terugkeren als ik de oplossing vind!

:wink: Ik heb er nogal wat gecodeerd, of het nu op SW / PDM / Excel / Word / Outlook is, dus als ik kan helpen.

Dus na het testen is het op SW gewoon een probleem van het declareren van variabelen. Excel doet het goed zonder de CardView-variabele te declareren.
In de SW api moet je toevoegen:

Dim CardView As IEdmCardView63 'ou IEdmCardView64 ça dépend de la version majeur de PDM
1 like

het lijkt het me eindelijk te laten zien!! Ik had de variabelen aangegeven, maar binnen de procedure van de UserForm_Activate ... Door het buiten de instructie te plaatsen, laat het me het zien!
Ik moet nog steeds graven, want aan mijn kant wordt het weergegeven als een afbeelding in het UserForm :confused: die ik niet kan wijzigen of er iets aan kan doen

Ja, dat is het probleem, de weergegeven kaart is slechts een "dood" object. Je moet in de opties kijken en het lijkt mij dat je andere functies moet uitvoeren om vervolgens de wijzigingen toe te passen

1 like