# Visualizing Tolerances, and Geometry Question

As I seek to understand how Rhino’s NURBS geometry works just a little bit more, as well as seeking information to help me understand continuity, edge joining, how tolerances affect downstream actions in production it brings me to a question about tolerances. I also particularily liked the recent video on tolerances with the tip of working in tolerance tighter than you NEED, then if there are naked edges, change tolerance to what you do NEED, hoping that the tolerance shift will be enough to join the naked edges then stay the same or go back to the tight tolerances. That tip makes so much sense to me, and really helped me understand the approximations made with certain commands.

1. My question, is most tolerances are + or -, and I really have not worked with many things requiring a tight tolerance such as cnc machining or 3d printing. I certainly understand the concept of the + or -.

But, is Rhino’s tolerances somehow not + or -?

Example of my question: Absolute Tolerance set to .001, 1/1000th of a inch
-Now with + or - a object (A, object being aligned/projected) can line up tangent to another object in any position radiating from the From object (B the exact positioned object).

So not like cutting a 2 x 4, where you either cut short (-) or long (+) 1/1000.

(with a highly precisioned caliper square with a real long jaw, some real high tech sanding jigs, a precision lever action sanding fixture with precision lathe-like crossfeed, intense patience, this level of handcrafted 2x4 precision for your scrap 2x4 project may be possible)(that was a joke)

1. But I would assume Rhino’s tolerances do indeed extend out radially in all axes x,y,z from a given exact spot. Is Rhino’s tolerance in reference to all axes from a given known or already defined location? So, radially from a given location, the 1/1000 of a inch is rotated on all axes from known location?

2. Which leads to my original question, which this is a part of.
New example, the Absolute Tolerance is 1 inch.

Does Rhino use this full inch? Or does it account for, if This object were to be placed 1 inch away from the known location in 1 spot, then the distance between where it can be set 1 inch away on the other direction of the axes on a straight line would actually be 2 inches, and therefore cannot place 1 inch away. The max radius extending from the known location would be .5 inches.

Does this makes sense, and is this how rhino tolerances operate?

A clearer example.

1. A line is 2 inches long
2. The center/midpoint of the line is 1 inch
3. The distance from end of line to other end of line =2
4. The distance to the center of the line is 1

This line could be the tolerance I am referring to. But this line can extend in all axes of 3d space from the center of that line, making it spherical.

So, although it was listed above in another question, both sections here make my question more clear. Is rhino’s geometry tolerances spherical from a known position?

Does the tolerance account for how far it would be from the opposite point on the sphere thus making a 1inch tolerance actually have a maximum distance from known point .5?

FACTORS IN WHERE APPROXIMATE OPERATIONS ACTAULLY LAND
IN VARIOUS COMMANDS

1. Do, U and V directions of a known object + Known location affect where a approximate operation will be placed? quick example: right/left, top/bottom?

2. If you project a object onto a object, will rhino always place the object on top of the fixed object, with a gap between the outside geometry of the fixed shape, and the inside/bottom of the shape projected? Example thoughts: placing a banana on a sphere. Will rhino always have the gap between the outer parameters of the sphere and the banana? So that approximation operations never place a object overlapping? Or do approximate operations have the possibility of placing the banana inside the sphere’s geometry but within tolerances thus making it directly tangent? But when there are issues, and there is a naked edge, can it be on the inside?

I’d also like to gather a list of approximate operations to make a mindmap, so that I understand more as I am working about tolerances, and can make tolerance decisions as to what I am working on. I could be using a lot of approximation operations for random creativity, and I wanna know just what combinations of these operations are definitely leading to trouble, fixing them up to have less fitting issues etc…

So I’ll start with what I know, and anyone whom contributes would be be super awesome. I am making all kinds of mindmaps for nearly everything in Rhino to help me understand, and so far it has helped out a lot. Along with study software/quizzes, diagrams, databasing quizzes/types/options to search them in need with my own words/combinations of all sources, tasklist software, mindmaps to categorize things, I can learn Rhino. With plain notes, I have no shot!
So categorizing things such everything relating to input, constraints, mouse constraints, selection filters, coordinates and working them out visually in a mindmap, can aid in my progress. I could post em, and I could post some ones I already made but wouldn’t really be sure where to do so appropriately.

