Macro ne fonctionnant plus avec SW 2017

Hello les gens,

Voilà mon problème. J'ai une macro qui permet de renommer les feuilles des mises en plan par le nom de la config insérée dans cette feuille. Jusqu'à la version 2016, elle fonctionnait très bien. Je viens de passer en 2017 SP4.1 et elle ne fonctionne plus correctement. Elle ne change que le nom de la 1ère feuille.

Et comme je n'y connait rien en VB, je suis dans le caca ...

Voici le fichier ...

Par avance merci

Cala


config_to_sheet.swp

Bonjour, 

Est ce que Solid te dis une erreur ou bien le code compile mais en fais pas ce que tu voudrais ?

 

Dimitri

Il ne donne pas d'erreur.

Le code s'execute comme d'habitude, il change le nom de la 1ère feuille, passe aux feuilles suivantes mais ne change pas le nom. Il laisse le nom déjà présent.

Bonjour,

 

Apres essai sous SW2016 elle ne fonctionne deja pas tres bien car

Pas de controle des nom precedent de feuille ce qui fait que si la configuration a le meme nom SW ne peut pas renomer plusieur feuille avec le meme nom

3 « J'aime »

C'est toi qui l'a écrite où bien tu l'as enregistré avec l'enregistreur de Macro ?

C'est possible d'avoir des config avec le même nom dans la même pièce ? Je ne crois pas.

Pour mon utilisation, elle a toujours très bien fonctionnée ... jusqu'à SW 2017

Ni écrite, n'y enregistré. Je n'y connais rien en VB. C'est un fichier qu'on m'a refilé il y a des années.

Mais je ne sais plus d'où.

En theorie non c'est pas possible mais par contre dans ta mise en plan il est possible que la vue de reference fasse toujours appel a la meme configration

 

Les piste sont les suivantes

SetupSheet5 est obsolete donc deja le mettre à jour :)

http://help.solidworks.com/2017/english/api/sldworksapi/solidworks.interop.sldworks~solidworks.interop.sldworks.idrawingdoc~setupsheet5.html

2 « J'aime »

Effectivement je pourrais utiliser la même config dans plusieurs feuilles.

Mais dans ce cas je n'utilise pas cette macro.

Elle me sert pour mes plans d'opérations 

Salut,

Juste pour être sur, tu as une pièce avec x configurations, et les x configurations on leur MEP dans un seul fichier MEP avec une configuration par folio?

1 « J'aime »

Exact !

Bonjour,

Tu peux déjà commencer par remplacer la ligne :

swSheet.SetName ConfigName

Par :

swSheet.SetName ConfigName & "-" & i

Tes feuilles seront alors nommées "NomDeConfig"-"n°DeFeuille", à toi de voir si cela est gênant.

Cordialement

Merci pour l'info, mais j'en ai pas besoin.

De rien, et oups, désolé !

si c'est une ancienne macro 

voir si c'est pas les iff et if qui differe selon les versions

de solidworks et excel

et compabilite excel solidworks selon les version aussi

@+ ;-)

Bonsoir,

J'abonde dans le sens de gt22 mais le plus simple serait de dérouler la macro en pas-à-pas pour voir le comportement et rajouter des debug.print pour vérifier le contenu de configname.

De plus, il aurait était bon de "zapper" le fond de plan, ne scanner que les vues et arrêter le traitement une fois une valeur obtenu sur la configuration.

Je confirme par contre que ça fonctionne sur 2016 sans problème (même si peu propre en terme de code) et qu'en toute théorie Solidworks ne s'amuse pas à retirer les fonctions dites obsolètes donc probable bug ailleurs ou incompatibilité hardware/software.

1 « J'aime »

@gt22 & Cyril.f

hola, je suis largué. Je ne comprends pas du tout de quoi vous parlez.

Est-ce que quelqu'un arrive à corriger cette macro pour qu'elle fonctionne sur SW17 ?

Voici le contenu du fichier .swp

Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swDraw As SldWorks.DrawingDoc
Dim swSheet As SldWorks.Sheet
Dim swModelview2 As Configuration
Dim vSheets As Variant
Dim swView As SldWorks.View
Dim Part As Object
Dim i As Integer

Sub main()

'Le template se trouve dans le dossier template drawing de SW

Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
Set swDraw = swModel
Dim ConfigName As String
Dim bRet As Boolean
Dim vSheetProps As Variant


vSheets = swDraw.GetSheetNames
For i = 1 To swDraw.GetSheetCount
swDraw.ActivateSheet vSheets(i - 1)
Set swSheet = swDraw.GetCurrentSheet

Count = swDraw.GetModelViewCount

Set swView = swDraw.GetFirstView

Do While Not swView Is Nothing
ConfigName = swView.ReferencedConfiguration
Set swView = swView.GetNextView
Loop
Set Part = swApp.ActiveDoc
boolstatus = Part.SetupSheet5(swSheet.GetName, 12, 12, 2, 3, True, "a3 - iso - NND.slddrt", 0.42, 0.297, "Par défaut", True)
swSheet.SetName ConfigName

Next i

swModel.ForceRebuild3 (False)
End Sub
 

Bonjour,

Si tu veux tu peux essayer celle-ci.

Cordialement,


config_to_sheet_2.swp
3 « J'aime »

Yes ça marche. Résultat en image.

Merci beaucoup d.roger !!!!!!!!!!!!

Bon week end.


macro_config_to_sheet_sw_2017.jpg