Hallo
Ich bin auf der Suche nach einer Lösung, um aus einer bereits in VBA generierten 3D-Skizze geschweißte Konstruktionsgruppen in einer VBA-API zu erstellen.
Meine zuvor generierte 3D-Skizze heißt NdM3D und enthält eine variable Anzahl von Segmenten (zwischen 5 und 50), die alle "Linie 1" bis "Linie i" heißen. Ich habe es geschafft, die Anzahl der Zeilen meines Codes durch Fummeln ein wenig zu begrenzen, aber ich habe immer noch 7 Zeilen Code pro Segment, zwischen Deklarationen und Funktionen. Also versuche ich, diese Funktion in eine Schleife umzuwandeln, die sich über alle Segmente in meinem Sketch erstreckt. Ich habe die Ubounds-Variable aus der Anzahl der Segmente bekommen, es funktioniert. Aber egal wie sehr ich verschiedene Syntaxen ausprobiere, ich kann keine Schleife erstellen, die das Array der Gruppen für die gelötete Konstruktion erstellt. Da die Ausrichtung ziemlich zufällig ist, muss jedes Segment in einer eigenen Gruppe liegen. Ich suche endlich nach der group.array-Tabelle, die "i"-Gruppen enthält, die jeweils aus einem einzelnen Segment bestehen.
Mein aktueller Code:
Dim swApp als SldWorks.SldWorks
Dimmteil als ModelDoc2
Dim boolstatus als boolescher Wert
Dim FeatMgr As FeatureManager
Sun SelMgr als AuswahlMgr
MySketch als SldWorks.Sketch dimmen
Dim swWeldFeat As SldWorks.Feature
Dim swWeldFeatData als SldWorks.StructuralMemberFeatureData
Dim skSegCount so lange
vSk-Segmente als Variante dimmen
Dim skSegment als SldWorks.SketchSegment
Option Explizit
Öffentliches Sub Main()
Legen Sie swApp = Application.SldWorks fest
Set Part = swApp.ActiveDoc
Set FeatMgr = Part.FeatureManager
Set SelMgr = Part.SelectionManager
myFeature2 als Objekt dimmen
Set myFeature2 = Part.FeatureByName("3D NdM")
Legen Sie mySketch = myFeature2.GetSpecificFeature2() fest
vSkSegments = mySketch.GetSketchSegments()
skSegCount = UBound(vSkSegmente)
Debug.Print" Anzahl der Segmente im Sketch = " & skSegCount
MyFeature als Objekt dimmen
Set myFeature = Part.FeatureManager.InsertWeldmentFeature()
Dim GroupArray() als Objekt
ReDim GroupArray(0 bis 100) als Objekt
' Für i = 1 TB UBound(vSkSegmente)
' Von hier aus ist dies der Teil, der für 2 aufeinanderfolgende Segmente funktioniert, den ich auf die i-Segmente in der Schleife erweitern möchte
Dim Group1, Group2 als StructuralMemberGroup
Set Group1 = FeatMgr.CreateStructuralMemberGroup
Set Group2 = FeatMgr.CreateStructuralMemberGroup
Segmente dimmen1(0) Als Objekt
Segmente dimmen2(0) Als Objekt
boolstatus = Part.Extension.SelectByID2("Line1@NdM 3D", "EXTSKETCHSEGMENT", 0, 0, 0, Falsch, 0, Nichts, 0)
Set segments1(0) = SelMgr.GetSelectedObject6(1, 0)
Gruppe1.Segmente = (Segmente1)
Set GroupArray(0) = Gruppe1
boolstatus = Part.Extension.SelectByID2("Line2@NdM 3D", "EXTSKETCHSEGMENT", 0, 0, 0, Falsch, 0, Nichts, 0)
Set segments2(0) = SelMgr.GetSelectedObject6(1, 0)
Gruppe2.Segmente = (Segmente2)
Set GroupArray(1) = Gruppe2
' Weiter I
Set myFeature = Part.FeatureManager.InsertStructuralWeldment4("D:\SW-Bibliothek\Profilbibliothek\Test\profile1\mon_profile.sldlfp", 1, falsch, (GroupArray))
Part.ClearSelection2 Wahr
Ende Sub
Seien Sie vorsichtig, die Syntax wird sicherlich in den Augen von Insidern brennen, es ist eine Zusammenstellung von mehreren Copy-Paste-Beispielen , die mir meinen Recherchen zu entsprechen schienen.
Irgendeine Idee?
Vielen Dank.