@ OBI WAN
Oui, avec l'outil de mesure je peux récupérer visuellement les longueurs, distances, coordonnées que je veux à l'écran. Mais je souhaite faire des calculs derrière pour répartir des points sur la trajectoire de façon uniformes et tout ça de manière automatique. Il me faut donc les fonctions vba/vbnet pour le faire
@ .PL
J'ai résolue le problème avec les fonctions trouvé dans l'aide API solidworks (premier lien que j'ai donné pour le vbnet et celui que tu avais indiqué pour le vba). Pour pouvoir faire la mesure sur les entitées j'ai du sortir de l'esquisse avec la commande :
swDoc.SketchManager.Insert3DSketch(True)
Pour le reste j'ai sélectionné la bonne entité et utilisé les fonctions/commandes trouvés dans l'aide API :
exemple pour la mesure d'une ligne, spline puis les deux entitées :
' Mesure longueur ligne
boolstatus = swDoc.Extension.SelectByID2("Line1@Esquisse3D1", "EXTSKETCHSEGMENT", 0.0, 0.0, 0.0, False, 0, Nothing, 0)
swMeasure = swDoc.Extension.CreateMeasure
swMeasure.ArcOption = 0
boolstatus = swMeasure.Calculate(Nothing)
Ll = swMeasure.Length
Debug.Print("longueur ligne = " & Ll * 1000 & " mm")
swDoc.SketchManager.Insert3DSketch(True)
swDoc.ClearSelection2(True)
' Mesure longueur spline 1
boolstatus = swDoc.Extension.SelectByID2("Spline1@Esquisse3D1", "EXTSKETCHSEGMENT", 0.0, 0.0, 0.0, False, 0, Nothing, 0)
swMeasure = swDoc.Extension.CreateMeasure
swMeasure.ArcOption = 0
boolstatus = swMeasure.Calculate(Nothing)
LS1 = swMeasure.ArcLength
Debug.Print("longueur spline1 = " & LS1 * 1000 & " mm")
swDoc.SketchManager.Insert3DSketch(True)
swDoc.ClearSelection2(True)
' Mesure de la longueur totale de la fibre neutre de maille
boolstatus = swDoc.Extension.SelectByID2("Line1@Esquisse3D1", "EXTSKETCHSEGMENT", 0.0, 0.0, 0.0, False, 0, Nothing, 0)
boolstatus = swDoc.Extension.SelectByID2("Spline1@Esquisse3D1", "EXTSKETCHSEGMENT", 0.0, 0.0, 0.0, True, 0, Nothing, 0)
swMeasure = swDoc.Extension.CreateMeasure
swMeasure.ArcOption = 0
boolstatus = swMeasure.Calculate(Nothing)
Lt = swMeasure.TotalLength
Debug.Print("Longueur Lt = " & Lt * 1000 & " mm")
Merci pour votre aide