bc-memorial

A chromium-centric file-only (server-not-needed) blog tracking the project on a long-overdue memorial for a beloved cat named BC (BiColor Cat).

There's a meta-blog here where I track my progress on modifying/improving this blog's content.

2. Generate G-Code (part 1)

A headline/comment/summary of what this blog entry is about.

Mon Oct 12 03:49:18 PM PDT 2026 by Daniel

I have a feeling this step (2. Generate G-Code) is going to have a lot of parts.

I have included "2. Generate G-code" from claude.ai's steps.

I added lettering a-e to help identify which sub-step I'm working on. I also added one sub-step for jscut.

2. Generate G-code. This is the CAM step, and it’s where you specify tool diameter, cut depth, feeds/speeds, stepdown per pass, and whether the toolpath is inside/outside/on the line (offset direction matters — for cutting a shape out, you want an outside offset by the tool radius, plus tabs so the piece doesn’t move mid-cut). Good Linux-native options:
  • a. FreeCAD Path workbench — heaviest but most capable. Import the SVG, extrude to a body if needed, then create a Job, Profile operation, and post-process with the grbl post. Best if you’ll be doing this often.
  • b. Kiri:Moto (grid.space/kiri) — runs in the browser, no install, has a CNC mode with good SVG import. Fast to learn.
  • c. Inkscape gcodetools extension (Extensions → Gcodetools) — stays in Inkscape but the UX is dated and it’s easy to get wrong offsets. Fine for engraving; less pleasant for profile cuts.
  • d. Estlcam runs well under Wine if you want something closer to what the Genmitsu community typically uses.
  • e. jscut was suggested by claude.ai in one of our conversations.
For a first cut in wood with a common 1/8" (3.175 mm) 2-flute endmill, reasonable starting numbers: feed 800–1000 mm/min, plunge 200–300 mm/min, stepdown 1–1.5 mm per pass, spindle at whatever fixed speed your 4030 spindle runs. Add 3–4 tabs (0.5–1 mm thick) around the perimeter.

I guess one of the first things I need to do is specify the tool diameter. That means picking a tool. Here's what I have picked:

img/20261012_160536.jpg

3.175mm is 0.125in, as in ⅛" (one eighth of an inch). I take this to mean that the tool diameter is one eighth of an inch.

This is one of a set of such bits which live in the "lower-right-hand" workbench drawer in the garage. The "left-hand" workbench has the 4030 Prover on it.

Here's where the other 4 bits in the set look like:

img/20261012_160608.jpg

Those live in the same drawer as the singleton, which is in a little plastic baggie:

img/20261012_160315.jpg

In the image above, you can see the "lower-right-hand" workbench drawer is open, and the bit in its baggie is sitting on the workbench top.

A closer look at one of the bits shows that this is a two-flute bit:

img/20261012_163411.jpg

1. Prep the SVG in InkScape (part b)

Working on memorial.20260903T145342-0700.heart-only.svg to apply suggestions from claude.ai's first step.

Mon Oct 12 07:34:39 AM PDT 2026 by Daniel

Here's the original text (different formatting than Claude and the parts I've already done are grayed out):

1. Prep the SVG in Inkscape. Set the document units to mm and make the drawing size match real-world dimensions (File → Document Properties). Convert any strokes or text to paths (Path → Object to Path, Path → Stroke to Path). Combine subpaths only if they’re meant to be a single contour. It’s worth simplifying (Path → Simplify) to reduce node count on curves, but not so aggressively that the shape drifts. Save as plain SVG.

I open memorial.20260903T145342-0700.heart-only.svg with Kate again to look at the <path> tag's content so I can understand what it's doing, and whether I've got subpaths to worry about because I'm working on "Combine subpaths only if they’re meant to be a single contour."

From this I learned how to define a "subpath" as a part of the <part> element's "d" attribute's content.

In particular (from this), "Every M/m (moveto) lifts the pen and starts a new subpath, so one d string can hold several separate pieces."

I don't understand "moveto", so I got some advice.

That advice assumed I knew what the SVG mental model for the <path>'s d attribute's content was. I guess partly right, as confirmed by this.

The mental model advice made me curious about the origin of the "d" attribute's name, and I got some clarity on that from claude.ai. The "d" is short for "data". Ha.

