Forum użytkowników programu Rhinoceros 3D
RHINOCEROS => RhinoScript i RhinoPython => Wątek zaczęty przez: satrab w 15 Czerwiec 2008, godz.02:09
-
Tak sobie pomyślałem, żeby rozruszać ten dział. Co prawda niewiele osób umie pisać skrypty, ale nie o to chodzi w tym topiku, ideą ma być publikowanie skryptów, których używacie i uważacie, że warto je polecić.
Co wy na to?
-
Tak by to mogło by wyglądać. Krótki opis, następnie wklejmy kod lub dołączamy plik jeśli jest to coś bardziej skomplikowanego, możemy dodać screen i na koniec autora.
Scatter script / skrypt rozrzucający obiekty
(http://content.screencast.com/media/6df86687-fdd3-42d4-a309-80cb803d820d_e0118080-f128-4644-a082-d33f570610dc_static_0_0_2008-06-15_1152.png)
(http://content.screencast.com/media/29c3ae69-73aa-4d71-81b4-674792e78a9f_e0118080-f128-4644-a082-d33f570610dc_static_0_0_2008-06-15_1153.png)
Option Explicit
Sub Scatter
Dim theGroup, bbGroup, theObject, bbObject, dist, distGroup, xg, yg, zg, xo, yo, zo, cg(2), co(2)
theGroup = Rhino.GetObjects("Select objects")
If Not IsArray(theGroup) Then Exit Sub
bbGroup = Rhino.BoundingBox(theGroup)
xg = Rhino.Distance(bbGroup(0), bbGroup(1))
yg = Rhino.Distance(bbGroup(0), bbGroup(3))
zg = Rhino.Distance(bbGroup(0), bbGroup(4))
distGroup = Sqr(xg*xg+yg*yg+zg*zg)
cg(0) = bbGroup(0)(0)+0.5*xg
cg(1) = bbGroup(0)(1)+0.5*yg
cg(2) = bbGroup(0)(2)+0.5*zg
Rhino.EnableRedraw (vbFalse)
For Each theObject In theGroup
bbObject = Rhino.BoundingBox(theObject)
xo = Rhino.Distance(bbObject(0), bbObject(1))
yo = Rhino.Distance(bbObject(0), bbObject(3))
zo = Rhino.Distance(bbObject(0), bbObject(4))
co(0) = bbObject(0)(0)+0.5*xo
co(1) = bbObject(0)(1)+0.5*yo
co(2) = bbObject(0)(2)+0.5*zo
Rhino.MoveObject theObject, cg, co
Next
Rhino.EnableRedraw (vbTrue)
End Sub
Autor:Mon, Alexander_77
-
satrab - tak z ciekawości, da się tu ustawić stopień rozrzutu elementów (czyt. gęstość) i czy jest to proces odwracalny?
-
Pomijając manualne zmiany w kodzie skryptu to nie ma takiej opcji, to samo tyczy się odwracalności. Gdzieś miałem taki bardziej rozbudowany skrypt, w którym min. było wiele ustawień dotyczących rozrzucania obiektów, może później go wrzucę jak najdę.
-
Ciesze sie, ze poza mna komus wydaje sie to przydatne ;P
Poczatkowo bylo to pisane tylko jako array-scale, ale tak naprawde dla mnie Loft po profilach w Array okazal sie znacznie bardziej przydatny -
mam jeszcze pare pomyslow co tam mozna dodac, ale nie wiem kiedy czas pozwoli.
atrab - tak, autor bloga to autor skryptu. Sam blog w zasadzie "premiere" mial dzis, ale traktuje go glownie jako strone, gdzie bede umieszczac skrypty albo definicje Grasshoppera, ktore uznam, ze moga sie komus przydac ( i sa tak napisane, ze nie bedzie Error wyskakiwal co minute ).
-
Jest bardzo mile, aby znaleźć ludzi, którzy mają tę samą pasję. Pozdrawiam Cię:)