16 października 2021


Jeśli elementem tnącym powierzchnię Surface To Split jest Cutting_Plane, to jest chyba oczywiste, że płaszczyzny Left i Right powinny być zastosowane do ustalenia, którą część powierzchni system powinien pozostawić po odcięciu (zamiast płaszczyzn można zdefiniować punkty, na przykład MaxX, MinX, MaxY, MinY, MaxZ i MinZ). Metoda wyboru polega na zastosowaniu operacji Near (blisko, bliski) do obiektu, który jest co najmniej dwuznaczny, czyli jest zbudowany z więcej niż jednego komponentu (na przykład dwa punkty). Jaki obiekt geometryczny może być zbudowany z dwóch punktów?

Rys13_b
Rys. 13

Po spełnieniu pewnych warunków w wyniku przecięcia dwóch krzywych, z których przynajmniej jedna jest zamknięta, otrzymamy dwa punkty. Pierwszą z tych krzywych może być rzut Project.1 linii Line.1 na powierzchnię Surface To Split (Rys. 13).
Drugą krzywą może być krzywa graniczna Boundary.1 (Rys. 14) powierzchni Surface To Split zdefiniowana w trybie Propagation type = Point continuity.

Rys14_b
Rys. 14

Krzywa Boundary.1 jest oczywiście krzywą zamkniętą, bo jest to krzywa graniczna powierzchni. Polecenie Intersection (Rys. 15) zastosowane do krzywych Project.1 i Boundary.1 generuje dwa punkty przecięcia (“The resulting geometry of this element is made of 2 sub-elements that are not connected”), z których w tym przykładzie wybieram bliższy płaszczyźnie Right.

Rys15_b
Rys. 15

W rezultacie, niezależnie od kształtu i orientacji powierzchni Surface To Split, mamy punkt Near.1 (Rys. 16), który leży na tej powierzchni i w przestrzeni modelu znajduje się bliżej płaszczyzny Right niż Left.

Rys16
Rys. 16

Definicja polecenia Split z punktem Near.1 jako Element to keep generuje oczekiwany rezultat: system zachował po odcięciu płat powierzchni bliższy płaszczyźnie Right (Rys. 17).

Rys17_b
Rys. 17

Czy taka procedura jest uniwersalna, to znaczy niezależna od kształtu i orientacji powierzchni odcinanej? Moim zdaniem tak. Wystarczy zdefiniować nową powierzchnię (tu New Surface To Split), upewnić się, że ta powierzchnia ma zwrot przeciwny do zwrotu powierzchni Surface To Split i wykonać polecenie Replace (Rys. 18). Rezultat procedury konstrukcyjnej, czyli powierzchni Split.1, jest zgodny z oczekiwaniami – system pozostawił po odcięciu ten płat powierzchni New Surface To Split, na którym leży punkt Near.1, czyli bliższy płaszczyźnie Right.

Rys18_s
Rys. 18


Rys19
Rys. 19

Procedura wyboru może być oczywiście inna, bo może uwzględniać punkty przecięcia jakichś krzywych z powierzchnią lub rzuty jakichś punktów na powierzchnię. Użyłem określenia „jakichś”, bo WSZYSTKO zależy od otoczenia geometrycznego i intencji konstruktora. Tu powrócę do pytania, które zadałem na początku: jak w takim razie w sposób automatyczny określić, która część powierzchni ma pozostać po wykonaniu polecenia Split?
Odpowiedź #1: Zachowaj tę część, która ma punkt przecięcia z zadaną krzywą.
Odpowiedź #2: Zachowaj tę część, na której leży rzut zadanego punktu.
Odpowiedź #3: Zachowaj tę część, która ma krzywą przecięcia z zadaną powierzchnią.
Odpowiedź #4: …
Zastanów się nad procedurą konstrukcyjną, która zrealizuje Twój zamiar w taki sposób, żeby kontrolować rezultat polecenia Split, niezależnie od orientacji elementów pomocniczych (krzywych, płaszczyzn lub powierzchni), bo tylko wtedy Twój model przestrzenny będzie zawsze przewidywalny.

Andrzej Wełyczko


artykuł pochodzi z wydania Grudzień 12 (63) 2012