Renommer les pièces d'un assemblage en fonction d'une variable active

Bonjour, 

j'aurais besoin de renommer toutes les pièces de mes assemblages qui sont en bois. Pour cette partie pas trop de soucis je pense car swood crée des propriétés bien spécifiques qui permet de différencier les quincailleries du reste. 

Quelle solution préconiseriez vous ? L'idée c'est d'avoir l'assemblage qui aurait un nom du type XXXXXX-XXXX dont les quatre derniers numéros sont des chiffres. 

Ce compteur sera incrémenté pour chaque panneau de bois faisant partie de l'assemblage. 

ProjectManager est il adapté pour ce type de demande ou faut il que je développe une macro pour le faire ? 

Merci d'avance a vous tous :) 

Bonne journée ! 

Vincent 


capture.png

Avec ProjectManager cela doit être faisable.

Créer une règle qui remplace les 4 derniers caractères par ceux que tu souhaite avec comme condition si la propriété matière = bois

Et pour la valeur mettre un compteur smartcounter automatique ou quelques choses comme cela.

Il reste plus qu'a faire quelque test et tu devrais t'en sortir!

 

Sinon c'est aussi faisable avec smartbom + Intégration

Smartbom pour récupérer une liste de fichier csv ayant la propriété bois

Puis intégration pour faire la modification de nom avec un compteur incrémenté

2 « J'aime »

Merci de votre réponse, 

J'ai testé effectivement j'arrive a incrémenter le nom de mes différents panneaux en fonction du nom du parent. 

En revanche, le compteur ne se remet pas a zéro a chaque assemblage traité, pensez vous que c'est possible de le faire ? 

Deuxième remarque, quand je traite un assemblage il est dans un dossier a chaque fois qui contient (plan, fichier d'assemblage et fichiers pièces). J'aimerais ne pas avoir a indiquer le dossier de destination a chaque fois mais qu'il prenne le dossier de l'assemblage traité sur le moment. 

Merci d'avance pour vos réponses, 

Cordialement,

Vincent

Je n'ai pas trouvé avec une recherche rapide comment réinitialisé un compteur à chaque projet si @jmsavoyat  passe par là il nous dira si c'est faisable. (il me semble avoir vu un sujet la dessus mais je ne le trouve plus)

1 « J'aime »

Bonjour,

Je pense que vous pouvez vous en sortir avec les compteurs avancés en utilisant un "Compteur automatique" qui se réinitialisera  en fonction d'une variable. Voir https://help.visiativ.com/mycadtools/2021/fr/SmartCounter4.html

Cordialement

3 « J'aime »

Bonjour, 

Finalement, j'ajoute des conditions au renommage des pièces en fonction d'une propriété de configuration que créer SWOOD. 

J'ai ébauché une macro, mais j'ai du mal a comprendre correctement comment fonctionne le dialogue avec solidworks. 

J'arrive a obtenir tous les enfants différents que possède mon assemblage. 

Maintenant j'aimerais reussi a vérifier qu'une propriété est belle est bien existante dans chacun d'eux, si oui je le renomme sinon, je passe au suivant. 

Pouvez vous m'aider ? Je poste le début de mon code. 

Merci d'avance, bonne journée. 

 

Dim swApp As Object
'Option Explicit

Sub main()

Dim swApp As SldWorks.SldWorks
Dim swModel As ModelDoc2
Dim swAssy As ModelDoc2
Dim swModelDocExt As ModelDocExtension
Dim swCustProp As CustomPropertyManager
Dim val As String
Dim valout As String
Dim bool As Boolean
Dim Bois As String
Dim nom() As String
Dim list As String
Dim retval() As String
Dim texte As String

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

If swModel.GetType = swDocASSEMBLY Then

retval = swModel.GetDependencies2(False, False, False)

ReDim nom(1 To ((UBound(retval) - 1) / 2) + 1)
For i = 0 To (UBound(retval) - 1) / 2

    Set swModelDocExt = swModel.Extension
    Set swCustProp = swModelDocExt.CustomPropertyManager("")
    bool = swCustProp.Get4("SWOODCP_PanelStockLength", True, val, valout)
    Debug.Print "Value:                    " & val
    Debug.Print "Evaluated value:          " & valout
    Debug.Print "Up-to-date data:          " & bool
    texte = texte & retval(2 * i) & vbCr


Next i
End If
MsgBox (texte)

End Sub