Gra selekcyjna według kryteriów VBA

Witam

Chcę automatycznie utworzyć zestaw selektorów twarzy (czasami kilkaset) według określonych kryteriów (obszar i wysokość).

Mam 2 rozwiązania: albo zaznaczyć wszystkie powierzchnie, zrobić zbiór wskazań i usunąć ze zbioru wskazań ściany, które nie spełniają kryteriów, albo przetestować wszystkie ściany i dodać te, które są zgodne w zbiorze wskazań.

Czy możesz mnie poprowadzić i ewentualnie podać mi składnię kodu?

Pozdrowienia

Frédéric

Aby wybrać wszystkie twarze, jest to dość proste:

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

Z drugiej strony, w przypadku części wykluczenia, w zależności od obszaru i/lub wysokości, będzie to znacznie trudniejsze.

Na powierzchni znalazłem to (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²"

Z drugiej strony, wysokość powierzchni, nie wiem, ale chyba powinniśmy zacząć od punktów.

Edycja: dla wysokości spróbuj tego:

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

Bardzo dziękuję za odpowiedź. Tak, to jest dokładnie ten kod, który jest potrzebny do wyboru ścian i pobrania współrzędnych.

Na razie używam:

Ustaw swSelectionSet1 = swModelDocExt.SaveSelection(errors), aby utworzyć zbiór wskazań

i

deselVal = swSelMgr.DeSelect2(selObjIndex, selectionMark), aby usunąć zaznaczenie powierzchni, które nie spełniają kryteriów.

Nadal mam pewne problemy z pionowymi ścianami, które nie zawsze są dobrze rozpoznawalne... i dlatego nie odznaczone!

 

Informuj nas o swoich postępach i opublikuj nam swój ostateczny kod dla społeczności.

Oto wersja funkcjonalna.

Dziękuję za pomoc!

 


select_faces.swp
carte_temp.sldprt

@fgauvreau bardzo dziękuję za wymianę zdań i nie zapomnij zamknąć swojego tematu, wybierając najlepszą odpowiedź.