Next, I had claude.ai explain the d attribute's content in detail.

This confirmed that there were no subpaths to combine (there is only one). It also confirmed that there were no worth-while simplifications possible, let alone necessary.

It also pointed to a potential issue with gcode generation from the .svg having to do with "fill:#ffffff;fill-opacity:0;". The end recommendation is to leave the fill as white, because it's more likely CAD/CAM will interpret that as a pocket than a "profile" cut.

That same advice clarified the definition (and types of) "profile" cuts.

Annoyingly, the advice refused to share its interactive demo graphic, so I've included a non-interactive snapshot:

img/Screenshot_20261012_115852.png

As the final task in the step, I saved a copy of the .svg as "Plain SVG" here.

1. Prep the SVG in InkScape (part a)

This is the first step from the Claude.ai conversation.

Sun Oct 11 01:01:12 PM PDT 2026 by Daniel

Here's the original text (different formatting than Claude):

1. Prep the SVG in Inkscape. Set the document units to mm and make the drawing size match real-world dimensions (File → Document Properties). Convert any strokes or text to paths (Path → Object to Path, Path → Stroke to Path). Combine subpaths only if they’re meant to be a single contour. It’s worth simplifying (Path → Simplify) to reduce node count on curves, but not so aggressively that the shape drifts. Save as plain SVG.

Since I only want the heart from the .svg, and because I don't want to fuss with the other design elements, I copied memorial.20260903T145342-0700.svg to memorial.20260903T145342-0700.heart-only.svg and removed everything from memorial.20260903T145342-0700.heart-only.svg except the heart outline.

I used Inkscape to open memorial.20260903T145342-0700.heart-only.svg and I removed BC's ellipse-picture, the image of the plaque, the image of the fur-phial and an alignment rectangle.

Editing the file with Kate (editor), I find that there are some elements still present in the .svg OTHER THAN the single <path> element. There were a couple <rect>s and a couple <clipPath> tags.

There was also an <ellipse> tag! I manually deleted one <rect> and the <ellipse> each of which had its own enclosing <clipPath>. Both of these tags were enclosed in a <defs> tag, which I also deleted.

Inspecting from InkScape with Layers and Objects, another rect object appeared. Looking in the .svg with the editor, I could see there was indeed another <rect> tag, which I also deleted.

This left just a <path> tag enclosed by a <g> tag. I left those alone, since the <g> tag also had a transform matrix attribute which I imagine is important. I learned this from claude.ai about the <g> tag.

There was also a <sodipodi:namedview> tag, which I learned from claude.ai is a) harmless, b) contains a bunch of InkScape-specific view data not relevant to the actual geometry, and c) SodiPodi was the software from which InkScape was originally forked - which explains the name.

Lastly, I can confidently say that there were no strokes or text to convert to paths. According to claude.ai, a subpath can exist with a <path> object, so I'll work on the "Combine subpaths only if ..." part of Step 1 next time.

Rendered the current "full" design in Inkscape

Sun Oct 11 11:05:59 AM PDT 2026 by Daniel

Robin reminded me which plaque he wanted, so I created the following .svg with all the desired features and dimensions:

img/memorial.20260903T145342-0700.svg

I was able to print the oval-BC image below from Windows on Sherri's printer on photographic paper with good results:

img/image1-5.png

Try getting advice from claude.ai on how to make the svg heart into a carved pocket

