Slt, je recherche une macro pour renommer mes onglets de mise en plan

Salut, 

Je recherche une macro que je pourrais personnaliser et qui me permettrais d'aller chercher une propriété du modèle dans ma vue active et une fois capter renommer la feuille selon cette propriété et ce pour tout les feuilles. Nous fesons des mise en plan qui comporte plusieur pièces avec des numero de gravure et c'est ce numero de gravure que j'aimerais importer afin de nommer l'onglet de ma mise en plan. Si vous avez quelque chose SVP m'en faire pars. Merci énormément! (nous somme sur SW 2016)

 

Eric

2 « J'aime »

Bonjour,

regardez voir si ça peut vous aider...

http://www.lynkoa.com/tutos/macro-solidworks-renommer-feuille-1-de-la-msie-en-plan

1 « J'aime »

J'en ai trouvé une autre qui devrait fonctionner... il faudra peut-etre changer le code pour y mettre votre fonction (numéro de gravage)...

Je l'ai trouvé ici dans la dernier post:

http://www.forum-cao-3d.fr/api-questions/renommer-feuille-mep-solidworks-t12546.html


rename_all_sheetsconfiguration.swp
1 « J'aime »

Salut,

serait-il plus simple de faire la capture d'une donnée directement dans ma mise en plan et demander a ce que la macro renomme la feuille selon cette donnée? Car au final le numero qui m'interesse s'incris automatiquement dans mon cartouche! Je trouve juste abèrent que Dassault n'est pas penser intégrer cette option directement ds les propriétés de feuille!!!!

Merci

Merci de ta réponse cobra, mais j'avais déjas cette macro mais elle ne prend pas une propriété direct dans la pièce elle meme, mais bien soit le nom de config ou le nom de la pièce :(

Un truc bête, mais si tu lis cette propriété au nom de la config ça devrait marcher...

Bonjour,

Pour récupérer la propriété dans le cartouche le plus simple est de boucler sur les annotations.

En gros il faut utiliser ce type de boucle:

    Set swView = swDraw.GetFirstView  'Déclaration pour activer le fond de plan
     Set swNote = swView.GetFirstNote
    swModel.ClearSelection2 (True)
    Do While Not swNote Is Nothing
        Set swAnn = swNote.GetAnnotation
        sValue = "$PRPSHEET:""" & Num_Gravage & """" 'Mettre le nom de la propriété recherchée
        If swNote.PropertyLinkedText = sValue Then
                swSheet.SetName (swNote.GetText)
                Exit Sub
        End If
        swModel.ClearSelection2 (True)
        Set swNote = swNote.GetNext
    Loop
 

 

Bon, merci Ceril, mais comme je ne suis pas programmeur VBA, je ne suis pas trop sur ou et comment insérer ta ligne, voila le code que j'essais d'adapter èa mes besoin! Si tu pouvais me donner un coup de main ce serait génial. Merci

Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swSheet As SldWorks.Sheet
Dim swModelview2 As Configuration
Dim ConfigName As String
Dim vSheets As Variant
Dim swView As SldWorks.View
Dim i As Integer

Sub main()
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc

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

Set swView = swModel.GetFirstView

Do While Not swView Is Nothing
ConfigName = swView.ReferencedConfiguration
Set swView = swView.GetNextView
Loop
swSheet.SetName ConfigName
Next i

swModel.EditRebuild3
swModel.Save2 False
    
End Sub

1 « J'aime »

Bonjour,

Ci-joint le code qui correspond. Reste juste à renseigner le nom de la propriété recherchée.

 


renommage_feuille.txt

Jai fait une petite erreur, pour le traitement de plusieurs feuilles, remplacer exit sub par exit do dans cette partie:

If swNote.PropertyLinkedText = sValue Then
                swSheet.SetName (swNote.GetText )
                swModel.EditRebuild3
                swModel.Save2 False
                Exit Do

1 « J'aime »

Au top Cyril! Merci énormément de ton coup de pouce!!!

1 « J'aime »

Bonjour, relativemement à cette nouvelle macro, y'a t'il un  moyen de lui dire que la note dans laquel ce trouve l'info que je cherche pour renommer mes onglets contient en fait plus d'une propriétée?

La note est composer de 2 propriétés pour former mon numero final, et je ne sais pas comment lui dire le &!

En résumer comment lui dire de copier la note qui contient cettepropriété & cette propriété?

Merci de vôtre aide, je suis nul en VBA :)

 

Eric

Bonjour,

Dans le code, remplacer la ligne sValue = "$PRPSHEET:""Num_Gravage""" 'Mettre le nom de la propriété recherchée par:

sValue = "$PRP:""Num_gravage""" & " " & "$PRP:""Autre""" & " "   'Mettre le nom de la propriété recherchée"

S'il n'y a rien entre les deux propriétés dans le contenu de l'annotation, supprimer le premier & " ":

sValue = "$PRP:""Num_gravage""" & "$PRP:""Autre""" & " " 

Bonjour Cyril,  Voilà ce que j'ai fait, mais ça ne fonctionne pas?!

    Do While Not swNote Is Nothing
        Set swAnn = swNote.GetAnnotation
        sValue = "$PRPSHEET:""No Dessin""" & "$PRPSHEET:""No Pièce (dessin)"""  'Mettre le nom de la propriété recherchée"
        If swNote.PropertyLinkedText = sValue Then
                swSheet.SetName (swNote.GetText)
                swModel.EditRebuild3
                swModel.Save2 False
                Exit Do
        End If
        swModel.ClearSelection2 (True)
        Set swNote = swNote.GetNext
    Loop
Next
End Sub

Je n'ai copier ici que la section qui nous interesse.

$PRPSHEET ou seulement $PRP?

 

Merci

Eric

Bonjour peu importe PRP ou PRPSHEET ça dépend d'où est tiré la propriété.

Il faut absolument le & " " en fin de sValue soit:

sValue = "$PRPSHEET:""No Dessin""" & "$PRPSHEET:""No Pièce (dessin)"""  & " "