Macro pour ajouter des propriétés suivant épaisseur de tôle

Bonjour à tous,

J'aurai besoin d'aide, ça fait pas mal de temps que je planche dessus sans réussir à avancer.

Je souhaiterai créer une macro qui remplirait automatiquement les propriétés de liste de pièces soudés avec certaines propriétés bien spécifique. Voici l'algorythme que je souhaiterai que la macro fasse.

- Détecter dans la liste des pièces souder lesquels sont des tôles

- Si c'est une tôle alors récupérer l'épaisseur de la tôle et le matériau.

- Créer deux propriétés "CODE" et "DETAIL"dont les valeurs varieront selon l'épaisseur de la tôle et le matériau (ex: pour une tôle 2mm en acier S235 : CODE = 02156 et DETAIL=Tôle noir ép. 2mm - pour une tôle 5mm en inox : CODE = 02582 et DETAIL=Tôle inox ép. 5mm.

Aujourdhui j'arrive seulement à faire une macro qui crée ces propriétés sur le premier article mais sans assigner une valeur variable (j'arrive pas à grand chose en résumé).

Je sais que j'en demande beaucoup mais ça me ferait gagner énormément de temps.

Merci d'avance,

Moe

Pour info, je suis encore sous SolidWorks 2012

2 « J'aime »

Bonsoir, sans la macro il va être difficile de l'améliorer ! Tu peux la poster dans un fichier texte stp ?

Mais je pense qu'il serait plus judicieux de décomposer tes problèmes pour poser plusieurs questions : ça sera plus clair pour tout le monde et tu auras beaucoup plus de réponse plutôt que de demander une macro complète toute faite !

La première question serait :  comment vérifier si une pièce est une tôle avec les API ?

1 « J'aime »

Bonjour,

Oui envoie nous la macro déjà réalisée pour qu'on puisse aiguiller plus facilement.

Et le but du forum c'est aussi d'en demander beaucoup pour ensuite en donner beaucoup :)

Merci pour votre retour.

Voici joint la macro au point où j'en suis.

Le support Mycad vient de m'indiquer qu'il n'était pas possible de filtrer suivant que c'est une tôle ou un élément mécano-soudé. Mais je me dis qu'il doit être possible de filtrer par une autre propriété (exemple: lorsqu'on crée une tôle, SW crée une propriétés "Plis" qu'il ne crée pas dans les autres cas).


20160125_-_copie.swp

Salut,

Je cherche exactement à faire la même chose.

En fait, nous avons des tôles en INOX 304L, INOX 304L BRUT, INOX 316L et INOX 316L BRUT et d'épaisseur de 1, 1.5, 2, 3 et 5mm avec un CODE spécifique à chaque tôle.

J'aimerais pouvoir lancer une macro qui ajoute automatiquement  une propriété "CODE" au corps "Sheet" en fonction de l'épaisseur et de la matière choisie.

As-tu réussi depuis le temps à faire fonctionner ta macro stp ?

Merci d'avance,

Lionel

Bonjour. Essaye le code ci-dessous.

Note: J'ai SolidWorks configuré en Anglais alors il faudra remplacer "Sheet Metal Thickness" et "Material" par les propriétées d'epaisseur et de materiel des pièces.

Option Explicit
Sub main()
    Dim swApp As SldWorks.SldWorks
    Dim swModel As SldWorks.ModelDoc2
    Dim swFeat As SldWorks.Feature
    Dim custPrpMgr As SldWorks.CustomPropertyManager
    Dim myThickness As String
    Dim myMaterial As String
    Dim myCode As String
    Set swApp = Application.SldWorks
    Set swModel = swApp.ActiveDoc
    If swModel Is Nothing Then Exit Sub
    Set swFeat = swModel.FirstFeature
    While Not swFeat Is Nothing
        If swFeat.GetTypeName2 = "CutListFolder" Then
            Set custPrpMgr = swFeat.CustomPropertyManager
            custPrpMgr.Get2 "Sheet Metal Thickness", "", myThickness
            Debug.Print "Epaisseur: " & myThickness
            custPrpMgr.Get2 "Material", "", myMaterial
            Debug.Print "Materiel: " & myMaterial
            Select Case myMaterial
                Case "INOX 304L"
                    Select Case myThickness
                        Case "1"
                            myCode = "0001"
                        Case "1.5"
                            myCode = "0002"
                        Case "2"
                            myCode = "0003"
                        Case "3"
                            myCode = "0004"
                        Case "5"
                            myCode = "0005"
                    End Select

                Case "INOX 304L BRUT"
                    Select Case myThickness
                        Case "1"
                            myCode = "0011"
                        Case "1.5"
                            myCode = "0012"
                        Case "2"
                            myCode = "0013"
                        Case "3"
                            myCode = "0014"
                        Case "5"
                            myCode = "0015"
                    End Select
                Case "INOX 316L"
                    Select Case myThickness
                        Case "1"
                            myCode = "0021"
                        Case "1.5"
                            myCode = "0022"
                        Case "2"
                            myCode = "0023"
                        Case "3"
                            myCode = "0024"
                        Case "5"
                            myCode = "0025"
                    End Select
                
                Case "INOX 316L BRUT"
                    Select Case myThickness
                        Case "1"
                            myCode = "0031"
                        Case "1.5"
                            myCode = "0032"
                        Case "2"
                            myCode = "0033"
                        Case "3"
                            myCode = "0034"
                        Case "5"
                            myCode = "0035"
                    End Select
            End Select
            Debug.Print "Code: " & myCode
            Debug.Print
            custPrpMgr.Delete "CODE"
            custPrpMgr.Add2 "CODE", swCustomInfoType_e.swCustomInfoText, myCode
        End If
        Set swFeat = swFeat.GetNextFeature
    Wend
End Sub

 

 

 

Merci, j'ai essayé...Il m'a bien créer ma propriété "CODE" mais rien en valeur.

Mes propriétés sont :

Nom de la propriété : "Epaisseur de tôlerie" pour l'épaisseur

Nom de la propriété : "Matériau" pour la matière

Et je souhaiterais qu'il me créé une propriété dont le nom serait "GPAO_BRUT" avec mes différents code comme valeur.

Merci d'avance,

Lionel

C'est bon, ça fonctionne...Je prenais une mauvaise variable pour ma matière.

Merci beaucoup.