To cross categorize everything will help me a lot. I could update the post if people wanna contribute, and then eventually mindmap with pertinent information. It will also be including anything I can find about closed polysurfaces, joining naked edges, importing tolerance related, pre-preparing for 3d printing/Cnc , etc…

Items ???, and list these items at the bottom of category lists

before will denote not sure and listed but not sure for correction
-to help and fix the answer, copy/paste the whole lists and add === to the right of the command/type of command in question as well as feeling free to add information you know relating to:

(And subject to heavy review, please chime), question commands with ??? list at bottom of lists please

(Any plugin commands are also appreciated)

Related info such as:

1. How the approximation works
2. Related Issues regarding tolerances, and joining operations

List of Exact Operations
Points
Object Snaps

``````                                                  ????? **Edges**
``````

List of Approximate Operations
-Smash
Offsets
-Offset
-OffsetcrvonSrf
-OffsetMesh
-OffsetNormal
-ptOffsetEdges
-ptOffsetPoints
-ptOffsetBorder
-VariableOffsetSrf

-???ptOffsetgridbyheightfield
Projects
-Project
-ProjectToCplane

``````                                                        **Fillets**

**Sweeps**

**Trimming +
Trimming Related +
Commands Affected Downstream**
``````

–Trim surface
-TrimAtline
-TrimAtSurface

MaqueTools
Trim curves inside/outside boundaries 1, 2, and 3. (3 diff commands, same name)

``````                                                           Osnaps
``````

-???projectOsnap

``````                                                        Deformation Tools

**???Twist**

**???Stretch**

**???Bend**

**???Taper**

**???Maelstrom**

**???FlowAlongSurface**

**???FlowAlongCurve**

**???Orient Tools**
``````

???-Orient
???-Orient3Pt
???-OrientOnSrf
???-OrientOnCrv
???-Orient perpendicular to curve
???-Orient curve to edge
???-RemapToCplane
???Curve Tools

???_Extend to boundaries, surface, by arc

anything involving from or to other curves,etc…
_connect
_Join

``````                                                                  **Moving Tools**

Line Tools
``````

anything involving tangent and perpendicular to or from curves

But the main part, is if I can understand how rhino approximates and tolerance, and directions, etc…it will help me tremendously as I continue to learn Rhino.

Wow… That’s a heavy list.

As I understand it the tolerance is relative to the point at which you’re working, so as an example, if you draw a line 1000mm long it would be exactly 1000mm long. If you were to draw another line 1000mm long perpendicular to the midpoint of the first line the tolerance would be at the point where those lines come to meet one another, to recognise a snap-to-point or trim command.

So as another example, if you have two surfaces running parallel and you want to merge them, the tighter the tolerance the closer together those surfaces would have to be in order for the command work. If the tolerance is loose i.e. closer to 1 the sloppier the surface and the more likely you’ll run into problems further down the line.

Good question though

Over time you’ll learn by trial and error how accurate you have to be with surfacing, taking shortcuts and crowbarring things together often causes problems further down the line with filleting or Boolean operations etc.

Accuracy for CNC is going to be based on your tool wear and deviations in material too, if you’re cutting flat sheets of MDF on a 2 ½ axis CNC your holes would be accurate and your corners square working to a fraction of a millimetre (but the thickness varies across the face of a sheet), glass however is about +/- 2mm for accuracy but that is down to the toughening process.

CNCing an undulating surface of a 3D shape would be governed by the size of the cutter you use, so if for instance you’re machining high density foam you could lose a lot of fine detail by roughing it out with a bullnose cutter and stepping, the resolution and accuracy is governed by the tool, not the software per se. So in this instance, assuming you have an accurate model with no errors small deviations created by a loose tolerance wouldnt matter.

