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.
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?
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.
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)...