VBA esquisse suppr relation

Salut à tous
je souhaite réaliser une macro vba qui supprime les relations d’esquisse de type ‹ sur arête › et les contraintes bancales, du genre convertir les entités, que ce soit d’une pièce externe ou d’une autre esquisse de la même pièce

je suis dans l’esquisse a traiter
je lance la macro qui doit vérifier chaque élément pour voir le type de contrainte, si c’est ‹ sur arête › supprimer

je ne sais pas comment sélectionner chaque élément 1 par 1
je ne sais pas comment contrôler si c’est égale à ‹ sur arête › ou bancale
je ne sais pas comment supprimer la contrainte associé

voici mon début de macro

Sub main()
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swSketchMgr As SldWorks.SketchManager
Dim swSketch As SldWorks.Sketch
Dim swSelMgr As SldWorks.SelectionMgr
Dim swFeat As SldWorks.Feature
Dim nSketchStatus As Long
Dim boolstatus As Boolean


Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
Set swSketchMgr = swModel.SketchManager
Set swSketch = swSketchMgr.ActiveSketch


If swSketch Is Nothing Then
MsgBox "Éditer une esquisse et relancer la macro"
Exit Sub
End If

'For i = 1 To Count
'selectionner i element
'if relation existante =sgOFFSETEDGE
'boolstatus = Part.Extension.SelectByID2(xx,  , ,, , , )
'swModel.EditDelete
'swModel.SketchManager.SketchConstraintsDel 1, "sgOFFSETEDGE"
'swModel.SketchConstraintsDel i, "sgOFFSETEDGE"
'Next i

swModel.ClearSelection2 True
End Sub

Pièce1.SLDPRT (120,0 Ko)

Bonjour,

Plutôt utiliser cet exemple de l’API et l’adapter au besoin: Get Sketch Relations Example (VBA) - 2021 - SOLIDWORKS API Help

1 « J'aime »

J’ai un peu mal a y voir clair, je ne suis pas tres doué en vba si quelqu’un a une idee

Bonjour @ll1
Explique plutôt ce que qui te chagrine dans le code fourni par @Cyril.f et nous pourrons alors répondre à des questions plus précises.

je ne sais pas a quoi servent les variables SkPoint ID , je ne vois pas comment trouver les cotes bancales

Les « SkPoint ID » et « SkSeg ID » ne sont pas des variables mais du plein texte, pour afficher dans la fenêtre debug l’ID de point de l’esquisse (sk → sketch), et SkSeg l’ID du Segment.

Tu peux remarquer qu’ils sont entre " ", mais surtout que ces mots ne sont pas déclarés (avec un dim par exemple), donc ne peuvent être des variables.

ok mais ce ne me dit pas comment trouver le type de contrainte de chaque element selectionné pour savoir si il est bancale

Bonjour,
Pas eu le temps de tester mais il y a des critères de filtre sur ce doit scanner ce code. En gros là c’est paramétré sur All et en fonction du résultat tu peux tomber sur des cas non identifiés qui peuvent être des esquisses bancales ou autre.
Il faudrait paramétrer le filtre sur les éléments qui sont bancals pour faire une boucle spécifique sur ce statut.
Je n’ai pas accès à SW au moins jusqu’à la fin de la semaine.

Si quelqu’un connait les paramètres pour cotes
-bancales
-externes
-rompues

Pour les côtes bancales IsDangling Method (IAnnotation) - 2018 - SOLIDWORKS API Help
Voir ce sujet (non testé):
https://r1132100503382-eu1-3dswym.3dexperience.3ds.com/?_gl=11jlxmvc_gaMjcxNTI5NDczLjE2NDAwNjkyNDQ._ga_XQJPQWHZHH*MTY3MDQxNDI5Ny42NS4xLjE2NzA0MTQzOTEuNTYuMC4w#community:yUw32GbYTEqKdgY7-jbZPg/iquestion:GjZHVgFpSo-VcVvyOZ1i9A
Test cette piste et fait nous un retour si possible.

Et pour une esquisse:
https://help.solidworks.com/2018/English/api/sldworksapi/SolidWorks.Interop.sldworks~SolidWorks.Interop.sldworks.ISketch~GetConstrainedStatus.html

je n’arrives pas à m’en sortir si quelqu’un a une idée de code fonctionnel