Jeu de sélection suivant critères VBA

Bonjour,

Je souhaite créer automatiquement un jeu de sélection de faces (parfois plusieurs centaines) suivant certains critères (aire et altitude).

J'ai 2 solutions: soit sélectionner toutes les faces, faire un jeu de sélection et supprimer du jeu de sélection les faces qui ne correspondent pas aux critères, soit tester toutes les faces et ajouter celles qui sont conformes dans un jeu de sélection.

Pouvez-vous me guider et éventuellement me donner la syntaxe du code svp?

Cordialement

Frédéric

Pour sélectionner toute les faces cela reste assez simple:

https://help.solidworks.com/2020/english/api/sldworksapi/select_all_faces_on_part_example_vb.htm?verRedirect=1

Par contre pour la partie exclusion en fonction de l'aire et/ou altitude cela va s'avérer beaucoup plus coton.

Pour la surface j'ai trouvé ça (https://r1132100503382-eu1-3dswym.3dexperience.3ds.com/#community:yUw32GbYTEqKdgY7-jbZPg/post:RN7LsVLNRHKp5EW5viOLLw):

    Dim Area As Double
    Area = swFace.GetArea

    Debug.Print "Area = " & Area & " m²"
    Debug.Print "Area = " & Math.Round(Area * 1000000, 1) & " mm²"

Par contre l'altitude d'une surface, je n'en sais rien mais il faudrait plutôt partir de points, j'imagine.

Edit: pour l'altitude essaie ça:

https://www.codestack.net/solidworks-api/geometry/get-face-center-parameters/

Merci beaucoup pour ta réponse. oui c'est exactement le code qu'il faut pour la sélection des faces et pour récupérer les coordonnées.

Pour le moment j'utilise :

Set swSelectionSet1 = swModelDocExt.SaveSelection(errors) pour créer un jeu de sélection

et

deselVal = swSelMgr.DeSelect2(selObjIndex, selectionMark) pour désélectionner les faces qui ne répondent pas aux critères.

j'ai encore quelques soucis avec les faces verticales qui ne sont pas toujours bien reconnues...et donc pas désélectionnées!

 

Tiens nous au courant de ton avancé, et poste nous ton code final pour la communauté.

Voici la version fonctionnelle.

Merci de ton aide!

 


select_faces.swp
carte_temp.sldprt

@fgauvreau  parfait merci pour l'échange et oublie pas de clôturer ton sujet en sélectionnant la meilleur réponse.