Hallo
Ik ben op zoek naar een oplossing om gelaste constructiegroepen te maken in een VBA-API op basis van een 3D-schets die al in VBA is gegenereerd.
Mijn eerder gegenereerde 3D-schets heet NdM3D en bevat een variabel aantal segmenten (tussen 5 en 50) die allemaal "lijn 1" tot "lijn i" heten. Het is me gelukt om het aantal regels van mijn code een beetje te beperken door te prutsen, maar ik heb nog steeds 7 regels code per segment, tussen declaraties en functies. Dus ik probeer van deze functie een lus te maken die alle segmenten in mijn schets overspant. Ik heb de Ubounds-variabele van het aantal segmenten, het werkt. Maar hoezeer ik ook verschillende syntaxen probeer , ik kan geen lus maken die de array van groepen voor de gesoldeerde constructie creëert. Omdat de oriëntatie vrij willekeurig is, moet elk segment zich in een aparte groep bevinden. Ik ben eindelijk op zoek naar de group.array-tabel die "i"-groepen bevat, elk samengesteld uit een enkel segment.
Mijn huidige code:
Dim swApp als SldWorks.SldWorks
Dim deel als ModelDoc2
Dim boolstatus als Booleaanse
Dim FeatMgr als FeatureManager
Sun SelMgr Als SelectieMgr
Dim mySketch als SldWorks.Sketch
Dim swWeldFeat als SldWorks.Feature
Dim swWeldFeatData As SldWorks.StructuralMemberFeatureData
Dim skSegCount zo lang
Dim vSkSegments als variant
Dim skSegment als SldWorks.SketchSegment
Optie Expliciete
Openbare Sub Main()
Stel swApp = Toepassing.SldWorks in
Deel instellen = swApp.ActiveDoc
Stel FeatMgr = Deel.FeatureManager in
Set SelMgr = Part.SelectionManager
Dim myFeature2 als object
Stel myFeature2 in = Part.FeatureByName("3D NdM")
Stel mySketch in = myFeature2.GetSpecificFeature2()
vSkSegments = mySketch.GetSketchSegments()
skSegCount = UBound(vSkSegments)
Debug.Print" aantal segmenten in de schets = " & skSegCount
Dim myFeature als object
Set myFeature = Part.FeatureManager.InsertWeldmentFeature()
Dim GroupArray() als object
ReDim GroupArray (0 tot 100) als object
' Voor i = 1 TB UBound(vSkSegments)
' Vanaf hier is dit het deel dat werkt voor 2 opeenvolgende segmenten, die ik wil uitbreiden naar de i-segmenten in de lus
Dim Group1, Group2 als StructuralMemberGroup
Set Group1 = FeatMgr.CreateStructuralMemberGroup
Set Group2 = FeatMgr.CreateStructuralMemberGroup
Segmenten1 (0) dimmen als object
Segmenten2(0) dimmen als object
boolstatus = Part.Extension.SelectByID2("Line1@NdM 3D", "EXTSKETCHSEGMENT", 0, 0, 0, False, 0, Nothing, 0)
Set segmenten1(0) = SelMgr.GetSelectedObject6(1, 0)
Groep1.Segmenten = (segmenten1)
Stel GroupArray(0) in = Groep1
boolstatus = Part.Extension.SelectByID2("Line2@NdM 3D", "EXTSKETCHSEGMENT", 0, 0, 0, False, 0, Nothing, 0)
Stel segmenten2(0) in = SelMgr.GetSelectedObject6(1, 0)
Groep2.Segmenten = (segmenten2)
GroepMatrix(1) instellen = Groep2
' Volgende I
Set myFeature = Part.FeatureManager.InsertStructuralWeldment4("D:\SW Library\Profile Library\Test\profile1\mon_profile.sldlfp", 1, False, (GroupArray))
Deel.ClearSelection2 Waar
Einde Sub
Wees voorzichtig, de syntaxis zal zeker in de ogen van insiders prikken, het is een compilatie van verschillende copy-pastes van voorbeelden die volgens mij overeen kwamen met mijn onderzoek.
Enig idee?
Bedankt.