I'm honestly very skeptical about Claude's (or any other AI's) advice, but I am going to start testing Claude's accuracy.

Sun Sep 13 03:35:56 PM PDT 2026 by Daniel

I asked claude.ai:

https://claude.ai/share/809fe671-3b9d-45c6-a49b-4cfd38fa995c

From claude.ai: FreeCAD Path workbench — heaviest but most capable. Import the SVG, extrude to a body if needed, then create a Job, Profile operation, and post-process with the grbl post. Best if you'll be doing this often.

Figured out a bunch of things AND did a first attempt at an etching of BC-in-an-ellipse

Learned a bunch by trial and error and a bit of judicious claude.ai

Fri Sep 4 07:18:59 PM PDT 2026 by Daniel

Firstly, I found that I could export from Inkscape as a .png file.

img/Screenshot_20260904_192257.png

I exported a selection, namely the picture of BC trimmed to an ellipse:

img/image1-5.png

Then I learned I could import this into LaserGRBL.

claude.ai says I should be able to etch this.

Another important thing I learned is how to Home the LC-50's gantry.

Turns out that when you power up the LC-50, it'll often refuse to Home (or Test) until you send it a $X (unlock) command.

One reason it may refuse is that some error condition, or an E-Stop, occurred. It will retain the error state and refuse to Home (or Test) until sent a $X (unlock) command.

So I used Universal GCode Sender (ugsplatform) to connect to the LC-50 and then sent it the $X (unlock) command.

Then if I pressed Test/Home, a blue light would illuminate on the laser PCB and the laser itself would turn on (low power).

Pressing Test/Home again would cause the laser to turn off, but the blue light remained on.

Pressing and holding Home for about 5 seconds would cause the gantry to return to the Home position: the lower left corner of the engraving area.

Then I could terminate ugsplatform and connect using LaserGRBL.

I used bitblt with the default settings with power set to 10%.

This was the result:

img/20260904_185522.jpg

Admittedly not great, but it does appear to the correct size at least:

img/.jpg

I tried the Home/Test button

That grindy sound when I used LaserGRBL's "Go to top right" button was disconcerting.

Fri Sep 4 11:32:28 AM PDT 2026 by Daniel

Pressing it seems to have no effect:

I pressed it quickly. No effect.

I pressed and held it for 10 seconds. No effect.

Also, the power on/off button takes effect when the button is RELEASED, not when it is pressed.

Which laser software should I use?

I ask Claude for some help.

Thu Sep 3 01:07:19 PM PDT 2026 by Daniel

I feel kind of duped, having bought the Genmitsu LC50 Plus, and then finding out later that there is virtually NO support, and the product has already been discontinued:

sainsmart.com

After some searching, I was able to find some LC50 Plus resources.

The sainsmart.com site recommended LightBurn Core, which is commercial software which runs on Kubuntu.

Claude's recommendation, which will not render in an iframe.

Claude recommends open source software called meerk405.

Turns out I have an old Dell Windows computer attached to the laser etcher. It actually has LaserGRBL already installed. A long time ago, I used this Dell to connect to the Genmitsu Prover 4030 and ran a version of Carveco on it. Now I can use it to run LaserGRBL:

img/20260903_161930.jpg

One of the most useful things on the LC50 Plus resources page is the Speed-Power Reference Chart.

Turns out we'll need that.

The manual is also kind of useful. I used it when I assembled the machine in the first place.

Contrary to what seems completely obvious, one does not put the distance gauge tool directly under the laser, but on the corner of the laser:

img/20260903_164827.jpg

You can see from the manual that this is correct, but intuition says you should put the tool directly under the laser:

img/Screenshot_20260903_172655.png

Also contrary to intuition, and other CNC device conventions, LaserGRBL seems to always start from the upper-right of the workpiece (a bit of partly-used scrap plywood in this case).

img/20260903_165550.jpg

It seems to be good practise to use the "Go to top right" button before attempting any engraving.

img/Screenshot_20260904_102120.png

Note that this caused the laser etcher to make a kind of "grindy" sound like it had reached a limit and was stuck.

I'm guessing there is a better way.

There is a Test/Home button:

img/20260904_102537.jpg

I suppose I should experiment with that.

How will I place the wood workpiece(s) on the Genmitsu LC50 Plus

First time I've used the new large laser. Not sure how to locate workpiece.

Thu Sep 3 03:24:10 PM PDT 2026 by Daniel

Obviously, the Jinsoku Z3 Galvo Laser's work area is too small:

img/20260903_151620.jpg

The Genmitsu LC50 Plus' work area is certainly large enough:

img/20260903_151637.jpg

But I've no idea how to place the workpiece. In other words, I don't know where 0, 0 on the laser is in space. It's probably lower left, but I don't want to just assume that.

How will I place the wood workpiece(s) on the Genmitsu Prover 4030XL

Pretty straight-forward.

Thu Sep 3 03:21:21 PM PDT 2026 by Daniel

I'll use double-sided tape to hold it down thus:

img/20260903_151654.jpg

Robin reminds me which plaque he prefers

Robin sent me a message to remind me that he wants the plaque with the little cat icons.

Thu Sep 3 02:53:42 PM PDT 2026 by Daniel

Update the memorial .svg accordingly:

img/memorial.20260903T145342-0700.svg

Selecting, re-sizing and re-orienting the photo of BC

The actual photos we once printed won't fit the ellipse, so we'll need to do something different.

Thu Sep 3 01:07:19 PM PDT 2026

I have been unable to print the .svg design on paper to actually try positioning on the wood, but I could tell by eye-balling it that the actual photo was too small for the ellipse.

img/20260903_132327.jpg

I wish I could print the .svg design on a piece of paper, but for some reason printing on Kubuntu is not working. Getting printing to work is likely to turn into a huge job. The bit of debugging I have done suggests that the ip address getting assigned to the HP printers is unstable. Print jobs just get stuck in the print queue and never print. I'm afraid that getting printing to work might mean changing the entire lab network's configuration.

I could get new photos printed by a printing service, which would mean selecting the right photo and making sure it was sized to fit the ellipse. Doing that would be some of the same tasks needed to laser etch the photo directly into the plaque or some other material.

In the meantime, I have measured the physical photo. It's about 100x151mm.

img/20260903_133302.jpgimg/20260903_133316.jpg

Importing the photo into the svg and sizing it confirms what eye-balling suggests:

memorial.20260903T130719-0700.svg

However, importing, resizing and cropping:

memorial.20260903T130719-0700.B.svg

Here's how to do the cropping according to Claude:

Screenshot_20260903_140432.png

And here's me actually doing that:

Add in one of plaques:

img/memorial.20260903T130719-0700.C.svg

I measure the plaques

Thu Sep 3 10:52:58 AM PDT 2026 by Daniel

Here are the three plaques. Not sure which one we'll end up using.

img/20260902_174711.jpg

Notice that they're all the same width. They are all about 101.2mm :

img/20260902_174152.jpg

Two of them are the same height:

img/20260902_174715.jpg

They are both about 50mm high:

img/20260902_174235.jpg

The other one is 38mm high:

img/20260902_174306.jpg

I think I'll make the memorial's .svg reflect the 50mm height.

img/20260902_174306.jpg

In the memorial .svg, I resized the plaque object, and aligned it horizontally to center with the heart object:

img/memorial.20260903T105258-0700.svg

Note: I renamed img/drawing.c.svg to img/memorial.20260903T105258-0700.svg.

I remeasure the wood

Thu Sep 3 10:18:14 AM PDT 2026 by Daniel

I remeasured the pieces of wood I'll be using. There are three identical pieces.

Here is the height. It's about 184.3mm. I'll call it 184 when I put it into the .svg file. Notice that the right side of the wood piece is not visible. That's because the camera is nearly perfectly centered above the right edge and so the measurement is more accurate than had the camera been too far left or right. I started with the camera positioned too far right such that I could clearly see the right side of the piece of wood, then moved the camera left until the edge disappeared. That way I knew the camera was nearly directly above the edge.

img/20260902_165021.jpg

Here is the width. It's about 256mm.

img/20260902_165445.jpg

Here's the document with updated width and height:

img/drawing.c.20260903T101814-0700.svg

Incidentally, here's how you view the width and height from Inkscape. You choose the File | Document Properties menu item:

img/Inkscape File Document Properties Menu.png

Then you will see the Document Properties dialog which will contain the "Display | Front Page" Width and Height:

img/Inkscape File Document Properties Dialog.png

I redo the design in an svg mock-up

Mon Aug 24 05:37:34 PM PDT 2026 by Daniel

Inkscape hates inches, so I convert to mm.

img/drawing.c.20260824T173734-0700.svg

It's about 250mm x 179mm .   (W x H)

The oval is way too large for the Genmitsu Jinsoku Z3 to handle, so that means either I need to get a larger photo print, or some other kind of printing (or etching).

I inventory the BC Memorial project box

I photograph and measure the individual components in the BC Memorial project box

Mon Aug 24 03:36:40 PM PDT 2026 by Daniel

There are three very nice pieces of wood, all about the same size, which were bought expressly for this purpose:

img/20260824_155633.jpgimg/20260824_155647.jpg

It's about 9 ⅞" x 7 ¼ .   (W x H)

There are three different plaques, each slightly different in size, but this one looks the closest to the original design:

img/20260824_155728.jpgimg/20260824_155738.jpg

It's about 4" x 2" .   (W x H)

This little vial for BC's fur is meant to hang within the heart.

img/20260824_155819 cropped.jpg

It's about 1 ½" long.

There are some photos of BC. Many copies of the same one. None will quite work.

img/20260824_155912.jpg

So that means I'm back to square 1 as far as the existing photos are concerned.

Thankfully, we've got the original art for that picture (img/20190111_101410.jpg):

img/20190111_101410.jpg

Patrick designs a decal/sticker and does some shading work towards getting a Bas Relief experiment going.

Sun Aug 16 12:19:40 PM PDT 2026 by Daniel

I tried my best to use the limited photos we had of BC to try making something you could etch into something using the CNC or laser. I've attached a PNG - I can try vectorizing it later. I MAY be able to remove the background, but my first attempts looked really choppy and stupid. It's tough because the background and her black fur blend together and make it difficult to see where she ends and shadows begin. I don't know if this is a workable version - but I was wondering if it could work if we do the BLACK deeper than the grey - the grey helps give her more shape to be recognizable as BC and not just catblob.

BC PROJECT 1.png

Can we do two different depths with the different colors?

Patrick also put together this wonderful heart-and-cat decal/sticker design, with a matching vector file ready for cutting:

BC Memorial in Heart.png

Here's the .svg

BC Memorial in Heart.svg

I start to catalog the digital artifacts we have so far, and what they are for.

Sun Aug 16 11:34:25 AM PDT 2026 by Daniel

Going through the img/ folder and taking a guess at what each file is and why it's here.

Artifact Description
20190111_101410.jpg Candid phone photo of BC (timestamped 2019-01-11) dozing on someone's lap next to a computer desk — one of many casual reference photos, not staged for anything.
BC0-thumbnail.jpeg BC napping face-first against a couch cushion. Another "sweet sleepy face" candidate shot.
BC1-thumbnail.jpeg BC sprawled on her back on a blanket, completely conked out. A favorite goofy sleeping pose.
BC2-thumbnail.jpeg BC curled up asleep on a paisley bedspread next to a flea comb — looks like she'd just been groomed.
BC3-thumbnail.jpeg BC asleep on someone's lap at a computer desk (keyboard/mouse visible) — a "keeping me company while I work" shot.
BC4-thumbnail.jpeg BC curled up on the bed at night, eyes catching the camera flash.
BC5-thumbnail.jpeg Close, low-light portrait of BC looking straight into the camera — the kind of shot that'd crop well into a small oval, like the cameo in drawing.svg below.
BC6-thumbnail.jpeg BC sitting alert on the hallway rug, ears up, watching whoever's holding the camera.
Heart_corazón.svg A simple red heart clip-art icon (the filename suggests it was pulled from a "corazón"/heart icon set) — a reusable design element for the memorial artwork.
drawing.b.svg An early, unfinished layout draft for the plaque artwork: a grey placeholder oval (for a photo), the heart icon, and a grey placeholder rectangle (for the nameplate text) — before any real photo or text was dropped in.
drawing.svg A more finished version of the mock-up above: a photo of BC cropped into the oval, an outlined heart, and a nameplate reading "B.C. / 2007 - 2023" — looks like the working design file for a photo memorial piece.
phial.jpg A small glass vial with metal end-caps, photographed outdoors on a wire grate. Guessing this is a keepsake capsule (fur, ashes, or a note) meant to be kept with the memorial.
plaque.jpg The actual engraved metal plaque: "In loving memory of BC, 2007 - 2023" with small cat icons. This looks like the finished/ordered memorial plaque itself — simpler than the photo-based drawing.svg concept, so maybe that design got dropped in favor of this one.
BC PROJECT 1.png Patrick's first pass at turning a candid photo of BC into an engraving-ready image: an oil-paint/posterize filter flattens it into black/grey/white regions for CNC or laser etching. Her black fur and the dark background still blend together here, which is the "catblob" problem he flagged.
BC Memorial in Heart.png A cleaner decal/sticker design: BC drawn as a black-and-white line illustration, curled up asleep inside a heart outline — a different, more graphic-design-y direction than the photo-based etching attempt above.
BC Memorial In Heart Decal.svg The vector (SVG) version of the heart-and-cat decal above — the actual cut/etch-ready file, not just a preview image.