Executer un macro en masse dans une bibliothèque

J’ai créé une macro qui permet de diminuer la qualité d’image, de facétalisation et de courbe dans les pièces de bibliothèque pour optimiser leur utilisation. La difficulté réside dans le fait que je ne peux exécuter que lorsque la pièce est ouverte sur Solidworks.
Connaissez-vous une méthode pour exécuter cette tâche directement avec le planificateur de tâches en choisissant le répertoire souhaité?
Merci d’avance

Si tu dispose des outil MyCadtools tu peux le faire avec Intégration sinon profite de la version d’essai de 1 mois!
En 1 tu sélectionne ton dossier.
En 2 tu crées une nouvelles règle
En 3 la condition systématique que tu fais glisser sur le dossier ET
En 4 L’opération Divers, Lancement d’une macro
En 5 tu renseigne la macro (chemin à aller chercher)
En 6 la méthode (Main?)
En 7 tu fais glisser ta macro dans opération
En 8 tu filtre si besoin (Pièce, Assemblage, Mise en plan)
En enfin appliquer


Solidworks va ensuite traiter en lot la liste de sélection 1 par un et lui appliquer ta macro.
Et j’avais oublié juste en dessous de action tu peux modifier si tu enregistre ou pas en quittant. (pour ton cas enregistré la modif)

2 « J'aime »

Bonjour,
en effet ce doit être main la méthode
voici la macro

Option Explicit

’ ******************************************************************************
’ by F.PENNERAS
’ DEC 27, 2023
’ ******************************************************************************

’ Early bound variables
Dim swApp As SldWorks.SldWorks
Dim swDoc As SldWorks.ModelDoc2
Dim Part As SldWorks.ModelDoc2

’ Variables To Add (Variable Variables)
Dim CurVal As Double
Dim MaxVal As Double
Dim MinVal As Double
Dim boolstatus As Boolean
Dim longstatus As Long, longwarnings As Long
Dim swTextFormat As SldWorks.TextFormat
Dim TextFormatObj As Object
Dim ModelDocExtension As ModelDocExtension

Sub main()

’ Connexion au document SolidWorks actuellement actif
Set swApp = Application.SldWorks
Set swDoc = swApp.ActiveDoc
Set Part = swApp.ActiveDoc
Set ModelDocExtension = Part.Extension

'Gestionnaire d’erreur si aucun document n’est chargé
If Part Is Nothing Then MsgBox « A Solid Works file must be active! », vbCritical: Exit Sub

’ Obtenir les valeurs actuelles, minimales et maximales à partir des préférences d’écart d’ombrage de la qualité de l’image.
’ Charger ces valeurs dans les variables « CurVal », « MinVal » et « MaxVal ».
swDoc.Extension.GetUserPreferenceDoubleValueRange swImageQualityShadedDeviation, CurVal, MinVal, MaxVal

’ Fixe une nouvelle valeur pour l’écart d’ombrage
swDoc.SetUserPreferenceDoubleValue swImageQualityShadedDeviation, MaxVal

’ Decochez la case « Optimiser la longueur des bords ».
Part.SetUserPreferenceToggle swImageQualityUseHighQualityEdgeSize, False

’ Decochez la case « Sauvegarder la facetisation ».
Part.SetUserPreferenceToggle swImageQualitySaveTesselationWithPartDoc, False

’ Decochez la case « Ameliorer la qualité de la courbe ».
Part.SetUserPreferenceToggle swImageQualityWireframeHighCurveQuality, False

’ Définir une nouvelle valeur pour « Résolution filaire et haute qualité HLR/HLV ».
Part.SetUserPreferenceIntegerValue swImageQualityWireframeValue, 1

End Sub

Tu trouveras le lien de l’installation des outils MyCadTools ici:

Version d’essai 1 mois.
Ensuite tu utilise Intégration et voir les conseils et l’image du poste précédent pour te guider.

1 « J'aime »

C’est parfait je vais tester ça, merci beaucoup

voila on va voir ce que ça donne

Test le sur 2-3 pièce pour voir et attention il faut qu’elle soit accessible en écriture.
Mais déjà utilisé et cela fonctionne très bien (si la macro est fonctionnelle)

1 « J'aime »

c’est au top çà a marcher du premier coup! le gros gros gain de temps! 4 minute par pièces d’économiser!!

Mille merci

1 « J'aime »

Oui c’est pour ça que nous avions investit dans les outils MYcad! Car très utile pour des tâches en lots.
Et le coup pour nous est largement amorties sur l’année

3 « J'aime »