Renommer feuille MEP Solidworks

vos questions concernant les API SolidWorks

Renommer feuille MEP Solidworks

Messagepar Sbier » Lun 22 Aoû 2016, 10:00

Bonjour,


Dans mon entreprise, le PDM utilisé gère la création de PDF d'après les mises en plan Solidworks approuvées.

Le seul problème est qu'il nomme les PDF d'après le nom de la feuille de la mise en plan Solidworks. Si le dessinateur a oublié de la renommer, le PDF se nommera donc "Feuille1" par exemple. Or, cela me pose problème.

Auriez-vous un moyen pour vérifier que les noms des feuilles ont été modifiés?



J'avais écrit une macro pour vérifier si la Feuille contenait le mot "Feuille", et si c'était le cas, qu'elle demande changer le nom de l'ensemble des feuilles pour lesquelles c'était le cas lors de l'enregistrement de la mise en plan.

Le problème : cette macro avait encore un petit beug mais ça à la rigueur c'est un détail. Mais surtout, je n'arrive pas à lancer cette macro au démarrage (ni avec le task manager ni en modifiant le shortcut de l'executable). En effet, cette macro doit toujours tourner en fond pour se lancer vraiment lors de l'enregistrement.


Puisque ma technique n'a pas marché, auriez-vous une autre solution, presque clef en main de préférence?


Merci beaucoup par avance.

Cordialement,


Elise KOENIG
Sbier
Ewok SolidWorks
 
Messages: 5
Inscription: Jeu 15 Jan 2015, 10:07

Re: Renommer feuille MEP Solidworks

Messagepar CLLC » Lun 22 Aoû 2016, 15:19

Bonjour

Je pense que dans le code de ta macro se trouve une ligne dans le style suivant:

swModel.SaveAs3(myFile, 0, 0)

qui permet d'enregistrer la page sous PDF ("Myfile" etant "chemin/nomduficher.PDF"(dans mon cas c'est "myfile" mais peut avoir une autre designation))

Peut être peux tu vérifier si "myfile" contient le terme "Nom de la feuille".

le nom de la feuille correspond à :

Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
Set swDraw = swModel
Set swSheet = swDraw.GetCurrentSheet
Debug.Print "File = " & swModel.GetPathName
Debug.Print " Sheet = " & swSheet.GetName


Il est aussi possible de déterminer automatiquement le nom du PDF comme par exemple : "Nom de la pièce - reference . PDF" afin de ne pas avoir a entrer le nom du fichier manuellement!?


Si tu veux envoie nous ta macro pour voir comment faire dans ton cas?
CLLC
Padawan SolidWorks
 
Messages: 68
Inscription: Ven 06 Juin 2014, 9:42

Re: Renommer feuille MEP Solidworks

Messagepar Sbier » Lun 29 Aoû 2016, 14:19

Bonjour,

Merci beaucoup pour votre réponse. Même si je n'ai malheureusement pas tout compris..

Vous trouverez donc ici ma macro : https://www.dropbox.com/s/u82dk3k7a7jnc ... s.swp?dl=0

Effectivement le top serait que la feuille se renomme automatiquement, d'après le nom de la pièce que l'on insère sur la mise en plan. J'avais essayé mais je n'arrivais pas à récupérer cette valeur. En effet, le paramètre "Désignation" qui correspond chez moi au nom de la pièce dans la configuration est un paramètre interne à la pièce et non à la mise en plan. Je n'ai donc pas réussi à le récupérer...

De plus, j'ai toujours ce même problème que je n'arrive pa sà lancer ma macro automatiquement à l'ouverture de Solidworks donc...

Merci en tout cas!

Sbier
Sbier
Ewok SolidWorks
 
Messages: 5
Inscription: Jeu 15 Jan 2015, 10:07

Re: Renommer feuille MEP Solidworks

Messagepar CLLC » Lun 29 Aoû 2016, 15:24

Bonjour

Sbier a écrit:De plus, j'ai toujours ce même problème que je n'arrive pa sà lancer ma macro automatiquement à l'ouverture de Solidworks donc...


Je n'ai jamais travaillé avec PDM, ni avec le language C++, donc je ne peux pas t'aider pour ça, peut être que qqun d'autre sur le forum pourra compléter?

