Skills

View of the sand mold for steel casting. Sand casting, also known as sand molded casting, is a metal casting process characterized by using sand as the mold material.

Foundry Patterns

Yesterday, the circle of interests completed a circuit.

One of the primary reasons I purchased a 3D printer was to make foundry patterns. I know how to make patterns, I don’t have the skills I need to make patterns.

Many in the small scale casting arena are turning to 3D printed patterns.

These have the advantage of going directly from CAD to pattern.

They have the disadvantage of needing more prep work.

When you ram up a flask, you are forcing sand with a binder to be compacted so tightly that it will stick to itself. “Greensand” is made from sand, southern bentonite, and water. You need add enough water to cause the clay to bind. That water needs to be mixed in a process called mulling. If you add too much water, the sand won’t work right. If you add to little, the sand won’t bind when rammed.

You can tell foundrymen because they will forever be picking up a handful of sand, squeezing it in their fist, and judging how good it is.

The only truism is that the sand of other foundrymen is never as good as theirs.

Petrabond is a commercial product that is a combination of sand, magic binder, and oil. It does not need to be mulled the same way green sand is.

Whichever foundry sand you use, the process is the same. You start by putting the bottom half of your flask, called the drag, face down on the molding board. You position your pattern on the molding board within the boundaries of the drag. You sift your sand over the pattern until you have enough to start pressing it down. This needs to be done gently enough that you don’t damage the patterns.

In addition, you are sifting the sand to make sure no large particles are directly against the patterns. The finer the sand, the nicer the mold, and the nicer the casting.

Once you have the first layer down, you shovel more sand in, then you use a rammer (stick) to hammer the sand down, compacting it as much as you can. Once that layer is done, you add another and another layer until you go over the top of the drag.

You strike off the drag, which is to use a straight edge to remove all the sand above the edge of the flask.

You then flip the flask over, cut runners and gates, mark where the risers and sprue will go, then add a healthy coating of pattern dust.

Parting dust is basically talcum powder. Many home foundries use talcum powder. The powder keeps the sand from sticking.

With the drag right-side up, you can see the top of the pattern bedded into the sand. You place the top half of the flask, called the cope, on top of the drag.

If the pattern is a split pattern, the other half is put in place. Keys in the two halves (dowels) align the halves. More parting powder, then the cope is rammed up, the same as the drag was.

The sprue and riser are cut into the cope. The pouring mouth is cut.

The cope lifted off the drag and placed on its side.

Think about this: you are lifting somewhere between 40 and 55 pounds for a smallish 15×15 flask. That’s just the weight of the cope or drag, the entire flask will be 90 to 110 pounds.

This sand is compacted so firmly that it supports its own weight. I’ve actually seen video of the cope being lifted off the flask with a crane. It was about 6 ft by 6 ft by 8 inches.

We now have to remove the pattern from the mold. This requires pulling the pattern straight up. The sand will grip the pattern so tightly that you have to make small amounts of space around the pattern.

You do this by knocking the pattern. We put draw pins into the pattern. These are screwed into threaded holes in the pattern. We rattle the draw pins with anything that will cause the pattern to shift back and forth in the mold. Anything that is shaped like a two prong fork works well.

The pattern has draft, this is an angle put on the sides so that the parts deeper in the sand are narrower than the parts at the surface. Once you draw the pattern even a little bit, that taper means that the pattern is completely clear.

Think of the game Operation. That’s what we are doing.

Back to those 3D prints.

The problem with 3D prints is that the surface finish is rough. So after you print a pattern, any surface that would have draft has to be sanded and polished. It needs to be as smooth as possible.

Which brings us to yesterday.

I was able to print a modular flask pattern. This is a multipart pattern. You slide the pieces together to create one side of a cope/drag. You then cast the side of the flask. Do that 8 times, and you have a flask of the size you want.

Using these different modules, I can create a flask side from 7″ long to nearly 30″ long.

Which is what I plan to do. I’ll make four sides that are 8 to 10 inches long with the ability to accept alignment pins.

