Macro - Appliquer formulaires de propriétés (.asmprp, .drwprp, .prtprp)

Bonjour !

Je suis en train de travailler sur une macro afin d'entre autre choses d'appliquer mes nouveaux formulaires de propriétés à d'anciens fichiers qui utilisent encore les anciens.

J'aimerais savoir si vous sauriez comment aller cherche les fichier .asmprp, .drwprp et .prtprp et les appliquer à un asm, drw ou prt avec  une macro.

Merci d'avance si vous avez une piste.

Bonne journée

Sans vérifier, j'ai trouvé ça:

sub main()
application.sldworks.activedoc.extension.custompropertybuildertemplate(false) = "whatever.prtprp"
end sub

https://help.solidworks.com/2020/english/api/sldworksapi/SolidWorks.Interop.sldworks~SolidWorks.Interop.sldworks.IModelDocExtension~CustomPropertyBuilderTemplate.html?verRedirect=1

 

Source:

https://www.cadforum.net/viewtopic.php?t=26

 

Bonjour,

Merci à vous 2. A Damien pour l'idée et sdadenis pour la solution.

Ci-joint ma macro avec test du type de fichier.

Bonne journée.


appliquer_formulaires_de_proprietes.swp

Merci, pour les pistes !

Je suis arrivé à quelque chose qui semble fonctionner. C'est certainement ni parfait ni optimisé, je débute...

Dim swApp As Object
Dim swModel As SldWorks.ModelDoc2

Sub main()

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

' Contrôle si un document est ouvert dans SolidWorks
If swModel Is Nothing Then
MsgBox "Il faut un document ouvert pour utiliser cette fonction !", vbInformation, "New MasqueMarquage "

' Contrôle si le document ouvert est une pièce
ElseIf Application.SldWorks.ActiveDoc.GetType = swDocPART Then
' Contrôle si le bon masque de marquage est déjà appliqué
If Not Application.SldWorks.ActiveDoc.Extension.CustomPropertyBuilderTemplate(False) = "Masque_marquage_PRT.prtprp" Then
' Applique le bon masque de marquage
Application.SldWorks.ActiveDoc.Extension.CustomPropertyBuilderTemplate(False) = "Masque_marquage_PRT.prtprp"
End If
        
' Contrôle si le document ouvert est un assemblage
ElseIf Application.SldWorks.ActiveDoc.GetType = swDocASSEMBLY Then
' Contrôle si le bon masque de marquage est déjà appliqué
If Not Application.SldWorks.ActiveDoc.Extension.CustomPropertyBuilderTemplate(False) = "Masque_marquage_ASM.asmprp" Then
' Applique le bon masque de marquage
Application.SldWorks.ActiveDoc.Extension.CustomPropertyBuilderTemplate(False) = "Masque_marquage_ASM.asmprp"
End If

' Contrôle si le document ouvert est une mise en plan
ElseIf Application.SldWorks.ActiveDoc.GetType = swDocDRAWING Then
' Contrôle si le bon masque de marquage est déjà appliqué
If Not Application.SldWorks.ActiveDoc.Extension.CustomPropertyBuilderTemplate(False) = "Masque_marquage_DRW.drwprp" Then
' Applique le bon masque de marquage
Application.SldWorks.ActiveDoc.Extension.CustomPropertyBuilderTemplate(False) = "Masque_marquage_DRW.drwprp"
End If
   
End If

End Sub

 

Pour un 1er dev cela me parait plutôt pas mal et plutôt bien optimisé, puisque tu as pris en compte la gestion des erreurs.

Cela devrait effectivement être fonctionnel, plus qu'a tester dans la durée.