Wyodrębnij obraz ISO z linii SolidWorks - VBA

Cze wszystkim.

Ten temat dotyczy solidworks - vba:

Szukam sposobu na wyodrębnienie wszystkich punktów ze szkicu 3D w kolejności przestrzeganej podczas funkcji skanowania . Ma to na celu wykonanie obliczeń takich jak: pomiary ilościowe, spadek ciśnienia, przewodowy rdm...

Wypróbowałem następujące 4 funkcje:

swSketch.GetSketchSegments: Wyświetla segmenty w niewłaściwej kolejności.
swSketch.GetSketchPoints2: podaje punkty w niewłaściwej kolejności --> załączam przykład. Próbowałem swSkPt.GetID(0) i swSkPt.GetID(1), ale nie podaje polecenia.
swSketch.GetSketchPaths: nic w moim przypadku
swSketch.GetLines: podaje punkty w kolejności, ale przetwarza tylko około połowy szkicu - > naprawdę źle, byłem prawie tam!!

Dla każdego z nich przeszedłem do pętli typu:

                        Dla i = LBound(vSketchPt) Do UBound(vSketchPt)
                            Ustaw swSkPt = vSketchPt(i)
                            Debug.Print (swSkPt.X & "; " & swSkPt.Y & "; " & swSkPt.Z)
                        Następny

Byłbym zainteresowany, gdyby miał Pan jakieś rady, których mógłby mi Pan udzielić w tej sprawie.

Dziękuję


exemple.png

Witam

GetLines wydaje się przestarzały. Wypróbuj z GetLines2

https://help.solidworks.com/2020/english/api/sldworksapi/SOLIDWORKS.Interop.sldworks~SOLIDWORKS.Interop.sldworks.ISketch~GetLines2.html

Jeśli chodzi o porządek kropek, instynkt i to, co interpretuję z wyniku uzyskanego na twoim obrazie, powiedziałbym, że jest on określony tylko przez porządek stworzenia. Zaokrąglenie szkicu dodane po narysowaniu linii 1-2 2-3 3-4 będzie ponumerowane 5-6 z punktem środkowym łuku numeru punktu zaokrąglenia (#2 w twoim przypadku). W rezultacie Twój kod odczyta je (i połączy) w tej kolejności.

SW nie dba o kolejność punktów, zależy mu tylko na tym, który punkt jest połączony z którym punktem, aby narysować jego linię (1-2 lub 1-5 jest dla niego takie samo).

Wykonaj test z kodem na szkicu w kształcie litery W, zobacz wynik, a następnie zastosuj pozostawienie w 3 punktach pośrednich, uruchom ponownie kod i zobacz wynik.

Dziękujemy za Twoją opinię. Rzeczywiście, to święta zakłócają porządek.

Przeprowadziłem kilka testów z GetLines2, przetwarza on również tylko część szkicu.

Należy pamiętać, że pomimo świąt SW jest w stanie dokonać rosnącego sortowania zgodnie z położeniem punktów na trajektorii. Podczas ograniczenia trajektorii możliwe jest na przykład wprowadzenie wartości procentowej, a obiekt jest umieszczany we wskazanej pozycji (por. PJ z piłką na 50% trajektorii).

A priori, przy wymienionych 4 funkcjach, nie jest możliwe uzyskanie dostępu do tego sortowania zgodnie z trajektorią. Pytanie brzmiałoby zatem:

Czy to rosnące sortowanie jest dostępne za pomocą funkcji VBA?


trajectoire.png

W IGetLines2 masz parametr ArraySize, który, jak zakładam, zapewnia liczbę wierszy, a tym samym pozwala zarządzać liczbą iteracji pętli. Myślę, że powinno to pozwolić ci przejrzeć i przetworzyć cały szkic.

EDIT: wiadomość, aby zapomnieć...

1 polubienie

Co oznacza ta funkcja w odniesieniu do GetID? W zależności od sytuacji możliwe może być powiązanie id punktu z położeniem na powierzchni.

EDIT: wiadomość usunięta, nie trafiłem. Przepraszam.

Dziękujemy za Twoją opinię. Zamierzam przetestować funkcję  IGetLines2 .

Jest to temat, którym traktuję się jako wspólnym wątkiem, gdy mam dostępność. Na razie zostawię ten temat otwarty.

GetID(0) i GetID(1) zwracają liczbę całkowitą, różną dla każdego punktu. Posortowałem według tych 2 wartości, ale nie pokazuje trajektorii.

Zauważyłem, że w VBA istnieją metody i "I-metody":

GetLines2 & IGetLines2, GetID & IGetID, GetSpecificFeature2 & IGetSpecificFeature2

Często I-Methods wymagają więcej parametrów niż metody, ale zwracają ten sam typ obiektu.

Jeśli masz jakąś dokumentację na temat tej Metody Dwoistości i Metody I, jestem zainteresowany.

Do zobaczenia znów

Witam
Z pamięci wydaje mi się, że funkcja ścieżki w szkicu porządkuje elementy, ale jest dostępna tylko dla szkiców 2D.
Na podobnej zasadzie połączone makro szuka jednego końca ciągłego łańcucha elementów w szkicu 2D lub 3D i porządkuje je w kolejności rosnącej.
Wyświetla również kolejne punkty łańcucha, co wydaje się spełniać Twoje żądanie.
Makro zostało przetestowane tylko na dwóch szkicach w załączonym przykładzie (SW 2021)...

Pozdrowienia.


sketchptsorder.zip