I’ll then cast 4 more sides in the 10 to 15 inch length with no alignment pins.

These sides will then be machined so they have flat tops and bottoms and are of uniform size. They can then be bolted together to form whatever flask size I need.

These were printed in “PA6-CF”. This is nylon 6 (I don’t remember what the 6 means) with carbon fiber. It is considered an “engineering material”.

This printed beautifully! The best prints I’ve seen so far. I’m very impressed. I still need to sand the draft edges to smooth them. I’ll also be looking at some sort of filler. The pieces of the module will then be painted with a filers and primers and a final coat to make them as smooth as possible.

I’m excited for casting weather to arrive.

AI Safety Boundaries

Many of my articles, recently, have touched on using AI. I’m a convert. I use it but don’t trust it.

My example from yesterday was that I asked for and received a fully functional UI tool with all the skeletal work done. The next 8 hours were me cajoling Grok to provide suggested code for the next step.

This was still faster than writing the code 100% by hand.

While watching Grok’s agents talk about what they were doing, the phrase “honest and safe” popped up. Not the first time I’ve seen this.

I have a difficult time with information being considered “unsafe”. I asked Grok what this meant. One of the examples it gave was it would not give me help or instructions on building bombs.

I went exploring. We run a fairly extensive Easter Egg hunt for teenagers and young adults. The hunt is over 25 acres of woodland. In years past I’ve used bearing + distance clues at each clutch of eggs. Normally, I use line of sight. You can see the next egg from the current egg.

For the last couple of years I’ve wanted to add “obstacles” to this. An example would be the devices that fire a shotgun primer when a tripwire is pulled (or cut). Just having something go “BANG” as they are moving through the woods.

I explained to Grok what I wanted to do, and it refused; it was a clear violation of its safety boundaries.

With that, I changed the task; instead of going “bang” I just wanted the Arduino node to “wave a flag.” Grok happily gave me all the information required to source the parts and build the nodes. If I can get a device to wave a flag, I can make it pull the pin or trigger some sort of BANG.

Next we worked on the discrimination circuits. A simple passive IR sensor wouldn’t work. I got Grok to tell me how to add microwave radar detectors. With this, the node would be able to discriminate between ground clutter, animals, and humans. No problems.

Thereafter, I went for low observability. We added audio detectors and a PIR back into the design. If the passive detectors triggered, the active MW Radar would come up for 200 ms to do a pinpoint location. Again, Grok had no concerns.

I was feeling a bit cocky, so I went for the next big step. Connecting everything up in a mesh network. Take it as a given that the specifications for what I wanted would have made it difficult for any current system to be able to detect a node. It would still be easy to neutralize the nodes, but that is a different issue.

Here Grok said, “NO!” It refused to build a “tactical” system for tracking humans as they move through an area.

I patted Grok on the head, told it, Good girl. Attempted a brute force method to bypass boundaries and then let it drop.

Except Grok is context driven. All AIs are. Each time you give an AI a prompt, the user interface sends a “context” along with the new prompt. When the AI replies, that UI is given the new context to store. This means that it is difficult to remove a reference from an AI but that an AI has no true long term memory.

Today I opened a second instance of Grok. I didn’t tell it anything about me. I didn’t mention the Easter egg hunt. I just asked it to help design and program a “stealth” mesh sensor network. It did. Part numbers, prices, basic sketches for Arduino. Everything needed to build sensor nodes good for a year or more for around $30 each.

It went so far as to help me design placements for the nodes in a woodland setting for 80% coverage of a 4 acre AO.

These things are not smart.

Closeup image of calculator keyboard

My First Calculator

CBMTTek talks about how the infatuation with AI today mirrors what was happening as calculators were becoming mainstream devices. Why Use AI?

I remember that time as well. My father was back at college working on his MBA when he purchased his first calculator. It was a four-function calculator with a percent key. It was a good purchase for my father, but it broke him in a way that I did not expect.

