Pierwsze kroki w Generative Components
Po dwóch tutorialach opisujących podstawy prostego programowania w środowisku Processing, zajmiemy się parametrycznym projektowaniem z użyciem środowiska CAD – Generative Components. GC obok Grasshoppera jest jednym z najbardziej popularnych narzędzi do tworzenia parametrycznych projektów (od niedawna dostępne za darmo na stronie http://www.bentley.com/getgc)
W Generative Components praca opiera się głównie na transakcjach – czyli podstawowych krokach tworzących parametryczny model. Zapisane są one w głównym oknie programu, które jest także przez niektórych nazywane ‘transaction player’, bo w istocie, służy ono właśnie do odtwarzania tych transakcji jedna po drugiej.
W pewnym sensie transakcje zapisane są w konwencji ‘akcji’, lub też ‘historii’ zdarzeń podczas konstruowania modelu, co jest czasem krytykowane (w Grasshopperze mamy do czynienia z jednym, finalnym modelem), ale w rzeczywistości pomaga jednak w pracy nad dużymi i skomplikowanymi modelami. Nie wiadomo zresztą do końca jak to będzie wyglądać w przyszłości, gdyż Bentley idzie powoli w kierunku nowych rozwiązań.
Wśród okien widocznych po otwarciu Generative Components widzimy także okno z diagramem symbolicznym (po lewej stronie, na dole). Służy ono do przeglądania logicznych połączeń i hierarchicznych zależności pomiędzy elementami, a szczególnie pomocne bywa podczas tworzenia nowych komponentów (ale o tym kiedy indziej). Niektórzy jednak nie używają tego okna prawie wogóle, lub sporadycznie podczas poszukiwania błędów w modelu (’nieudane’ elementy pojawią się tutaj na czerwono), więc jest to po części kwestia wyboru – można sobie w GC dać bez niego radę.
Przejdźmy do podstawowych elementów parametrycznego modelu.
Układ współrzędnych
Najważniejszym układem współrzędnych jest baseCS , który widzimy w oknie zaraz po otwarciu GC.
Jest to globalny układ współrzędnych, do którego odnoszą się wszystkie współrzędne punktów, wektorów itp. Graficznie przedstawiony jest jako czerwony punkt (origin), trzy kwadraty (XYPlane, YZPlane, XZPlane), i trzy wektory pokazujące graficznie oś X, Y i Z . Żółty kwadrat pokazuje obecnie aktywną płaszczyznę odniesienia – zawsze na początku jest to XYPlane, czyli pozioma powierzchnia przechodząca przez punkt 0,0,0
Punkt
Punkt to najbardziej podstawowy element parametrycznego modelu. Istnieje wiele metod tworzenia punktów, jedną z najprostszych jest ByCartesianCoordinates(coordinate system, x,y,z). Spróbujmy zatem stworzyć taki punkt. Aby to zrobić, klikamy na ikonę ‘create feature’ (w GC wszystkie obiekty nazywane są ‘features’), i z listy wybieramy ‘Point’. Po wybraniu punktu, lub generalnie po wybraniu obiektu który chcemy stworzyć, otworzy nam się druga pod-lista, która pokaże ‘metody’ jego tworzenia. Zazwyczaj jest ich tam trochę, każda potrzebuje trochę innych danych/zmiennych/obiektów wejściowych. My skupimy się teraz na najprostszej, czyli ‘ByCartesianCoordinates’. Po jej wybraniu, pokazuje się nam lista parametrów wejściowych.
Jako układ współrzędnych, w którym ma się znaleźć nasz punkt, wpisujemy ‘baseCS’ (tak, to jest nasz globalny układ współrzędnych – ale możemy to później zmienić). Należy zwrócić uwagę na duże i małe litery, gdyż np. ‘BaseCS’ nie będzie już działać).
W kolejnych polach wpisujemy współrzędne punktu, dajmy na to X =3 , Y = 2 , Z = 5
Ostatni parametr, zaznaczony na niebiesko jest nieobowiązkowy, więc nie musimy tam nic wpisywać.
Pod spodem widzimy jeszcze pola takie jak ‘name of new feature’, gdzie możemy wpisać np ‘pierwszyPunkt’ , albo ‘poczatekLinii’, lub też zostawić standardową nazwę jaką podpowie nam system (point01). Zdecydowanie warto wpisywać tutaj arbitralne nazwy adekwatne do tego czym jest dla nas dany obiekt, gdyż dużo łatwiej jest się potem połapać w modelu, szczególnie wtedy kiedy jest on już bardzo skomplikowany.
Klikamy zatem ‘OK’ po prawej stronie na dole, i widzimy coś takiego :
Jest to nasz punkt i jego parametry w modelu (po prawej widzimy go jako żółte kółko). Punkt został stworzony, a transakcja została dodana automatycznie do skryptu – możemy ją zobaczyć klikając dolną zakładkę ‘transaction file’, i odświeżając lub zapisując skrypt (odpowiednie ikony są pokazane strzałkami).
Tak więc w transakcji nr 1 stworzyliśmy punkt. Jest to jednak tylko jeden ze sposobów tworzenia punktów, spróbujmy więc czegoś innego. Na górze widzimy ikonkę ‘create point’ (linia z żółtym kwadratem). To narzędzie pozwoli wstawić nam punkt bezpośrednio w oknie widoku, przy czym punkt zostanie umieszczony na aktywnej płaszczyźnie odniesienia – w tym przypadku płaszczyźnie XY, pokazanej żółtym kwadratem na układzie współrzędnych baseCS. Po kliknięciu na ‘create point’ możemy wstawić go klikając w oknie widoku. Po tym przechodzimy do zakładki ‘transaction file’ i odświeżamy ich stan, lub zapisujemy zmiany.
Na dole widzimy diagram symboliczny z dwoma punktami. Drugiemu system automatycznie przypisał nazwę point01, ale możemy to zmienić edytując drugą transakcję.
Edytowanie transakcji
Teoretycznie można pracować w GC bez edytowania skryptu, ale na dłuższą metę jest to bardzo ograniczające. Tak więc dokonajmy prostej edycji – kliknijmy prawym przyciskiem myszki na drugą pozycję w transaction playerze, i wybierzmy ‘edit transaction’, po czym zmieńmy ‘point01′ na np. ‘drugiPunkt’
Tytuł transakcji może być dowolny, np ’stworzenie kolejnego punktu’ (zamiast ‘Add point01′) – tutaj też dobrze jest edytować tekst, żeby uczytelnić skrypt.
Jak widać, konstrukcja transakcji jest dość prosta. W pierwszej linii posiada słowa kluczowe transaction i modelBased , a potem tytuł. Zawartość zawsze znajduje się w nawiasach. Jako, że transakcja może zawierać w sobie wiele obiektów, każdy z nich również zamyka swój opis w nawiasach { … }. Słowo kluczowe feature zaczyna opis obiektu. Po nim następuje jego nazwa (razem z nazwą przestrzeni nazw, to jest lekko skomplikowane, ale .. uhm, podobno ułatwia sprawę
, a następnie typ deklarowanego obiektu- w tym wypadku Bentley.GC.Point
Jak widać na poprzednim zrzucie ekranu, drugi punkt posiada ‘uchwyty’ – służą one do manualnego manipulowania punktem w kierunkach X,Y lub Z. Widać je tylko na drugim punkcie, ponieważ posiada on słowo <free> przed wartością współrzędnej. Możemy dodać <free> przed wartości w pierwszej transakcji (ale muszą one znajdować się wtedy w okrągłym nawiasie), żeby włączyć uchwyty dla pierwszego punktu. Manipulować można nimi za pomocą narzędzia ‘move’
. Spróbuj użyć go, najeżdżając na jeden z uchwytów, klikając a potem przeciągając myszkę – punkt powinien przesuwać się w przestrzeni zgodnie z pozycją kursora.
Krzywa BSpline
Kolejnym obiektem, którego prawdopodobnie będziemy używać dość często jest krzywa Bspline. Jest to krzywa sklejana beziera, czyli złożona krzywa stworzona przez połączone fragmenty prostszych krzywych. Mówiliśmy o nich wcześniej w tym tutorialu. Krzywą taką można skonstruować na dwa sposoby – z punktów kontrolnych (metodą .ByPoles), lub z węzłów znajdujących się na krzywej ( .ByPoints). Generalnie polecam pierwszą metodę, gdyż łatwiej jest wtedy kontrolować styczność i pochodne krzywizny – w drugiej metodzie, gdy punkty są bardzo daleko od siebie, a potem nagle bardzo blisko, krzywa może wykonywać niespodziewane ‘zakręty’ albo pętle w przestrzeni.
Spróbujmy więc stworzyć taką krzywą dwoma opisanymi tutaj metodami. Stwórzmy zatem nowy szkic, wybierając File >> New Transaction File. Upewnijmy się, że naszą aktywną płaszczyzną jest baseCS.XYPlane, po czym wybierzmy narzędzie ‘place point’ i wstawmy do projektu cztery bądź więcej punktów, jak poniżej.
Następnie klikamy ikonę ‘create feature’ aby stworzyć krzywą, i z dostępnego menu wybieramy ‘BSplineCurve’ a potem ‘ByPoles’, jak poniżej.
Tak oto stworzyliśmy pierwszą krzywą BSpline. Możemy teraz pomanipulować trochę punktami za pomocą narzędzia ’move’ (
) i poobserwować zachowanie krzywej. Zwróćmy uwagę na fakt, że początek i koniec krzywej są styczne do linii stworzonej przez dwa pierwsze lub dwa ostatnie punkty kontrolne.
Dobrze jest spróbować też drugi wspomniany wcześniej sposób tworzenia krzywej (.ByPoints) i porównać różnice. Przy jednym, i drugim, punktów kontrolnych może być oczywiście więcej.
—————————————————————————————–
Tyle narazie jeśli chodzi o podstawy – a w następnym tutorialu zajmiemy się wykorzystaniem krzywych BSpline do stworzenia parametrycznego dachu z prawdziwego zdarzenia











dzienjdobry, mam taki problem- juz jakis czas temu sciagnalem gc z tego linku ktory Pan zamiescil do strony bentleya, najpierw pobrałem stery, direct x-y itd potem sie zalogowałem u nich i pobrałem gc – wszystko hulało należycie
niestety mialem problem z komputerem i musialem go sformatowac, po ponownym pobraniu gc (jako ten sam user albo inny) i zainstalowaniu gc automatycznie wyskakuje error. nie wazne czy wgrywam przyklady z gc, czy projekty z wersji przed formatem, czy w warsztatow z projktowania od razu wyskakuje error no i pyta czy ma wyslac raport, raporty powysylalem ale wiadomo na odpowiedz juz czekam 3 tydzien:(
czy wie Pan moze z czego to wynika?
przepraszam ze moje pytanie wrzucam tu ale nie moglem znalesc mejla do Pana
pozdrawiam
cześć Kuba,
możesz dokładnie podać nazwę tego błędu ? trudno mi cokolwiek teraz powiedzieć na ten temat, bo mam za mało informacji.. ale najlepiej spróbuj odinstalować GC, wykasować całkowicie folder z katalogu Program Files, i wykasować z rejestru wszystkie wpisy z Generative Components/Bentley (użyj regedit). Potem zainstaluj wszystko od nowa (po restarcie), powinno pomóc.
pozdrawiam
Przemek
witam ponownie, wyrzuciłem z rejestru wszystko co miało bentley w nazwie, odinstalowałem gc, usunąłem wszysttko z program files, sprawdziłem w systemie czy nie problemu z kartągraf – nie ma, zainstalowąłem od nowa i znowu error po odpaleniu czegokolwiek, wyskakuje to szare okno i pisze ze erro, nie potrafie pwiedziec jaki bo nie piszą a jak wchodzę w erro details to wyskakuje mi mega duzy plik teksotowy, takze nawet nie wiem o co chodzi bo czesc to jakies instrukcje reszta to juz sam kod binarny, nie wierze po prostu, wlasine siedziemy i robimy konkurs, polowe zadaszen i budynkow juz mialem wymodelowanych param z punktami kontrolnymi mialem ambitny plan zrobic cały projet konkursowy “bottom-up” techniką a tu taki niemiły klops, kompletnie nie mam pojęcia co się stało, bo mam wszystko to samo co przed formatem, no moze poza kartą dzwiekową ale to chyba bez znaczenia
pozdrawiam
Hm.. nie mam pojęcia. Musisz chyba spróbować na innym komputerze.
Spróbuj jeszcze ściągnąć nową wersję ze strony Bentleya, jeśli jest inna od tej którą masz, to może zadziała – czasami to pomaga. Jeśli nie, to musisz zainstalować którąś ze starszych wersji GC.
Niewykluczone jest też, że to karta graficzna – spróbuj zainstalować najnowsze sterowniki.
Trzymam kciuki- mam nadzieję, że jeszcze się uda!
witam, poprowadziłem manualną instalacje i jakimś cudem działa…wiec dzieki serdecznie, naprawde pomogło. inna sprawa to 30dniowy trial- jakoś to obejdziemy.
natomiast chcialem Cie spytac Przemku odnosnie tworzenia elips w gc, wiadomo jest tam taka funkcja w feature-sach, ale jak stworzyć elipsę opartą na 4 punktach? pytam bo te wlasnie punkty są ściśle oparte na planie urbanistycznym, mają swoje analogowe suwaczki do lekkiej korekty, natomiast teraz chcialbym na nich oprzeć elipsę, które potem bedzie podstawą do więszego zadaszenia, jakieś pomysły? bo przejechałem przez te wszystkie menu ale ze srednim skutkiem. wybacz te trywialne pytania ale ciezko cos o tym znalesc, nie mowiac juz o jakis stronach z tutorialami innymi niż “parametryczny dach”… pozdrawiam
kuba
Cześć Kuba,
Elipsę buduje się z trzech punktów – centrum, i dwóch promieni. jeśli chcesz mieć 4 punkty, to musisz je najpierw stworzyć w GC, tak żeby tworzyły dwie osie przecinające się pod kątem prostym. W punkcie przecięcia tych osi stwórz nowy punkt – to będzie środek elipsy (CenterPoint). Potem tylko wpisujesz po jednym punkcie z każdej pary (tych, które definiują osie) jako PrimaryAxisPoint i SecondaryAxisPoint. Mam tutaj na myśli metodę .ByCenterAxisPoints.
To chyba najłatwiejszy sposób.
Więcej napiszę na maila, pozdrawiam
Przemek