[SolidEdge] Syntaxe code macro

Bonjour,

j'essaie de créer des nouvelles matières sur solidEdge depuis un classeur Excel. Malheureusement je n'arrive pas à trouver la bonne syntaxe de la méthode "AddMaterialToLibrary" de l'objet "MatTable".

Je pense que le problème vient de la propriété "PropList" qui est une variante de plusieurs valeurs.
pour intégrer cette propriété dans la méthode j'ai créé une variante "PropList" avec mes propriétés à l'intérieur. Mais la méthode "AddMaterial" ne semble pas la comprendre comme il faut... Auriez-vous une idée de la façon dont je pourrais faire ça svp ? Merci !!

Voici la méthode définie par solidEdge : https://docs.plm.automation.siemens.com/docs/se/2020/api/webframe.html -> https://docs.plm.automation.siemens.com/docs/se/2020/api/SolidEdgeFramework~MatTable~AddMaterialToLi...
Et Voici mon code :

Sub AddMaterialToLibrary()
Set objApp = GetObject(, "SolidEdge.Application")
Set objMatTable = objApp.GetMaterialTable()
Set objDocs = objApp.Documents
Set objDoc = objDocs.Open("V:\SolidEdge\Data\100\100001.par")
Dim propList() As Variant
Dim materialName As String
Dim libraryName As String
Dim materialPath As String
Dim n As Long
Dim faceStyle As String
Dim fillStyle As String
'With PropList
'    .Add (Range("f2")) 'Density [kg/m3)
'    .Add (Range("g2")) 'Coef of Thermal Exp. [1/°C]
'    .Add (Range("H2")) 'Thermal Conductivity [W/m°C]
'    .Add (Range("I2")) 'Specific Heat [J/kg°C]
'    .Add (Range("J2")) 'Modulus of Elasticity [Pa]
'    .Add (Range("K2")) 'Poisson's Ratio [Unitless]
'    .Add (Range("L2")) 'Yield Stress [Pa]
'    .Add (Range("M2")) 'Ultimate Stress [Pa]
'    .Add (Range("N2")) 'Elongation % [Unitless]
'End With
'materialTable.AddMaterialToLibrary(materialName, libraryName, materialsPath, propList.Length, propList, faceStyle, fillStyle)
materialName = Range("B2")
libraryName = Range("A3")
materialPath = "Others"
propList() = _
    Array(Range("F2"), _
        Range("G2"), _
        Range("H2"), _
        Range("I2"), _
        Range("J2"), _
        Range("K2"), _
        Range("L2"), _
        Range("M2"), _
        Range("N2"))
n = UBound(propList) + 1
faceStyle = Range("C2")
fillStyle = Range("D2")
Call objMatTable.AddMaterialToLibrary(materialName, libraryName, materialPath, n, Join(propList(), ", "), faceStyle, fillStyle)
Debug.Print Join(propList(), ", ")
End Sub

Vous trouverez également en fichier joint le fichier excel en question.

Un grand merci pour votre aide ! :)

re,

cela ressemble à VBA, mais ne l'est pas. Vous êtes sûr que cela fonctionne avec Excel ? Peut-être que vous devez ajouter des Apps et des références (???)

https://community.sw.siemens.com/s/question/0D54O000079uAeWSAU/how-to-create-solid-edge-file-with-ex...

Bonjour BsAlv,

Merci pour la réponse ! Non effectivement ça n'est pas du VBA. J'ai déjà adapté un peu le code pour que mes autre macros fonctionnent. Concernant ce problème il me manquait juste une petite ligne pour affecter le document à la table :

objMatTable.SetActiveDocument objDoc

je peux donc maintenant créer mes matières. J'ai un autre souci mais qui ne concerne pas VBA je pense... Lorsque je crée ma matière selon ces lignes :

Dim propList(1 To 9) As Variant
propList(1) = Range("I2") 'Densité [kg/m3]
propList(2) = Range("J2") 'Coef. dil. therm. [1/°C]
propList(3) = Range("K2") 'cond. therm. [W/m°C]
propList(4) = Range("L2") 'Chaleur spécific [J/kg°C]
propList(5) = Range("M2") 'Module élast. [Pa]
propList(6) = Range("N2") 'Ratio Poisson [Unitless]
propList(7) = Range("G2") 'Yield Stress [Pa]
propList(8) = Range("G2") 'Ultimate Stress [Pa]
propList(9) = Range("H2") 'Elongation % [Unitless]
materialName = "PET 5" 'Range("B2")
libraryName = "ADY"
materialPath = "Polymère"
faceStyle = "Rouge"
fillStyle = "Normal"
Call objMatTable.AddMaterialToLibrary(materialName, libraryName, materialPath, UBound(propList), propList, faceStyle, fillStyle)

j'ai bien une matière crée qui se nomme "PET 5", dans le dossier "Polymère" de la bibliotèque "ADY", avec les bonnes couleurs de face et de remplissage, mais les propriétés 1 à 9 ne correspondent pas à mes cellules excels.. j'ai également essayé de les mettre sans indiquer la cellule, même résultat... Si vous avez une idée d'où peut venir le soucis.. :)
Merci !!

re,

c'est si spécifique que je n'ose pas vous aider, dans le temps, j'utilisais le forum de Siemens (https://support.industry.siemens.com/forum/) mais pour le moment, je ne vois pas "SolidEdge" dans les possibilités, mais ça fait 15 ans que j'ai programmé des automates industriels.

re,

Merci pour la contribution !! c'est vrai que c'est assez spécifique. Le problème est résolu, je mets quand-même la solution au cas où ça pourrait servir à quelqu'un un jour :)

les propriétés étaient en fait insérées décalées et semblaient donc pas correspondre aux valeurs dans les cellules. déclaré proplist de 0 à 8 plutôt que de 1 à 9 à résolu le problème. C'est donc tout en ordre j'ai pu créer mes bibliotèques de matières en un clique et très rapidement !

Encore merci pour le coup de main !

Dim propList(0 To 8) As Variant
Rechercher des sujets similaires à "solidedge syntaxe code macro"