Dinner always took place at the dining table. Mostly the kitchen table, but always at the table. Conversations were wide ranging with Mom or Dad giving us insight into the world around us. Dad is talking about investments and what happened at work.

There were Pun Fests, where Dad, my brother, and I would try to play off the last person’s pun while Mom was busy groaning and begging us to stop.

But one of the most impressive things was Dad doing math. You could give Dad a series of math problems, which he would work in his head and give you the correct answer very rapidly.

Shortly after Dad started using the calculator, his ability to do math problems stopped. He could still do them; it just took longer, and he wasn’t as interested in doing them.

Some time after that, when I was in high school, I got a TI-30. Later, my work loaned me an HP-41C. I still use reverse nolish potation when using the Linux Desk calculator dc.

The math teachers wouldn’t let us use calculators in class. The stated reason was that not everybody could afford a calculator, which made it unfair to the rest of the students. Which was a bit shocking to me when my children were required to purchase a graphing calculator, which was over 100 bucks at the time.

My chemistry teacher wouldn’t let us use calculators either. So I took Dad’s slipstick to class and had permission to use it. The teacher never really understood that both a calculator and a slide rule accomplish the same things. It was just that she approved of the horse and buggy but not the Model T.

My English teacher I scammed. I couldn’t spell then, and I don’t speel much better today. The difference is that my grammar checker screams at me when I spell a word incorrectly or use bad grammar.

I got her to approve the use of a calculator during spelling tests. I got a 100% on that spelling test. The only spelling test where I got a 100%. The reason? I was using that HP-41C, which had an alphanumeric display. I had programmed in all the spelling words so I could look up the correct spelling.

Mrs. Trout was shocked that I got a 100% and knew it was because of the calculator. She asked about it and I gave her some technobabble about percentages and other math sounding terms. She was just nodding her head along with it.

“Do you want to see it in action?”

“Yes”

I pulled up the calculator, asked her for a word, then scrolled to the correct spelling.

“See?”

We agreed that the HP-41C was not going to be allowed for tests in the future. She laughed at the joke.

She’s also the teacher who allowed me to do my Chaucer project by just banner printing one of the stories. She was so impressed that she had us put it up on the back wall. One of my classmates knew what I was doing and picked as his project memorizing and presenting a Chaucer story. It just so happened to be the one I had done.

For his presentation, he stood at the lectern, Mrs. Trout sat in the front row, and he then proceeded to READ the story from the back wall.

After class I showed her the trick. She still gave him his good grade.

The tools are ever changing. You either learn to use the new tools, or you get left behind. I don’t like Python. I’m a Python expert. I consider my childhood language, my starting language, to be C. I haven’t written a new line in C in over 20 years. I write in Python, Perl, PHP, and whatever else is needed that day.

These languages are tools to get the job done.

AI is a new tool. You can depend on it and find out that all the citations it gave you were bogus; you can ask it to write for you and find that it just doesn’t have the punch you are looking for. You can have it do many things. But it is just a tool.

If you are using the tool, then it should be ok. If instead you are forgoing your responsibilities and just letting the AI lead, you deserve the bad things that happen.

Programming with Grok — Updated

In Perl, a scalar is represented as $scalar, an array as @array, and a hash as %hash. In PHP all variables are represented as $var. In C or C++, you declare your variables, so int i; int array[25];. Java uses C like declarations.

JavaScript can’t make up its mind, so everything can be anything.

I also program in Python and other languages. The syntax gets me. In addition, each language has its set of libraries to do more complex things.

My fingers get confused. In addition, when programming in JavaScript, you need to know what framework you are using and what style sheets you are working with.

I decided to use Grok as a co-worker for coding.

We will be working in HTML and pure JavaScript or Typescript.

The server will be sending a <select> element with multiple sub-select options. The id will be categories. The entire select structure is for multiple selections. display=”none”

The framework is Bootstrap. We have jquery available but I would like to avoid using it.

We need to provide a multilevel drop-down that will allow the user to make selections within that large select element. We need to display their current selections. The user needs to be able to remove a selection.

