Bonjour,
J'ai besoin de récupérer des propriétés de mes pieces solidworks et de les intégrer dans une table avec des champs existants.
Voici déjà ce que j'ai comme point de départ:
Sub SolidWorksPrp()
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim vConfigNameArr As Variant
Dim vConfigName As Variant
Dim vCustInfoNameArr As Variant
Dim vCustInfoName As Variant
Dim bRet As Boolean
Set swApp = GetObject(, "SldWorks.Application")
Set swModel = swApp.ActiveDoc
Debug.Print "File = " & swModel.GetPathName
vConfigNameArr = swModel.GetConfigurationNames
vCustInfoNameArr = swModel.GetCustomInfoNames2(Empty)
If Not IsEmpty(vCustInfoNameArr) Then
For Each vCustInfoName In vCustInfoNameArr
Debug.Print " " & vCustInfoName
Debug.Print " Type = " & swModel.GetCustomInfoType3(Empty, vCustInfoName)
Debug.Print " Value = " & swModel.GetCustomInfoValue(Empty, vCustInfoName)
Debug.Print " Text = " & swModel.CustomInfo2(Empty, vCustInfoName)
Next
End If
'
' ' Is empty if a drawing becasue configurations not supported on drawings
' If IsEmpty(vConfigNameArr) Then
' ReDim vConfigNameArr(0)
' vConfigNameArr(0) = ""
' Else
' ' Add a blank string for the nonconfiguration-specific custom properties
' ReDim Preserve vConfigNameArr(UBound(vConfigNameArr) + 1)
' End If
'
' For Each vConfigName In vConfigNameArr
' Debug.Print " " & vConfigName
'
' vCustInfoNameArr = swModel.GetCustomInfoNames2(vConfigName)
' If Not IsEmpty(vCustInfoNameArr) Then
' For Each vCustInfoName In vCustInfoNameArr
' Debug.Print " " & vCustInfoName
' Debug.Print " Type = " & swModel.GetCustomInfoType3(vConfigName, vCustInfoName)
' Debug.Print " Value = " & swModel.GetCustomInfoValue(vConfigName, vCustInfoName)
' Debug.Print " Text = " & swModel.CustomInfo2(vConfigName, vCustInfoName)
' Next
' End If
' Debug.Print " ---------------------------"
' Next
End Sub/b
Et voici ce que j'obtien après execution du module:( conditions : solidworks ouvert avec une document pièce ouvert)
[b]File = \\SRV\RedirectedFolders\benoist.p\Desktop\001.SLDPRT
PROJET
Type = 30
Value = projet001
Text = projet001
Description Pièce
Type = 30
Value = COULISSE
Text = COULISSE
Matériau
Type = 30
Value = Acier non allié
Text = "SW-Material@001.SLDPRT"
Finition
Type = 30
Value = Zingage
Text = Zingage
Fournisseur
Type = 30
Value = commerce
Text = commerce
Zone de texte15
Type = 30
Value = 0.00
Text = "SW-Mass@001.SLDPRT"
Zone de texte12
Type = 30
Value = 4500075000
Text = 4500075000/b
La question est la suivante:
Par quel moyen et comment dois je faire pour récupérer les valeurs (par exemple "zingage", "acier non allié")
et les insérer dans une table existante sous access 2007(avec pour noms de champs "traitement de surface" et "matière".
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 11 sept. 2012 à 13:50
Salut
-1- Le VB de ce genre de logiciel est du VBA. Il y a une catégorie dédiée. Modifiée.
-2- Quand tu colles du code, utilise la coloration syntaxique (3ème icone à droite) = plus facile à relire
-3- Quand tu colles du code, n'y met pas le code non valide en placé en commentaire; ça n'apporte rien.
Ta question est-elle :
- comment isoler les données "zingage" ou "acier non allié" ?
Si c'est le cas, tu vois bien que ce champ est issu de
swModel.GetCustomInfoValue(Empty, vCustInfoName)
- comment insérer des données dans une DB ?
As-tu déjà créé ta connexion avec ta DB, ta table ?
As-tu créé une requète d'insertion ?
Voir les objets ADODB
Vala
Jack, MVP VB NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 11 sept. 2012 à 13:53
Pour les matériaux, c'est bien le champ
swModel.GetCustomInfoValue(Empty, vCustInfoName)
à condition que le champ
swModel.CustomInfo2(Empty, vCustInfoName)
comporte un @