Hallo
Is er een manier om een nomenclatuurtabel te vertellen aan welke configuratie deze is gekoppeld?
Ik heb de configuratie al in een variabele."vNameConf"
Ik heb het geprobeerd:
Dim swBomTable als SldWorks.BomTableAnnotation of dim swBomTable als SldWorks.IBomTable
" Tabel van de nomenclatuur
boolstatus = Part.Extension.SelectByID2("Nomenclatuur2", "DRAWINGVIEW", 0.195997909234212, 0.164382166839605, 0, Onwaar, 0, Niets, 0)
Stel swBomTable in = swSelMgr.GetSelectedObject6(1, 0)
swBomTable.ReferencedConfiguration = vNameConf(i)
Vriendelijke groeten
Dank je wel Jerome,
Niet makkelijk met hun voorbeeld, dat zich soms half vertaalt.
Ik heb geprobeerd dit te coderen:
BomFunctie
GetConfigurations (onwaar, zichtbaar)
Zichtbaar (0) = Echte
SetConfigurations (Waar, Zichtbaar, vNameConf(i))
maar ik begrijp er niet veel van
In mijn logica moet je de array identificeren en er vervolgens de configuratie aan toewijzen
Dim swBomFeat als SldWorks.BomFeature
swBomFeat ="Nomenclatuur2"
boolstatus = swBomFeat. SetConfigurations (True, Visible, vNameConf(i))
Jammer dat het niet zo eenvoudig is.
De rest van alles op tijd
Vervangt "test" door de naam van de te gebruiken configuratie
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 like
Hallo Hiëronymus,
Dank u voor uw tijd.
Ik heb deze code gebruikt, maar er staat niets op het plan.
Ik ben er al sinds 7 uur 's ochtends mee bezig, maar er zijn veel variabelen.
Voor een beginneling als ik zonder de annotaties 'heb ik het moeilijk.
Tot gauw
Wat schrijft het in het onmiddellijke venster als u de regel activeert:
Debug.Print "configuratie-index....
Kunt u een testbestand bijvoegen. Bedankt
Jerome
Bedankt voor deze nieuwe info. Ik begreep het nut van deze regel en de kosten van het uitvoeringsvenster niet. Ik ben pas een maand geleden begonnen
Hier is het resultaat:
- Hint configuratie: 0, Naam: Standaard, Zichtbaar: Onwaar
- Hint configuratie: 1, Naam: ODCA1001, Zichtbaar: Waar
- Inhoudsopgave: 2, Naam: ODCA1001SP, Zichtbaar: Onwaar
- Hint configuratie: 3, Naam: ODCA1001VR, Zichtbaar: Onwaar
- Inhoudsopgave: 4, Naam: ODCA1001VRSP, Zichtbaar: Onwaar
- Index configureren: 5, Naam: ODCA1002, Zichtbaar: Onwaar
- Hint configuratie: 6, Naam: ODCA2001, Zichtbaar: Onwaar
- Hint configuratie: 7, Naam: ODCA2002, Zichtbaar: Onwaar
De tabel wordt niet gewijzigd, maar blijft in de oorspronkelijke configuratie
Vriendelijke groeten
Oeps
Ik realiseer me net dat het mijn verzoek is dat niet duidelijk is.
Ik heb een nomenclatuurtabel op een plan met een bepaalde configuratie, en ik wil het vertellen om een andere (configuratie) te gebruiken.
Vriendelijke groeten
Hallo
Als ik verander
Oproep NomenclatuurConfig("odca1001SP")
Het resultaat is hetzelfde
- Hint configuratie: 0, Naam: Standaard, Zichtbaar: Onwaar
- Hint configuratie: 1, Naam: ODCA1001, Zichtbaar: Waar
- Inhoudsopgave: 2, Naam: ODCA1001SP, Zichtbaar: Onwaar
- Hint configuratie: 3, Naam: ODCA1001VR, Zichtbaar: Onwaar
- Inhoudsopgave: 4, Naam: ODCA1001VRSP, Zichtbaar: Onwaar
- Index configureren: 5, Naam: ODCA1002, Zichtbaar: Onwaar
- Hint configuratie: 6, Naam: ODCA2001, Zichtbaar: Onwaar
- Hint configuratie: 7, Naam: ODCA2002, Zichtbaar: Onwaar
Jerome
Ik vind deze S raar, maar als ik hem verwijder, verandert er niets aan (de onderstreepte)
swBomFeat.SetConfigurations False, ConfigVis, ConfigNames
Vriendelijke groeten
Jerome
De hete was antwoordt me op een macro van mijn eigen
De configuratie verandert bij de BOM-functie:
Stel swBomFeat in = swBomAnn.BomFeature
swBomFeat.Configuration = "ODCA1001"
Ik heb geprobeerd deze regel in mijn code te gebruiken zonder resultaat.
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
tabel1.swp
Probeer het volgende:
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 like
Hallo Jérôme,
Bedankt
Ik betwijfel of ik je op een dag zal helpen, gezien je niveau en je werkterrein, maar weet dat je nooit iets weet, mijn sterke punt zijn de linkervormen (ontwerp, oppervlak)
Nogmaals bedankt,
Vriendelijke groeten
1 like