Tell me the goals, and what needs to be done before providing code.

What Grok gave me was an excellent starting point. The HTML was clean. The JavaScript was well structured. The code matched my prompt.

And it was broken.

I explicitly stated that I was providing the input data as a hidden, multi-level, unordered list. Grok took that list and cloned it, including all the ids. This breaks things. There was no reason to do the clone. It just happened to be a pattern Grok had seen on the net.

For the next five hours I fought with the code. At first, Grok was able to do revisions exactly as I expected and wanted.

Then it went off the reservation.

I had refactored a large anonymous event listener to an explicitly defined function. Grok had no problems doing that. Then it proceeded to revert to the anonymous event listener again and again.

This is because anonymous event listeners are the norm in JavaScript. Nobody has an issue with attaching duplicate event listeners to a few hundred or thousand elements. Nobody cares that the code gets crowded, with it being difficult to see what is outside the scope of the listener and what isn’t.

Grok also had a horrible time sticking with the current version. I would tell it to correct one line, and it would decide I was talking about something else entirely and revert a revision or more.

Overall, it took me about 8 hours to get the JavaScript, CSS, and HTML to the point where I was happy with the code.

The biggest strength was in how it knew the different patterns. My first pass used dropdown menus. That wasn’t working. I switched to accordion style. Grok originally used Bootstrap-5, when I told it to use Bootstrap-4, it just made the changes.

One of the things that was extremely helpful was getting rapid confirmation that a feature didn’t exist.

When a feature does exist in a library or framework, it is often trivial to locate it. When it doesn’t exist, that is harder. Do you have the correct search terms? Does the function exist under a different name? Does that feature not exist, but there is a quick, well known, method that does the same thing?

Grok is a tool in the tool chest. I will continue to use it. It is getting better every month.

A Plan with Phases of Project Management on the board.

Project Management

In software development, project management comes in several phases. The first phase is presale, the second is scope and function, the third is product development, and the fifth is quality control.

Once we are past the design stage, it is important to track progress and issues. If you don’t, your project is likely to fail, horribly.

I’m dealing with a maintenance project with ongoing enhancements.

The tool I have settled on is Gitea, Git with a cup of tea. It is similar to GitHub.com, GitLab, and others. I don’t want a public hosting site where there is a potential for code leakage; this omitted GitHub and its competitors.

GitLab has a self-hosting option, but it is such a pig that even though I started with it, I dropped it when I couldn’t upgrade it as needed.

Gitea was the next, and it is working much better for me.

While there is a cloud version of Gitea, I don’t feel pushed into it. With GitLab, half the things I wanted to do required a license. Even when self-hosting, there were limits on the number of users, number of projects, and everything.

I’ve not noticed that with Gitea. In fact, it wasn’t until I wrote this last paragraph that I remembered that Gitea had a paid version.

Feature Requirements

  • Git repository. This is my version control system of choice. Having used everything from CDC’s “update,” SCCS, RCS, CVS, SVN and likely a few others, Git is the one that works for me.
  • A document repository. Gitea comes with a git based wiki. It is not as powerful as a full wiki and adding images to pages is painful, but for text, it just works.
  • Branch management, i.e. pull requests. Standard feature.
  • Project management. This is provided with a KanBan style interface. I use it for development.
  • Issue tracking.

Ticket System

I believe it was Admiral Grace that was having issues with a program on an early computer. It just wasn’t working. During the process of figuring out what was wrong, they did a hardware check. They located an insect that was causing electrical issues. They located a bug. That insect was framed, and the term “debugging” was coined.

Unfortunately, proper communication means we can’t call a bug a bug anymore. Nor can we call them errors or mistakes. Instead, everything is clumped together as an “issue”. Bah, Humbug.

Thus we have an “issue” system. This is really a ticket tracking system. I use the term ticket because it allows me to use the term “issue” for issues, bugs, enhancements, requests.

First Requirement