Thanks Cube. But I still would like to know all the in and outs of the questions I had, but you do indeed have some useful input.

I understand the tool tolerance well. I am learning for precision wax cnc milling, 4-5 axis. As well as precision casting(which has some quite intense tolerance equations).

So right away for the objects to be casted, in regards to tolerance there’s shrinkage rates of metals, mold materials, keeping details, how much of a detail is possible with vaccumed investment, perfect heating of investment mold, perfect amount of time taken to burnout, temperatures of burnout, sprue placement, on, and on…

Then there’s plenty of work to be done after the casting, fitting parts, laser welding, soldering jigs/fixtures, proper amounts of solder/heat, filing, buffing, polishing.

I also work with glass, and am expanding my tooling, capabilities, to work all forms of glass. From flameworking, fusing, casting, faceting, drilling, sawing, etching, dichro etching, dichro extract embedding, to sandblasting.

Glass is a whole nother ball game, where you start off with huge tolerances, try to battle gravity, inertia, laws of heat, chemicals that color glass(metals and metal oxides for the most part), flame atmospheres. To get technical on the glass cutting, it would come down to the drill you are using, runout of the bit, the silicon carbide/diamond/synthetic diamond grit, sizes of grit, whether the grit sizes have been filtered via water separation to below a certain tolerance of particle size, how often you cleaned out the pores of the diamond coated bit so that powdered glass doesn’t build up, whether boart/grit used in addition to bit gets between the bit and glass, and widens the hole larger than the bit…and on and on!

In flameworking, if you can produce unique stuff, anywhere near anything symmetrical your pretty good! Even with precision cutting of glass down to a 1/000 of an inch, as Cube stated = or - 2mm would be pretty good. So flameworking certain things such as labware beakers, graduated cylinders, etc…take intense robotics/quality control/etching and is not done by humans. Although these kinds of things are possible, and giant 2 feet diameter cylindrical-like freeform light bulbs are done by humans using massive lathes and about 12 torches in a crossfire. They set their lathe and torches and then duck down for a minute or two with heavy flame and heat retarding protection equiptment, stand back up make an adjustment, duck down!!! Compared to a standard flameworker, these setups are intense. Although I have a small crossfire of my own.

But symmetrical in glass isn’t easy at first. Keeping symmetry is glass takes a lot more skill, than keeping a cnc’d piece of metal symmetrical! You can use squares! Everything in glass is circular, and just like drilling a square hole is in metal, flameworking something symmetrical and square enough to trick the eye is the key. Same goes for engraving metal. You mess up, say on a square outlined setting, you expand it out further as well as all the other ones one the piece so that it looks as symmetrical as possible.

You know, sometimes it is fun to really look at and piece together the absolutely massive physics equations in simple tasks.

So each step involves tolerances, and those I understand mostly. So, everything down to how rhino processes commands is on my list.

With that stuff being said, I’m not understanding your 1000mm line example and I appreciate you taking your time to try helping me.

The recent video on tolerances stated osnaps being exact operations.

So does butting the line up to the line perpendicular produce a exact butt, or not exact butt, but within tolerance so rhino says its exact enough to produce a exact model with the data?

Here’s a much better question: When a surface can be merged, lines are connected, polysurface’s edges edges all meet and close a polysurface into solid. After the connections, does rhino change or overwrite the geometry to appear exact, or define the shape as closed, or do it’s previous approximations before a join remain? Is it overwritten as a perfect shape, or exact once operations have been performed, with a history embedded to previous deviations but does not matter since the new code is perfect?

I’m just trying to understand if it actually keeps track of how far away exactly it is, and within tolerance, or if any spot within that tolerance (variable) is what is written in rhino’s geometry. Bascially, does it come to a random location known to rhino to be this close on any axes of the objective, or does it pick a spot down to 1/1000 of an unit away from the known object?

Thanks a lot for any help on my quest.

