API VBA Automatyczna konstrukcja spawana

Witam

Szukam rozwiązania do tworzenia spawanych grup konstrukcyjnych w API VBA ze szkicu 3D już wygenerowanego w VBA.

Mój poprzednio wygenerowany szkic 3D nazywa się NdM3D i zawiera zmienną liczbę segmentów (od 5 do 50), wszystkie o nazwie "linia 1" do "linia i". Udało mi się trochę ograniczyć liczbę wierszy mojego kodu poprzez majstrowanie, ale nadal mam 7 linii kodu na segment, między deklaracjami i funkcjami. Próbuję więc przekształcić tę funkcję w pętlę, która obejmuje wszystkie segmenty w moim szkicu. Dostałem zmienną Ubounds z liczby segmentów, to działa. Ale bez względu na to, jak bardzo próbuję kilku składni, nie mogę stworzyć pętli, która tworzy tablicę grup dla lutowanej konstrukcji. Orientacja jest dość losowa, każdy segment musi znajdować się w odrębnej grupie. W końcu szukam tabeli group.array, która zawiera grupy "i", z których każda składa się z jednego segmentu.

Mój obecny kod:

Dim swApp jako SldWorks.SldWorks

Przyciemnij część jako ModelDoc2

Dim boolstatus As Boolean

Dim FeatMgr jako FeatureManager

Sun SelMgr jako SelectionMgr

Przyciemnij mySketch jako SldWorks.Sketch

Dim swWeldFeat jako SldWorks.Feature

Dim swWeldFeatData jako SldWorks.StructuralMemberFeatureData

Dim skSegCount tak długo

Dim vSkSegments As Variant

Dim skSegment jako SldWorks.SketchSegment

Opcja jawna

Publiczny Sub Main()

    Ustaw swApp = Application.SldWorks
    Ustaw część = swApp.ActiveDoc
    Ustawić FeatMgr = Part.FeatureManager
    Ustaw SelMgr = Part.SelectionManager

    Przyciemnij myFeature2 jako obiekt
    Ustaw myFeature2 = Part.FeatureByName("3D NdM")
    Ustaw mySketch = myFeature2.GetSpecificFeature2()
    vSkSegments = mySketch.GetSketchSegments()
    skSegCount = UBound(vSkSegments)
    Debug.Print"    liczba segmentów w szkicu = " & skSegCount
    
    Przyciemnij funkcję jako obiekt
    Ustawić myFeature = Part.FeatureManager.InsertWeldmentFeature()
    Dim GroupArray() jako obiekt
    ReDim GroupArray(0 do 100) jako obiekt
    
   ' Dla i = 1 TB UBound(vSkSegments)

' Stąd jest to część, która działa dla 2 kolejnych segmentów, którą chcę rozszerzyć na segmenty i w pętli

    Dim Group1, Group2 As StructuralMemberGroup
    Ustaw Group1 = FeatMgr.CreateStructuralMemberGroup
    Ustaw Group2 = FeatMgr.CreateStructuralMemberGroup
    Dim segments1(0) As Object (Przyciemnij segmenty1(0) Jako obiekt
    Dim segments2(0) As Object (Obiekt) Przyciemnij segmenty
 

    boolstatus = Part.Extension.SelectByID2("Line1@NdM 3D", "EXTSKETCHSEGMENT", 0, 0, 0, Fałsz, 0, Nic, 0)
    Ustaw segmenty1(0) = SelMgr.GetSelectedObject6(1, 0)
    Grupa1.Segmenty = (segmenty1)
    Ustaw GroupArray(0) = Grupa1
    boolstatus = Part.Extension.SelectByID2("Line2@NdM 3D", "EXTSKETCHSEGMENT", 0, 0, 0, Fałsz, 0, Nic, 0)
    Ustaw segmenty2(0) = SelMgr.GetSelectedObject6(1, 0)
    Grupa2.Segmenty = (segmenty2)
    Ustaw GroupArray(1) = Grupa2

  ' Następny I

    Set myFeature = Part.FeatureManager.InsertStructuralWeldment4("D:\SW Library\Profile Library\Test\profile1\mon_profile.sldlfp", 1, False, (GroupArray))
    Part.ClearSelection2 Prawda

Koniec subwoofera

Bądź ostrożny, składnia z pewnością będzie szczypać w oczy wtajemniczonych, jest to kompilacja kilku kopiuj-wklej przykładów , które wydawały mi się odpowiadać moim badaniom.

Jakiś pomysł?

Dziękuję.
 

Witam

Załączam pomysł na kod.

Czy możecie mi dać plik programowy ze szkicem 3D odpowiadającym potrzebom makra do przetestowania?


macro_construction_soude.txt
2 polubienia

W załączeniu znajduje się plik testowy z profilem konstrukcji spawanej. Patrzę na kod równolegle. Dziękuję.


test_api_construction_soudee.zip

Szybko zrobione, dobrze. Próbowałem tej składni, ale musiałem coś przeoczyć,  nie zadziałało. Wydaje mi się, że pominąłem deklarację zmiennej i. Dziękuję remrem.

Pierwszy raz!? :-)

Przyznam, że w to wątpiłem.

Cieszę się, że ci pomogłem.

Miłego dnia.

1 polubienie