API VBA Automatische gelaste constructie

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.
 

Hallo

Ik voeg een idee van de code toe.

Kunt u mij een SW-bestand geven met een 3D-schets die overeenkomt met de macro's die nodig zijn om te testen?


macro_construction_soude.txt
2 likes

Bijgevoegd is een testbestand met het gelaste constructieprofiel. Ik kijk parallel naar de code. Bedankt.


test_api_construction_soudee.zip

Snel goed gedaan. Ik had deze syntaxis geprobeerd, maar ik moet iets hebben gemist,  het werkte niet. Ik geloof dat ik de declaratie van de variabele i had weggelaten.

De eerste keer!? :-)

Ik geef toe dat ik het betwijfelde.

Blij dat ik je heb geholpen.

Fijne dag.

1 like