Bonjour,
je cherche une solution pour créer des groupes de construction soudée dans une API en VBA à partir d'une esquisse 3D déjà générée en VBA.
Mon esquisse 3D générée précédemment s'appelle NdM3D et contient un nombre variable de segments (entre 5 et 50) tous nommés "ligne 1" à "ligne i". J'ai réussi en bidouillant à limiter un peu le nombre de lignes de mon code, mais je reste à 7 lignes de code par segment, entre les déclarations et les fonctions. Je cherche donc à transformer cette fonction en une boucle s'étendant sur la totalité des segments que contient mon esquisse. J'ai récupéré la variable Ubounds du nombre de segments, ça fonctionne. Mais j'ai beau essayer plusieurs syntaxes, je n'arrive pas à créer une boucle qui me crée le tableau des groupes pour la construction soudée. L'orientation étant assez aléatoire, il faut que chaque segment soit dans un groupe distinct. Je cherche au final à avoir la table group.array qui contienne "i" groupes composés chacun d'un seul segment.
Mon code actuel :
Dim swApp As SldWorks.SldWorks
Dim Part As ModelDoc2
Dim boolstatus As Boolean
Dim FeatMgr As FeatureManager
Dim SelMgr As SelectionMgr
Dim mySketch As SldWorks.Sketch
Dim swWeldFeat As SldWorks.Feature
Dim swWeldFeatData As SldWorks.StructuralMemberFeatureData
Dim skSegCount As Long
Dim vSkSegments As Variant
Dim skSegment As SldWorks.SketchSegment
Option Explicit
Public Sub Main()
Set swApp = Application.SldWorks
Set Part = swApp.ActiveDoc
Set FeatMgr = Part.FeatureManager
Set SelMgr = Part.SelectionManager
Dim myFeature2 As Object
Set myFeature2 = Part.FeatureByName("NdM 3D")
Set mySketch = myFeature2.GetSpecificFeature2()
vSkSegments = mySketch.GetSketchSegments()
skSegCount = UBound(vSkSegments)
Debug.Print " nombre de segments dans l'esquisse = " & skSegCount
Dim myFeature As Object
Set myFeature = Part.FeatureManager.InsertWeldmentFeature()
Dim GroupArray() As Object
ReDim GroupArray(0 To 100) As Object
' For i = 1 To UBound(vSkSegments)
' à partir de là, c'est la partie qui fonctionne pour 2 segments successifs, que je souhaite étendue aux i segments dans la boucle
Dim Group1, Group2 As StructuralMemberGroup
Set Group1 = FeatMgr.CreateStructuralMemberGroup
Set Group2 = FeatMgr.CreateStructuralMemberGroup
Dim segments1(0) As Object
Dim segments2(0) As Object
boolstatus = Part.Extension.SelectByID2("Line1@NdM 3D", "EXTSKETCHSEGMENT", 0, 0, 0, False, 0, Nothing, 0)
Set segments1(0) = SelMgr.GetSelectedObject6(1, 0)
Group1.Segments = (segments1)
Set GroupArray(0) = Group1
boolstatus = Part.Extension.SelectByID2("Line2@NdM 3D", "EXTSKETCHSEGMENT", 0, 0, 0, False, 0, Nothing, 0)
Set segments2(0) = SelMgr.GetSelectedObject6(1, 0)
Group2.Segments = (segments2)
Set GroupArray(1) = Group2
' next i
Set myFeature = Part.FeatureManager.InsertStructuralWeldment4("D:\Bibliothèque SW\Bibliothèque profilés\Test\profile1\mon_profile.sldlfp", 1, False, (GroupArray))
Part.ClearSelection2 True
End Sub
Attention, la syntaxe va surement piquer les yeux des initiés, elle est une compilation de plusieurs copier-coller d'exemples qui me semblaient correspondre à ma recherche.
Une idée ?
Merci.