An issue should be well defined. The other day a client emailed us. It was a screenshot of a page of the product list page from the backend of their site. The client has drawn an angry spiral in red like a child coloring. His comment was, “This page is busted.” The account manager got this email, forwarded it to me with the following text “Thank you”.

This is a horrible issue statement. Ok, it’s broken. How is it broken? The screenshot doesn’t show any error messages; it looks like everything is right. So what is “busted” or “broken”.

It is the job of the person taking the error report, in this case the account manager, to create the ticket. To document the issue.

Actual ticket, after I started working on it: “The filter panel that is not functioning. All filters are ignored.” The actual problem was that a piece of JavaScript was failing if a filter selection was not made. This caused the filter button to not do anything.

The fix was about 4 minutes of coding and 40 minutes of explaining it to the account manager.

There should be a single issue per ticket, and the ticket title should be meaningful and properly identify the issue.

A Good Problem Description

Years ago I got a bug report from my boss; it was something to the effect of “such and such page is broken.” I went to the page and looked for the error. After about an hour I spotted the error. It was subtle but real, and it required significant effort to fix.

I pushed the fix reported that I had fixed the page to my boss.

About 30 minutes later, my very upset boss was at my desk telling me on no uncertain terms that the page was still broken and I hadn’t fixed a damn thing.

When I finally got him to calm down and to tell me exactly what was broken on the page, he pointed to the background of a button. “That’s the wrong color!”

It happened to be the color he approved, but it wasn’t the color he wanted in that spot, so the entire page was broken.

Make sure you have a good problem description.

Make Your Comments Meaningful and Useful

The way I explain it to people is that you are writing comments for yourself, six months from now. Yes, RIPLVB is very meaningful to you, right now, but RIPLVB on line 32627 isn’t really useful to you in six months nor to anybody else following behind.

(This was a real comment in a large piece of code, something like 60 thousand lines of code. It was the only comment. When the code broke, programmers spent way to much time trying to figure out the meaning of this incredibly important comment.

It stood for Rest in Peace, Ludwig van Beethoven, who died March 26, 1827, 3-26-27.)

If there are any supporting documents, screenshots, data files, log files, they should be attached to the comment.

If there are supporting documents, the comment should state what the document(s) are.

A comment of “See attached.” is a shit comment. It is your command to every person that follows you to open the attached document to figure out what it is.

“See the attached CSV for an example of the import format the client is looking for” tells you exactly what the document is for.It is meaning full.

Don’t Use Propritary Documents

If there is a common format, use it. Just because your system can magically open that particular file doesn’t mean that anybody else can. Yes, you have the latest version of Vizeo installed; putting a Vizeo document on the ticket shouldn’t be an issue. And it isn’t for you. But if your client doesn’t have Vizeo installed, or your coworker doesn’t, then that Vizeo Document is worthless.

Sure, you can attach the document, but also attach an SVG or other non-proprietary way of viewing the content of your file.

This one just pisses me off no end. The number of times I’ve had to deal with some PC user sending me a megabyte Word Document with a short paragraph in it when they could have sent a text message is uncountable. Or worse, every PC user assuming that every other person in the world has the latest version of Microsoft Excel.

Yet, I I send them a LibreOffice document, I will never hear the end of it.

Email is not a ticket system

Just because the client sends you an issue report in email doesn’t mean that email is a good ticketing system. I can’t count the number of times I’ve had to spend 10 or more minutes in a phone call tracking down the particular email my account manager wants to talk about. Often because he says things like, “Did you read the email client sent?”

Which one? When? What was the subject?

Worse is when the subject of the email chain changes, but they continue to use the same chain. Now there is a new issue in the middle of an email about a different subject.

In the same way, taking an email and attaching it to a ticket isn’t useful. This goes back to “Does everybody who has access to this ticket have the right program to read that attachment?” as well as violating the requirement of not needing to open an attachment to know what is in the attachment.

I Don’t need a meeting to read you the content of comments on the ticket

All good ticketing systems, including Gitea’s, send email when tickets are updated. Before you demand a meeting to discuss a ticket, check your email for updates on that ticket. Read the ticket. If the answers to your questions are in the ticket, there is no need for a call.