Well, I think it’s over to the guys at Mcneel… My line example was with regard to relative tolerances, I’m not aware of any aggregated inaccuracy over distance, I hope there isn’t. As an example let’s say the tolerance for a building is 1cm over so many meters from a datum point as built, I’m not aware of Rhino following the same inaccuracies that would come about from human labour onsite. So If I drew a cube at 1cm and arrayed it 10x I would expect the total distance to be 100cm and not 100.05cm but then my dimensions are set to two decimal places and I’m building things for industry which would work within +/- 1mm in most cases. (having said that my tolerances are set as 0.001mm so I guess it would have that accuaracy over any distance in 3D space?)

I’m constantly learning and I’ll be the first to admit I gave my best (limited) understanding of how I think it works based on what I could glean from your extended question. I’d also like to know for my own benefit, going forward. Any models or 2D work I’ve output for simple flatbed CNC, simple(ish) 5 axis CNC and 3D printing have not had any requirement for absolute tolerance, other than hole centres and overall dims plus fixings etc, so if it’s a reception desk or a stage show piece or an injection moulded component I’ve been confident that what I’ve drawn or 3D modelled is accurate to within 0.001mm which is ample. Anything I’ve had made is then subject to the material tolerances and accuracy of assembly. Shrinkage for injection moulding etc I’ve left to the toolmaker: “my model is correct, please make the tool so that I receive a part which matches those specifications…”

You’re working on a whole other level

Does this Wiki page answer any of your questions…?

The other question I have is simply - why do you need to know all this very in-depth technical stuff in advance? Learning Rhino is an incremental process where you really need to try stuff out to see how it works (or doesn’t) and when you run into problems, THEN go looking for info on why it isn’t working. You can’t simply acquire all the knowledge beforehand, it’s far too abstract without putting it into the context of practical experience and examples.

–Mitch

That is correct - Joining (not merging, different thing) does not make any change to the underlying surfaces, it simply tells Rhino to consider the edges to be joined. If you force a join that is way out of tolerance, using JoinEdge, you can see that the edge curve may visibly move off of the surface.

-Pascal

Thanks for a couple answers. I need to know this stuff because I would like to work in a few formats.

1. Planning each little detail out, for the most part before modeling. Designing curves, etc, for say 15 sections.

2. Random creation, and remodeling. Bam, that’s the ticker. Using all kinds of transform tools until I get something that looks cool. That’s the way designing is some of the time. You cant think of something so you do wacky challenges to try make something cool out of something else. When I flamework, I do not plan. I wing it, adjust my ideas and design as I go. Making mistakes, fixing them to look better, doing something random, fixing it, repeating the new random technique somewhere else to form symmetrical designs. Waiting for something to catch the eye, and highlight as a feat.
All the while making each creation unique, and good looking. Now each of these creations is amazing, and if I were to plan them out, they would take 10 times as long.

With that being said, I would like to use sketch designs to trace, and transform, until they suit my needs. Or project awkward rotations of patterns to cplane, trace, warp, and transform.

As I already know, theres too many knives layin around for just a few cats to skin. In the process of skinning these cats with my paper burger king crown hat on, I might cut myself on these sharp knives in my way. I would like to have a organized knife rack, and be able to maneuver in my workspace safely, so that when I get to the last cat, I can wash all my knives off, clean up, and be done with it.

I dunno, that’s my quick little metaphor.

I would like to be able to do these dirty processes more cleanly, and have nice proper objects that aint gonna give me any trouble down the line.

So yes, I would like a quick little answer about the different categories of transformation tools.

And yes, I understand the psychology of why I would receive a answer that says “Look, you aint ready rookie kid. Why don’t you just read page 1 of Calculus 9 book, beat yourself silly, cry yourself to sleep because your not as gifted as those other people”.

Since my understanding is that transform commands are little more complicated than simple shapes, and involve a little more RAM, and that Rhino uses many technical processes to complete these things, I would like to know more.

Also, the reason I am asking these types of questions is that I am the type that likes to do all the work now, so that I’m cruising later.

I can get this far, that far, etc in Rhino. But as you say, you gotta learn as you go. Well, what about finishing an entire model? Joining, Booleaning, Merging, etc???

