Bonjour,
exit' il le moyen de dire a une table de nomenclature a quel configuration elle ce rattache?
j 'ai déjà la config dans dans une variable."vNameConf"
j'ai essayé:
Dim swBomTable As SldWorks.BomTableAnnotation ou Dim swBomTable As SldWorks.IBomTable
' table denomenclature
boolstatus = Part.Extension.SelectByID2("Nomenclature2", "DRAWINGVIEW", 0.195997909234212, 0.164382166839605, 0, False, 0, Nothing, 0)
Set swBomTable = swSelMgr.GetSelectedObject6(1, 0)
swBomTable.ReferencedConfiguration = vNameConf(i)
Cordialement
Merci Jerome,
Pas facile avec leur exemple qui parfois ce traduise a moitié.
j ai tenté des codé ça:
set swBomFeat = swBomAnn. BomFeature
vNameConf(i) = swBomFeat. GetConfigurations (false, visible)
Visible (0) = Vrai
boolstatus = swBomFeat. SetConfigurations (True, Visible, vNameConf(i))
mais je comprend pas grand chose
dans ma logique il faut identifier le tableau et ensuite lui affecter la config
Dim swBomFeat As SldWorks.BomFeature
swBomFeat = "Nomenclature2"
boolstatus = swBomFeat. SetConfigurations (True, Visible, vNameConf(i))
Dommage que ce ne soit pas aussi simple.
La suite de tous a l'heure
Remplace "test" par le nom de la configuration à utiliser
Option Explicit
Sub main()
Call NomenclatureConfig("test")
End Sub
Sub NomenclatureConfig(ByVal ConfigName As String)
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swDraw As SldWorks.DrawingDoc
Dim swView As SldWorks.View
Dim swTableAnn As SldWorks.TableAnnotation
Dim swBomFeat As SldWorks.BomFeature
Dim vTables As Variant
Dim vTable As Variant
Dim ConfigNames As Variant
Dim ConfigVis As Variant
Dim i As Integer
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
Set swDraw = swModel
Set swView = swDraw.GetFirstView
If swView.GetTableAnnotationCount > 0 Then
vTables = swView.GetTableAnnotations
For Each vTable In vTables
Set swTableAnn = vTable
If swTableAnn.Type = swTableAnnotationType_e.swTableAnnotation_BillOfMaterials Then
Set swBomFeat = swTableAnn.BomFeature
ConfigNames = swBomFeat.GetConfigurations(False, ConfigVis)
For i = 0 To UBound(ConfigNames)
'Debug.Print "configuration indice: " & i & ", Nom: " & ConfigNames(i) & ", Visible: " & ConfigVis(i) '
If ConfigNames(i) = ConfigName Then
ConfigVis(i) = True
Else
ConfigVis(i) = False
End If
Next
swBomFeat.SetConfigurations False, ConfigVis, ConfigNames
End If
Next
End If
swDraw.ClearSelection2 True
End Sub
1 « J'aime »
Bonjour Jerome,
Merci pour le temps que tu me consacre.
j'ai utilisé ce code mais Il ne se pas rien sur le plan.
je suis dessus depuis 7H mais il y a beaucoup de variable.
Pour un novice comme moi sans les annotations ' je galère.
A biento
Qu'est ce que ca écrit dans la fenêtre immediate si tu active la ligne:
Debug.Print "configuration indice....
Est ce que tu peut joindre un fichier de test. Merci
Jerome,
merci pour cette nouvelle info. j'avais pas compris l'utilité de cette ligne et du cout de la fenetre d execution. j ai debuté il y a un mois seulement
Voici le resulta
configuration indice: 0, Nom: Défaut, Visible: Faux
configuration indice: 1, Nom: ODCA1001, Visible: Vrai
configuration indice: 2, Nom: ODCA1001SP, Visible: Faux
configuration indice: 3, Nom: ODCA1001VR, Visible: Faux
configuration indice: 4, Nom: ODCA1001VRSP, Visible: Faux
configuration indice: 5, Nom: ODCA1002, Visible: Faux
configuration indice: 6, Nom: ODCA2001, Visible: Faux
configuration indice: 7, Nom: ODCA2002, Visible: Faux
la table n 'est pas modifier elle reste dans sa config d 'origine
Cordialement
Oups,
Je viens de me rendre compte que c'est ma demande qui n'est pas clair.
j ai une table de nomenclature sur un plan avec une configuration donnée, et je veux lui dire d en utilisé une autre(configuration).
Cordialement
Hello,
Si je change
Call NomenclatureConfig("odca1001SP")
le resultat est le même
configuration indice: 0, Nom: Défaut, Visible: Faux
configuration indice: 1, Nom: ODCA1001, Visible: Vrai
configuration indice: 2, Nom: ODCA1001SP, Visible: Faux
configuration indice: 3, Nom: ODCA1001VR, Visible: Faux
configuration indice: 4, Nom: ODCA1001VRSP, Visible: Faux
configuration indice: 5, Nom: ODCA1002, Visible: Faux
configuration indice: 6, Nom: ODCA2001, Visible: Faux
configuration indice: 7, Nom: ODCA2002, Visible: Faux
Jerome,
je trouve bizare ce S mais si je l'enlève cela ne change rien (celui qui est souligné)
swBomFeat.SetConfigurations False, ConfigVis, ConfigNames
Cordialement
Jerome
La hot linge me repond sur une Macro de mon cru
La configuration se change au niveau de la bom feature :
Set swBomFeat = swBomAnn.BomFeature
swBomFeat.Configuration = "ODCA1001"
j ai taché d'utilisé c'est ligne dans mon code sans resultat.
Dim swApp As Object
Dim swModel As SldWorks.ModelDoc2
Dim swSheet As SldWorks.Sheet
Dim swSelMgr As SldWorks.SelectionMgr
Dim swView As SldWorks.View
Dim Part As Object
Dim boolstatus As Boolean
Dim longstatus As Long, longwarnings As Long
Dim vNameConf As Variant
' V BOM
Dim swBomAnn As BomTableAnnotation
Dim swBomFeat As SldWorks.BomFeature
Sub main()
' bibliothec SW
Set swApp = Application.SldWorks
' model actif de SW
Set swModel = swApp.ActiveDoc
' selection de ce model
Set swSelMgr = swModel.SelectionManager
'mémorisé l'objet6(1,0)?
Set swBomAnn = swSelMgr.GetSelectedObject6(1, 0)
' On affect la config
vNameConf = "ODCA1001"
'La configuration se change au niveau de la bom feature :
Set swBomFeat = swBomAnn.BomFeature
swBomFeat.Configuration = vNameConf
End Sub
table1.swp
Essaye ca:
Option Explicit
Sub main()
Call NomenclatureConfig("ODCA1001SP")
End Sub
Sub NomenclatureConfig(ByVal ConfigName As String)
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swDraw As SldWorks.DrawingDoc
Dim swView As SldWorks.View
Dim swTableAnn As SldWorks.TableAnnotation
Dim swBomFeat As SldWorks.BomFeature
Dim vTables As Variant
Dim vTable As Variant
Dim ConfigNames As Variant
Dim ConfigVis As Variant
Dim i As Integer
Debug.Print "Configuration à activée: " & ConfigName
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
Set swDraw = swModel
Set swView = swDraw.GetFirstView
If swView.GetTableAnnotationCount > 0 Then
vTables = swView.GetTableAnnotations
For Each vTable In vTables
Set swTableAnn = vTable
If swTableAnn.Type = swTableAnnotationType_e.swTableAnnotation_BillOfMaterials Then
Set swBomFeat = swTableAnn.BomFeature
ConfigNames = swBomFeat.GetConfigurations(False, ConfigVis)
For i = 0 To UBound(ConfigNames)
Debug.Print "configuration indice: " & i & ", Nom: " & ConfigNames(i) & ", Visible: " & ConfigVis(i) '
If LCase(ConfigNames(i)) = LCase(ConfigName) Then
ConfigVis(i) = True
Debug.Print "Configuration activé: " & ConfigNames(i)
Else
ConfigVis(i) = False
End If
Next
swBomFeat.SetConfigurations False, ConfigVis, ConfigNames
End If
Next
End If
swDraw.ClearSelection2 True
End Sub
1 « J'aime »
Bonjour Jérôme,
merci,
je doute de pour t'aidé un jour vu ton niveau et ton domaines d activité, mais sais ton jamais, mon point fort c'est les formes gauche(design, surfacique)
Encore merci,
Cordialement
1 « J'aime »