Mais si tu le souhaite, je peux faire une macro exécutable (par un bouton dans la barre d'outil) lorsqu'une mise en plan est ouverte
Détail moi juste ce que tu souhaite (le plus précisément possible :wink: )
(par exemple: juste renommer la/les feuille selon le nom du fichier ou une propriété, enregistrer sous en PDF avec un nom particulier. ect..)

Peut etre trouveras tu des infos dans cette macro:
api-apprentissage/export-massif-pdf-dxf-t12375.html


Pour récupérer une propriété de la pièce de la mise en plan, je procède comme cela: déterminer la vue particulière dans la mise en plans, pour aller chercher le modèle que cette vue affiche:


Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
Set swDraw = swModel
Set swView = swDraw.GetFirstView 'determine la vue 1
Set swDrawModel = swView.ReferencedDocument 'determine le model de la vue

params = swDrawModel.GetConfigurationNames ' permet de connaitre les noms de toutes les config
For Each vName In params 'pour chaque config dans l'ensemble des config du model
Name = vName 'nom de la config
Set thisConfig = swDrawModel.GetConfigurationByName(Name)
Veleurdelapropriété = swDrawModel.GetCustomInfoValue(Name, NOMdelapropriété)
Next vName
CLLC
Padawan SolidWorks
 
Messages: 68
Inscription: Ven 06 Juin 2014, 9:42

Re: Renommer feuille MEP Solidworks

Messagepar Sbier » Mar 30 Aoû 2016, 10:11

Bonjour CLLC,


Mille mercis pour votre aide!

Je souhaiterais donc si possible une macro qui renomme l'ensemble des feuilles de ma mise en plan.
J'aimerais que le nom que prenne la feuille soit le numéro de pièce de la première vue insérée dans la configuration où elle est. Cette propriété s'appelle : NUMERO_DESSIN dans mon cas.

En effet, cela fonctionne pour la mise en plan ou le numéro de dessin se rempli automatiquement avec l'info $PRPSHEET:"NUMERO_DESSIN". Mais quand j'avais essayé de le coder, ça n'avait pas fonctionné puisque "NUMERO_DESSIN" est une propriété de la pièce et non pas de la mise en plan.






Après comme dit le top du top serait que cette macro s'exécute toute seule. En effet, on réalise cela car les gens oublient de renommer les feuilles chez nous. J'aimerais donc qu'elle se lance par exemple au moment de l'enregistrement, mais ça, c'est visiblement la partie que tu ne sais pas faire. Je vais encore continuer de plancher la-dessus.


J'espère que mes infos sont claires.
Merci par avance en tout cas
Sbier
Ewok SolidWorks
 
Messages: 5
Inscription: Jeu 15 Jan 2015, 10:07

Re: Renommer feuille MEP Solidworks

Messagepar CLLC » Jeu 22 Sep 2016, 15:23

Bonjour

Voilà un fichier macro ci joint.

Dit moi si ça fonctionne bien chez toi.

Ça renomme chaque feuille selon la propriété de la configuration du document de la vue de la feuille ("NUMERO_DESSIN")

Ca ne sauvegarde pas, mais intégre le a ton programme de sauvegarde peut être?

(désolé pour le retard, jai eu beaucoup de boulot à la rentré).

Code: Tout sélectionner
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

Dim params As Variant
Dim vName As Variant
Dim Name As String
Dim PropName As String
Dim swDrawModel As SldWorks.ModelDoc2
Dim NomPropriete As String
Dim count As Variant
Dim thisconfig As Configuration
   

Sub main()
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
If swModel Is Nothing Then Exit Sub
If swModel.GetType <> 3 Then Exit Sub

Debug.Print "FileName = " + swModel.GetPathName

NomPropriete = "NUMERO_DESSIN" '''''''NOM de la propriété de la configuration du document de la vue de la feuille


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

Debug.Print "  Current sheet = " & swSheet.GetName

count = swModel.GetModelViewCount

Set swView = swModel.GetFirstView



Do While Not swView Is Nothing

Set swDrawModel = swView.ReferencedDocument
If swDrawModel Is Nothing Then GoTo 56

Debug.Print "    Part name = " & swDrawModel.GetPathName

params = swDrawModel.GetConfigurationNames

                        'For Each vName In params
                            Name = params(0)
                            Debug.Print "      prop name = " & Name
                            Set thisconfig = swDrawModel.GetConfigurationByName(Name)
                            PropName = swDrawModel.GetCustomInfoValue(Name, NomPropriete)
                            Debug.Print "        prop value = " & PropName
                       ' Next vName



56


Set swView = swView.GetNextView




Loop
If PropName <> "" Then swSheet.SetName PropName
Next i

swModel.EditRebuild3

   
End Sub


Fichiers joints
Rename All Sheets(Configuration).zip
(10.31 Kio) Téléchargé 68 fois
CLLC
Padawan SolidWorks
 
Messages: 68
Inscription: Ven 06 Juin 2014, 9:42


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