Hallo
Gibt es eine Möglichkeit, einer Nomenklaturtabelle mitzuteilen, an welche Konfiguration sie angehängt ist?
Ich habe die Konfiguration bereits in einer Variablen."vNameConf"
Ich habe versucht:
Dim swBomTable als SldWorks.BomTableAnnotation oder Dim swBomTable als SldWorks.IBomTable
(') Tabelle der Nomenklatur
boolstatus = Part.Extension.SelectByID2("Nomenclature2", "DRAWINGVIEW", 0.195997909234212, 0.164382166839605, 0, False, 0, Nichts, 0)
Set swBomTable = swSelMgr.GetSelectedObject6(1, 0)
swBomTable.ReferencedConfiguration = vNameConf(i)
Herzliche Grüße
Danke Jerome,
Nicht einfach mit ihrem Beispiel, das manchmal halbwegs übersetzt wird.
Ich habe versucht, dies zu codieren:
Stückliste-Funktion
GetConfigurations (falsch, sichtbar)
Sichtbar (0) = Wahr
SetConfigurations (wahr, sichtbar, vNameConf(i))
aber ich verstehe nicht viel
In meiner Logik muss man das Array identifizieren und ihm dann die Konfiguration zuweisen
Dim swBomFeat As SldWorks.BomFeature
swBomFeat ="Nomenklatur2"
boolstatus = swBomFeat. SetConfigurations (Wahr, Sichtbar, vNameConf(i))
Schade, dass es nicht so einfach ist.
Der Rest alles pünktlich
Ersetzt "test" durch den Namen der zu verwendenden Konfiguration.
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 „Gefällt mir“
Hallo Jerome,
Vielen Dank für Ihre Zeit.
Ich habe diesen Code verwendet, aber er bekommt nichts auf dem Plan.
Ich bin seit 7 Uhr morgens dabei, aber es gibt viele Variablen.
Für einen Anfänger wie mich ohne die Anmerkungen "Ich habe Schwierigkeiten.
Bis bald
Was schreibt es im Direktfenster, wenn Sie die Zeile aktivieren:
Debug.Print "Konfigurationsindex....
Können Sie eine Testdatei anhängen? Vielen Dank
Jerome
Vielen Dank für diese neuen Infos. Ich habe die Nützlichkeit dieser Zeile und die Kosten des Ausführungsfensters nicht verstanden. Ich habe erst vor einem Monat angefangen
Hier ist das Ergebnis:
- Hinweiskonfiguration: 0, Name: Standard, Sichtbar: Falsch
- Hinweiskonfiguration: 1, Name: ODCA1001, Sichtbar: Wahr
- Index: 2, Name: ODCA1001SP, Sichtbar: Falsch
- Hinweiskonfiguration: 3, Name: ODCA1001VR, Sichtbar: Falsch
- Index: 4, Name: ODCA1001VRSP, Sichtbar: Falsch
- Index konfigurieren: 5, Name: ODCA1002, Sichtbar: Falsch
- Hinweiskonfiguration: 6, Name: ODCA2001, Sichtbar: Falsch
- Hinweiskonfiguration: 7, Name: ODCA2002, Sichtbar: Falsch
Die Tabelle wird nicht geändert, sie bleibt in ihrer ursprünglichen Konfiguration
Herzliche Grüße
Hoppla
Ich habe gerade gemerkt, dass es meine Bitte ist, die nicht klar ist.
Ich habe eine Nomenklaturtabelle in einem Plan mit einer bestimmten Konfiguration und möchte ihr sagen, dass sie eine andere (Konfiguration) verwenden soll.
Herzliche Grüße
Hallo
Wenn ich wechsle
Rufen Sie NomenclatureConfig("odca1001SP") auf.
Das Ergebnis ist das gleiche
- Hinweiskonfiguration: 0, Name: Standard, Sichtbar: Falsch
- Hinweiskonfiguration: 1, Name: ODCA1001, Sichtbar: Wahr
- Index: 2, Name: ODCA1001SP, Sichtbar: Falsch
- Hinweiskonfiguration: 3, Name: ODCA1001VR, Sichtbar: Falsch
- Index: 4, Name: ODCA1001VRSP, Sichtbar: Falsch
- Index konfigurieren: 5, Name: ODCA1002, Sichtbar: Falsch
- Hinweiskonfiguration: 6, Name: ODCA2001, Sichtbar: Falsch
- Hinweiskonfiguration: 7, Name: ODCA2002, Sichtbar: Falsch
Jerome
Ich finde dieses S seltsam, aber wenn ich es entferne, ändert es nichts (das unterstrichene)
swBomFeat.SetConfigurations False, ConfigVis, ConfigNames
Herzliche Grüße
Jerome
Die heiße Wäsche antwortet mir auf ein eigenes Makro
Die Konfigurationsänderungen an der Stücklistenfunktion:
Set swBomFeat = swBomAnn.BomFeature
swBomFeat.Configuration = "ODCA1001"
Ich habe versucht, diese Zeile in meinem Code ohne Ergebnis zu verwenden.
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
tabelle1.swp
Versuchen Sie Folgendes:
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 „Gefällt mir“
Hallo Jérôme,
Vielen Dank
Ich bezweifle, dass ich Ihnen eines Tages helfen kann, angesichts Ihres Niveaus und Ihres Tätigkeitsbereichs, aber ich weiß nie, meine Stärke sind die linken Formen (Design, Oberfläche)
Nochmals vielen Dank,
Herzliche Grüße
1 „Gefällt mir“