That’s why I need to know this stuff, because I was getting there and running into things that getting down to the root will solve.

You cant solve a math problem without knowing what numbers are first.

So really, I am trying to take rhino seriously, and learn the base.

This may seem like its advanced, but its actually the beginning.

Thank you for the info pascal, 2d, and helvesaur.

So, in a regular join, all the separate surfaces retain their data. Which can also be exploded, which will be the same as it was before. That makes sense.

And Rhino just changes in that, it now says they are joined. That’s one of the parts I would like to know a little more about.
Does rhino know where they are joined? Such as where the edges are in 3d space, and how far they really are away from each other?

Using joinedge you can see the edge curve can visibly move off the surface, cool. Thank you.

Also note, that The join, I’m kinda getting it. But transform and stuff, are approximations that I am most worried about. Because as I said, doing dirty processes, and figuring out how to clean em up so they are pretty, is what I’m into. Moire patterns, figuring out some pretty cool macros to do some fractal like stuff. But doing so cleanly.

A heck of a lot of trimming, joining, trimming new spot, joining, etc,all the way down to get a cool shape, to transform further. Which just feels dirty. There are processes that have just given me a dirty association, like knowing each trim surface likely came from a rectangle. And imaging what the underlying untrim disfiguredment might show. I’ve had some real organization issues, and honestly I’m improving a lot. Computer files, just random, no order. Garage, no order, just chaos. Some people really cannot stick to a routine for more than day, sporatic. I’m trying, almost my near my hardest, cause I’ll just beat myself up if I try my absolute hardest.

So anyways if you know all this stuff that I ask, and it’ll only take 10 sentances or something, I would greatly appreciate the kind help. I’ma do my best as a rookie to ask the right questions. Yes, in other forums, this is exactly who I am.

That’s why I am so good at glass.

Because I toughed it out at the forums, thinking of everything I could from inventions, to creative ways of making things, to creative ways of doing everything. Some people may be jealous of my characteristics without consciously knowing it, some catch themselves. I am somewhat jeolous of people who do not take notes, remember things after having read them once, and skimming. Whom can learn a computer program in less than a year. But I do what I can, and improve at learning. Working in Freezers and Meat Plants, when a lot of people were in college, I had lots of changes in my life. And I am now trying to become a semi-geek. There are many people that do not like me, because I do ask the serious questions that some people haven’t thought of. There are a lot of haters, and I understand.

Everyone wants to be the best. Everyone participating in a forum has emotions. Everyone has reasons for why they do things. Everyone judges one another from what they typed in 1 sentence, paragraph, a stupid avatar, etc…

From just 1 post, you make a judgement about someone, their screename, etc… I do it, but try not to.

Then you start remembering their posts right?

Like my post 6 months ago, asking something really basic and stupid, right? People working with rhino for years and years, read it, and labeled me

ROOKIE punk, and now he wants answers. Probably doesn’t even know how to build a most Ultimate Million dollar producing all inclusive sales, tests, quizzes, 2000 resource, market research, task list mega database. What a punk.

Everyone learns differently, and some command take a lot of work. I have the users guide from rhino, infinite skills video, youtube, and inside rhino 5. What I lack is the base. Remembering what each object is in geometry terms, points, degrees, continuity, etc…

Everyone explains things in different ways. And the only way my brain is working is cross referencing type categorization, which none of these sources have. I was going to be a writer once. My books were to have lists galore, quizzes, creative application skills, vocab, games, the whole works. That is actually what I need just to learn things others pick a book up read, and remember for life. So, as I go here, I’ll be posting some of my diagrams, and mindmaps for others that have not thought of things in a way such as mine before.

Anyways, much love, eat some ribs!

Actually, no. Explode will not restore the edges to their unjoined state. Try JoinEdge on two surfaces that are visibly not joinable, then explode, then RebuildEdges or, if the surfaces started out as untrimmed, just Untrim to get back the the pre-joined state.

-Pascal