Tworzenie modelu trójwymiarowego dowolnego obiektu staje się dziś już powszechną praktyką. Niemniej nadal duża część projektów wykonywana jest w tradycyjny sposób – jako obiekty dwuwymiarowe. W branży architektonicznej i budowlanej są to zwykle rzuty, przekroje i elewacje. Na ich podstawie można zbudować całkowicie trójwymiarowy model projektowanego obiektu. W praktyce wszystkie konieczne rzuty i widoki trzeba umieścić na płasczyźnie, a następnie ustawić je odpowiednio w przestrzeni. Pozwala to poprzez rzutowanie w dowolnym kierunku na kontrolę tworzonego modelu 3D. Zwykle najlepiej jest tworzyć bloki z poszczególnych widoków, aby potem w całości je obracać w przestrzeni. Widać to na animacji poniżej:
W AutoCAD do manipulacji obiekami w przestrzeni służą polecenia ROTATE3D i MIRROR3D. Jednak aby wyeliminować zbędne klikanie, polegajace na wskazywaniu punktów, wyborze obiektów itd. napisałem proste makro aby zautomatyzować ten proces. Ogólnym przyjętym założeniem jest obrót wskazango obiektu (tutaj zawsze wstawienia bloku) o 90 stopni w płaszczyżnie prostopadłej do płaszczyzny konstruktyjnej definicji bloku. Rzecz jasna płaszczyzna ta przechodzi przez punkt bazowy (wstawienia) bloku. Zdefiniowane polecenie BLR3 przy każdorazowym wskazaniu bloku obraca go o 90 stopni:
Kod makra jest krótki i stosunkowo prosty, a wygląda tak:
; ----------------------------------------------------------------------- ;
; by kojacek 2023/2024
(defun C:BLR3 (/ %e %o %i %s)
(if
(and
(setq %e
(car
(entsel "\nSelect section to rotate:")
)
)
(=
(cdr (assoc 0 (entget %e)))
"INSERT"
)
)
(progn
(setq %o (vlax-ename->vla-object %e)
%i (vlax-get %o "InsertionPoint")
%s (mapcar '+ %i (list 0 1 0))
)
(cd:SYS_UndoBegin)
(vla-rotate3d %o
(vlax-3d-point %i)
(vlax-3d-point %s)
(* 0.5 pi)
)
(cd:SYS_UndoEnd)
)
(princ "\nWrong selected - it is not a block.")
)
(princ)
)
; ------------------------------------------------------------------------ ;
Ponieważ obrót bloku wykonywany jest wokół osi, której pierwszy punkt jest punktem wstawienia, (a drugi przesuniety o jedną jednostkę w osi X), ważnym jest aby blok został wcześniej poprawnie zdefiniowany. Istotną rzeczą jest określenie punku bazowego (wstawienia). Punkt ten definiuje oś obrotu bloku. Po ustawieniu bloku w przestrzeni trójwymiarowej, od tego punktu zależą wartości poziomów:
Kilka słów o przestrzeniach 2D i 3D napisałem wcześniej już tu: Zrozumieć 3D : kod 210 – następny krok, oraz wcześniej TUTAJ. Także w wielu innych wpisach poruszyłem tematy dotyczace modelowania trójwymiarowego.
To jest #217 wpis na blogu
( . . . )