Modification macro PDF.

vos questions concernant les API SolidWorks

Modification macro PDF.

Messagepar TOM_@ » Ven 30 Nov 2012, 14:28

Bonjour.

Il y a quelques temps, j'ai crée une macro qui a pour but de générer un PDF de la Mise En Plan (MEP) affiché à l'écran avec la grande participation de Annwn. (Merci à lui :D ).
Le fichier PDF ainsi créé s'enregistre au même endroit que la MEP source.
L'avantage, c'est que le nom du fichier PDF mentionne l'indice de la MEP --> "Nom de de fichier(Indice de révision)" --> Ex : TOTO(A).PDF.

Je possède 2 types de fichiers de propriétés personnalisées :

1--> pour les fichiers standards
2--> pour les fichiers à plusieurs configurations (ou familles de pièces).

Dans le second cas, je peux attribuer un indice de révision propre à chaque configuration de pièces.
Cependant, lorsque je génère le PDF de la MEP, l'indice est celui de la configuration par défaut et non celui de la configuration souhaitée.

Je m'explique :

Soit une pièce avec 3 configuration :
. défaut à l'indice (-)
. TOTO_TYPE_A à l'indice (A)
. TOTO_TYPE_B à l'indice (B)

Lorsque je génère le PDF de la mise en plan de la configuration TOTO_TYPE_A, le fichier ainsi crée prend le nom suivant TOTO_TYPE_A(-).PDF,
alors qu'il devrait générer le fichier PDF avec le nom suivant TOTO_TYPE_A(A).PDF.

Je vous joins le code :
Code: Tout sélectionner
Dim swApp As Object
Sub main()

Dim PathName As String
Dim theRev As String
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swParentModel As SldWorks.ModelDoc2
Dim swDraw As SldWorks.DrawingDoc
Dim swView As SldWorks.View

Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc

PathName = Mid(swModel.GetPathName, 1, Len(swModel.GetPathName) - 7)

Set swDraw = swModel
Set swView = swDraw.GetFirstView
Set swView = swView.GetNextView
Set swParentModel = swView.ReferencedDocument

theRev = swParentModel.CustomInfo2("", "Indice")

If Verification(PathName & "(" & theRev & ")" & ".PDF") = True Then
    If MsgBox("Attention, un fichier possédant le même nom est déjà existant. Voulez-vous enregistrer le fichier?", vbYesNo) = vbNo Then
        Exit Sub
    Else
        swModel.SaveAs2 PathName & "(" & theRev & ")" & ".PDF", 0, True, False
    End If
Else
    swModel.SaveAs2 PathName & "(" & theRev & ")" & ".PDF", 0, True, False
End If

End Sub

Public Function Verification(Path As String) As Boolean
On Error GoTo Erreur
FileLen (Path)
Verification = True
Exit Function
Erreur:
Verification = False
End Function


Je pense qu'il faut corriger le code sur cette ligne là, mais je n'ai aucune idée.
Code: Tout sélectionner
theRev = swParentModel.CustomInfo2("", "Indice")


Merci d'avance pour vos conseils éclairés.
TOM_@
Ewok SolidWorks
 
Messages: 31
Inscription: Jeu 01 Oct 2009, 13:06

Re: Modification macro PDF.

Messagepar Titifonky » Mer 12 Déc 2012, 16:05

Bonjour,

Si tu veux récupérer une propriété spécifique à une configuration, dans ton cas, "Indice" il faut passer par le CustomPropertyManager de la configuration et non par celui du modèle.

Voici le code modifié
Code: Tout sélectionner
    Dim swApp As Object
    Sub main()

    Dim PathName As String
    Dim theRev As String
    Dim swApp As SldWorks.SldWorks
    Dim swModel As SldWorks.ModelDoc2
    Dim swParentModel As SldWorks.ModelDoc2
    Dim swDraw As SldWorks.DrawingDoc
    Dim swView As SldWorks.View
    Dim swConfig As SldWorks.Configuration
    Dim swPropManager As SldWorks.CustomPropertyManager

    Set swApp = Application.SldWorks
    Set swModel = swApp.ActiveDoc

    PathName = Mid(swModel.GetPathName, 1, Len(swModel.GetPathName) - 7)

    Set swDraw = swModel
    Set swView = swDraw.GetFirstView
    Set swView = swView.GetNextView
    Set swParentModel = swView.ReferencedDocument
    Set swConfig = swParentModel.GetConfigurationByName(swView.ReferencedConfiguration)
    Set swPropManager = swConfig.CustomPropertyManager
   
    swPropManager.Get4 "Indice", False, theRev, theRev

    If Verification(PathName & "(" & theRev & ")" & ".PDF") = True Then
        If MsgBox("Attention, un fichier possédant le même nom est déjà existant. Voulez-vous enregistrer le fichier?", vbYesNo) = vbNo Then
            Exit Sub
        Else
            swModel.SaveAs2 PathName & "(" & theRev & ")" & ".PDF", 0, True, False
        End If
    Else
        swModel.SaveAs2 PathName & "(" & theRev & ")" & ".PDF", 0, True, False
    End If

    End Sub

    Public Function Verification(Path As String) As Boolean
    On Error GoTo Erreur
    FileLen (Path)
    Verification = True
    Exit Function
Erreur:
    Verification = False
    End Function
Titifonky
Padawan SolidWorks
 
Messages: 89
Inscription: Mar 05 Avr 2011, 8:23
Localisation: Lille .............. SW Premium 2013 .......... Seven 64b

Re: Modification macro PDF.

Messagepar TOM_@ » Mer 19 Déc 2012, 7:55

Merci pour l'info.
TOM_@
Ewok SolidWorks
 
Messages: 31
Inscription: Jeu 01 Oct 2009, 13:06


Retourner vers Questions générales sur les API

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 4 invités

banniere