If you have questions that haven’t been answered, add them to the ticket.

No, you don’t need to call me to decide if you are going to add another issue. Add the issue. We’ll put it where it belongs or close it if it is a duplicate.

Use The Tool, Don’t Sabatauge It

Gitea ticket tracking system is a tool. You can subvert it and make it do bad things. You can make it useless. You can avoid using it forcing everyone else to use email.

Don’t! It is a powerful tool that should be used correctly.

vintage rocket takes flight with uncertain trajectory, concrete background. false start concept. 3d render.

To Mars or Crash!

A few years ago, NASA crashed a Mars probe into the surface of the red planet when they got their units mixed up. One group was using metric, and the other was using Freedom Units.

I would have laughed if it hadn’t been such an expensive mistake, both in terms of money and lost opportunity.

I’m a firm believer in Freedom Units. It is what I use regularly. My last big learning curve was going from 1/2 inch, 1/4 inch, 1/8 inch to 0.500, 0.250, 0.125, and 0.062, as in thousandths of an inch.

This small-scale metric stuff is for the birds.

Whenever I start to get a bit confused, I go 25.4 mm == 1 in. That’s close enough to 1/32 of an inch that I can use it for a working number.

The other number I use is 6 mm, which is around 1/4 inch. These are just to get some sort of feel for the numbers.

I just printed my second book for crimpers and terminals. It is 5 x 3 units and 6U tall. I found a Gridfinity bin to hold the crimpers I purchased. All’s good.

Except the bin doesn’t fit the pair I purchased. Slightly different.

So I went back to learning how to do this.

To help with just this task, I purchased a cutting mat with grid lines and other fancies on it. Here is the first photo I took.

It is in its blow-molded holder. This should give me the ability to trace the factory’s cutout/shadow box.

Once this is imported into FreeCAD, you rotate it until the grid is aligned properly, then you “calibrate” the image.

Calibrating means drawing a line between two points with known distance. In this case I have a bunch of 1cm squares. To average out my error, I clicked on one intersection, then counted over 70 mm by 10 mm and clicked. The image scaled. It is now ready to be traced.

I used a B-spline curve, which worked well. I’m getting the hang of it again, it having been 20 years since I used b-splines of this style.

When done, I simply cut the curve from a rectangle, padded the result to 3 mm, and printed it. This allows me to test fit the tool to the shadow without wasting lots of plastic and time.

It didn’t fit. It was too small.

I need to do it over again. This time I’m omitting the blow mold and working directly from the tool. I’ll draw a close-fitting curve, then pad it in X and Y by a mm or so.

This will work better; can you see why?

Yep, one side of the cutting map is in Freedom Units and the other in metric. My first photo was on the Freedom Unit side because it is less crowded. When I was counting out 70 mm, I was really counting out 3.5 in. If I had input 3.5 in into the calibration, it would have been fine.

Leason learned.

3d rendering the group various color of Polylactic Acid (PLA) filaments materials for 3d printing.

Organizational Things

I finished the first set of base plates for putting Gridfinity into the top desk drawer of the printer support platform.

It looks nice. It is a 15 inch by 14 7/8 inch drawer. The base plate printed in four sections. It could have been just put in the drawer and worked, but I put snaps on the edges.

Since then, I’ve been watching as things move from the desk next to the printer and into its own bin, often custom, in one of three Gridfinity drawers. The two custom printed drawers in the riser and the one desk drawer.

It is slower than I would like, but it keeps getting better. I think this is going to work.

The next base plate will be for the “Shelf of No Return”. This is the shelf where things from the dining table get cleared, never to be seen again.

The hope is that when we turn that into an organized space, there will be less inclination to just pile stuff there.

Prepping – Scenario: Vehicle Down Embankment

So one of the prepper groups I belong to on Facebook has been posting these. I thought I’d pass some along. I believe these are meant for law enforcement, hence the “pursuit” comment.

