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ę.