Sep '04 - Aug '08
Welcome back to Elite Modeling School. If you missed it, day one would be a good place to start. As a reminder, we're not focusing on extreme cases: this tutorial is about optimizing your workflow in rhino and later maybe we'll cover other programs.
In general, the instructions here will be fairly brief. Please download the scripts and give them a whirl; everything covered here will be pretty straightforward. If you have further questions or suggestions to share you can post them in the comments below.
All scripts mentioned below are available here.
Keep it Clean
I am a bit obsessive about having clean geometries in my rhino files. Generally I despise having isocurves turned on for my surfaces unless I'm working with a complex curved geometry.
Left: Three cubes with isocurves turned on. Right: Three cubes as separate objects but isocurves turned off.
This issue can become especially obnoxious when working with booleaned solids because, by default, the faces of the original solids are maintained. This can lead to some confusing extra lines in the viewport and it's why I developed the "cleanBoolean" script. This script will perform a normal boolean union, then select the new unioned solid, and finally run "mergeallfaces" to eliminate extra iso curves. The result: perfect, clean solids.
Left: Three cubes booleaned into one with default boolean command. Right: Results of the cleanboolean script.
Measuring Quickly
One of the biggest pains in my ass last summer was trying to do some general plan layouts for a building with a totally irregular geometry. We had very specific area requirements for each line item in the brief, so controlling general surface distributions was critical.
Rhino's built in "area" command is excellent but it only works for surfaces and closed curves. When you're sketching out a plan it can be quite a pain to convert individual rooms into unique polylines so that you can test their area. Why not test the area of an arbitrary bounded figure regardless of whether it's caught between one curve or multiple? This is exactly what the script "boolArea" accomplishes.
When you run "boolArea" the script will ask you to click inside the areas that you would like to add to your selection. Once you do this and then hit space bar it will report on the combined area.
Left: Separate curves. Right: Arbitrary shape selected
Congratulations, you've passed Elide Modeling School #2!
p.s. If you're not familiar with it, try using the "dot" command. Dots are super useful for labeling program chunks in your model since they always "look" at the active camera.
13 Comments
Both scripts look pretty useful, thanks!
(Paul, when's the t-shirt coming?)
I'm sure if i used Rhino I'd be adding more useful commentary - but instead I'm just caught up with the logo
are there going to be ranks?
1337
great use of your school blog! much appreciated from the rest of us trying to streamline our rhino use.
they're a little bit buggy, though. the arcDist script likes to snap to apparently random places and creates runtime errors in lines 24 and 31 when escaping from a command and when exiting, respectively. check these out, and maybe use your fellow stuio-mates as guinea pigs before you post the next.
keep 'em coming, though.
jd, sorry to hear you're having some problems but remember to read the preface to the script: everything is provided as-is.
There's nothing in arcdist that effects snapping, so any odd snap behavior you're witnessing is a result of the normal rhino snaps...
they aren't actually errors jd. the script is returning a null value if you don't create an arc, and thus the error that comes up is Rhino telling you it doesn't have an arc to measure.
the following modification won't return any error values.
Call arcDist ()
Sub arcDist
Dim arrPoint, strView, arrObjs, dblLength, strDeg, strRadius
Rhino.Command("arc")
arrObjs = Rhino.LastCreatedObjects
If IsNull (arrObjs) Then
Call Rhino.MessageBox ("You Forgot To Make An Arc")
Exit Sub
End If
If Rhino.IsCurve(arrObjs(0)) Then
dblLength = Rhino.CurveLength(arrObjs(0))
strDeg = Rhino.ArcAngle(arrObjs(0))
strRadius = Rhino.ArcRadius(arrObjs(0))
Rhino.Print "Arc Length: " & Round(CStr(dblLength),3) & "units /// Degrees: " & Round(strDeg,3) & " /// Radius:" & Round(strRadius,3)
Rhino.DeleteObjects(Rhino.LastCreatedObjects)
End If
End Sub
NICE! Thanks, ks!
beats me where the snapping was coming from, but it was while measuring with no arc. problem solved; copy-paste.
thanks, kyle.
i didn't even know you could turn the isocurves off in rhino
i'm going to go home and load all these scripts. i am totally into this.
Rhino > Option > General (show isocurves) if you don't want to see any
Block this user
Are you sure you want to block this user and hide all related comments throughout the site?
Archinect
This is your first comment on Archinect. Your comment will be visible once approved.