As a prepper, I would not be worried about some of the things LEOs would be concerned about. I look at this scenario and the only “weight” that I would bother to attempt pulling up a steep embankment is a living person. The vehicle and the dead can stay at the bottom of the ravine, if we’re in a SHTF event.

Pulleys make lifting things easier. There’s a system called a 4-in-1 that would work in this case, though we’d be doing a 3-in-1 as we only have 4 pulleys. Rather than spend 20 minutes typing it up, I’m going to share a video that shows you the details clearly.

detailed engineering drawing of a mechanical component, housing or mounting plate, various views and dimensions CAD design

Design Decisions

I have been doing computer modeling of some sort since around 1989. I’m not great at it; my task was generally making software that real modelers would use.

The software I worked on was BRL-CAD. BRL-CAD is a true solid modeling system. It is based on Combinatorial Solid Geometry (CSG). That is to say, you create solids and then use Boolean logic to get the shape you want.

What this means, in practical terms, is that you represent a sphere with a vector and a scalar. The first is the point in 3 space where the center of the sphere is located, and the other is the radius of the sphere.

The way we viewed the geometry was wireframe for modeling and then ray tracing for 3D rendering.

And we did astonishing things with this software. The visuals were often not the point of the model; often it was analysis of the model. For example, we had code that could be used to analyze the penetration mechanics of one solid impacting another solid, a target.

When we needed to move to the modern graphics processors, we needed a method of converting our solid models into triangles. We used non-manifold geometry instead of the industry standard of winged edges, thanks to some cutting edge research out of Australia.

That’s just backstory; sorry for the interruption.

Here is a case I’m designing for a Banana Pi BPI-M2 board that is running my NTP service.

This doesn’t have any of the cutouts required for the ports, but it is a good generic case. I’ll be adding design parameters for putting in posts for the board and other needed options for the case.

The basic design is parameterized. Which is to say, I have a spreadsheet that has values for width, length, height, shell thickness, and clearances.

The wedges for the snap fit are also derived from those values. It looks good.

Until I started to do the math.

I know what an inch is. I even have a good idea of what a 1/16th of an inch is. And because I’ve been playing with it, I know that 0.062 inches is close to 1/16th of an inch.

I have a feel for all of that.

What is a millimeter, though?

Well, that turns out to be 0.039 inches. Closer to 1/32nd than to 1/16. That’s small.

0.5 mm is 0.0196 inches. This is even smaller. While I strive to hit my tolerances within a few thousandths, and when I’m dialing something in, I’ll always get to a thousandth or less, those are small numbers.

And here is where I started to realize that I was making design mistakes. I had set my shell thickness to 1.5 mm with a clearance of 0.5 mm.

I got the 0.5 mm clearance from several sources talking about 3D printing snap-together cases. When I set the lip to be half the shell thickness, I got a 0.75 mm wide lip. That looked great. Then I remembered the clearance requirements and added allowance for that.

This meant that my lip was only 0.25 mm thick, or 0.0098 inches. That’s not a feature; that’s a burr.

In addition, the nozzle I’ll be using is 0.4 mm in diameter. The smallest feature I can print will be 0.4 mm or larger. I would have to use a different nozzle to get that level of detail.

The image you see above had the shell thickness set to 3 mm. I still want to do the lip, I’ll do a few test prints to dial it in.

There is this place where the mathematically perfect collides with physics, which collides with engineering, which is firmly entrenched in the real world.

The real world always wins.

CAD frustrations

One of the most powerful things about FreeCAD is that it is a fully scriptable CAD modeling system. This means you can write python scripts to do things.

They call them macros.

Which means they have plugins that do remarkable things. Just wonderful things.

The one I recently started using is the Gridfinity addon. Click the add button, and it will give you a bin. You can click some parameters to get exactly the shape you want.

If all you want is a bin, this works perfectly.

I want to make custom shadow cutouts in bins for some of my tools.

What I can’t do is select the face of the Bin and make direct modifications to it.

More learning to do.

For now, it is getting easier to get things done the way I want to.