API VBA Automatische Schweißkonstruktion

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.
 

Hallo

Ich füge eine Idee des Codes bei.

Können Sie mir eine SW-Datei mit einer 3D-Skizze geben, die dem Testbedarf des Makros entspricht?


macro_construction_soude.txt
2 „Gefällt mir“

Im Anhang befindet sich eine Prüfdatei mit dem geschweißten Konstruktionsprofil. Ich schaue mir den Code parallel an. Vielen Dank.


test_api_construction_soudee.zip

Schnell gut gemacht. Ich hatte diese Syntax ausprobiert, aber ich muss etwas übersehen haben,  es hat nicht funktioniert. Ich glaube, dass ich die Deklaration der Variablen i weggelassen habe.

Das erste Mal!? :-)

Ich gebe zu, dass ich daran gezweifelt habe.

Schön, dass ich dir geholfen habe.

Schönen Tag.

1 „Gefällt mir“