Dallas Makerspace Show and Tell - December 2016

Created a present for my Dad on the PlasmaCAM. Material was 1/8" stainless 2B plate.


Cleaned it up with the sandblaster and the final finish looks great.

13 Likes

Saw this when he completed it. It did look awesome. Great work!

Padouk wood box.

14 Likes

Crazy lace agate wrapped in rose-gold-filled with sterling silver accents

9 Likes

And this one, forget what the stones were, wrapped in gold-filled and sterling silver, but was interesting challenge with the stone configuration

12 Likes

A gift for the MultiCam (users)…

-- VECTRIC LUA SCRIPT

require "strict"


--[[
================================================================================
  Copyright (c) 2016 Rowdy Dog Software

  Permission is hereby granted, free of charge, to any person obtaining a copy
  of this software and associated documentation files (the "Software"), to
  deal in the Software without restriction, including without limitation the
  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
  sell copies of the Software, and to permit persons to whom the Software is
  furnished to do so, subject to the following conditions:

  The above copyright notice and this permission notice shall be included in
  all copies or substantial portions of the Software.

  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
  FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
  IN THE SOFTWARE.
================================================================================

  VCarve Gadget that...
  - Ensures a job is loaded
  - Prepares an output directory for the MultiCam g-code files
  - Moves any files already in the output directory to a backup directory
  - Ensures all toolpaths are up-to-date
  - Outputs one g-code file for each toolpath where the filename is
        Sequence - Abbreviation for Tool Type - Abbreviation for Tool Size

  Future enhancements...
  - Squash toolpaths that use the same tool
  - Display a summary / success report
  - Output a summary / success report
  - Perform a two-phase commit on the output directory

================================================================================
]]

function main(script_path)

    -- Ensure a job is loaded or bail out
    local job
    job = VectricJob()
    if (job == nil) or (not job.Exists) then
        local dlg
        dlg = FileDialog()
        if not dlg:FileOpen( "crv", "*.crv", "VCarve Files (*.crv)||" ) then
            return false
        end
        OpenExistingJob(dlg.PathName)
    end

    -- Ensure the job has a name
    if job.Name == '' then
        MessageBox("For this gadget to work correctly the job must have a name.  Save the current job then try again.")
        return false
    end

    -- Determine where output should go
    local username
    local userpath
    local usermkdir
    local outputpath
    local backuppath
    username = os.getenv("USERNAME")
    userpath = '\\\\files\\committees\\woodworking\\CNC Router\\_Programs\\' .. username .. '\\'
    outputpath = userpath .. job.Name .. '\\'
    backuppath = outputpath .. 'Backup' .. '\\'

    -- Create the base output directory, the project output directory, and the backup directory
    usermkdir = 'mkdir \"'..userpath..'\"'
    os.execute( usermkdir )
    usermkdir = 'mkdir \"'..outputpath..'\"'
    os.execute( usermkdir )
    usermkdir = 'mkdir \"'..backuppath..'\"'
    os.execute( usermkdir )

    -- Remove existing files from outputpath
    local usercopy
    local reader = DirectoryReader()
    reader:BuildDirectoryList( outputpath, false )
    if reader:NumberOfDirs() ~= 1 then
        MessageBox("Unexpected failure trying to clear the output directory")
        return false
    end
    reader:GetFiles( "*.*", true, false )
    for i1 = 1, reader:NumberOfFiles() do
        local entry = reader:FileAtIndex( i1 )
        if string.find( entry.Name, username ) ~= nil then
            usercopy = 'copy \"'..entry.Name..'\" \"'..backuppath..'.\"'
            os.execute( usercopy )
            os.remove( entry.Name )
        end
    end

    -- Ensure all toolpaths are up-to-date
    local tpm = ToolpathManager()
    local rv1 = tpm:RecalculateAllToolpaths()
    if rv1 == nil then
        MessageBox("Recalculate all toolpaths failed")
        return false;
    end

    -- Prepare for post-processing
    local tps = ToolpathSaver();
    local pp = tps:GetPostWithName( "MultiCam G Code Arc (inch) (*.cnc)" )
    if pp == nil then
        MessageBox("Failed to load post processor")
        return false
    end

    -- Generate one g-code file for each toolpath
    local toolpath
    local s1
    local sequence = 1
    local position = tpm:GetHeadPosition()
    while position ~= nil do
        toolpath, position = tpm:GetNext( position )
        s1 = outputpath ..
            tostring(sequence) ..
            "-" ..
            FilenameFromTool(toolpath.Tool) ..
            ".cnc"
        tps:ClearToolpathList()
        tps:AddToolpath( toolpath )
        tps:SaveToolpaths( pp, s1, false )
        sequence = sequence + 1
    end

    return true
end


--[[
  Abbreviate a toolpath.Tool.ToolDia for use in a short filename.
]]
function AbbreviateToolDiameter(tool)
    local sixteenths = math.floor((tool.ToolDia*16)+0.5)
    if (sixteenths == 2) then
        return "1_8"
    elseif (sixteenths == 4) then
        return "1_4"
    elseif (sixteenths == 6) then
        return "3_8"
    elseif (sixteenths == 8) then
        return "1_2"
    else
        return tostring(sixteenths)
    end
end


--[[
  Abbreviate details about a Tool for use as a short filename.
]]
function FilenameFromTool(tool)
    local rv
    local ts
    local tnu

    rv = tool.ToolTypeText
    tnu = string.upper(tool.Name)

    if tool.ToolType == Tool.BALL_NOSE then
        rv = "BN"
        rv = rv .. '-' .. AbbreviateToolDiameter(tool)
    elseif tool.ToolType == Tool.END_MILL then
        rv = "EM"
        ts = AbbreviateToolDiameter(tool)
        if string.find( tnu, "DOWNCUT" ) ~= nil then
            rv = "DC"
        elseif string.find( tnu, "UPCUT" ) ~= nil then
            rv = "UC"
        elseif string.find( tnu, "COMPRESSION" ) ~= nil then
            rv = "C"
        elseif string.find( tnu, "SUPER O" ) ~= nil then
            rv = "SO"
        elseif string.find( tnu, "DIAMOND" ) ~= nil then
            rv = "DD"
            if string.find( tnu, "120" ) ~= nil then
                ts = "120"
            elseif string.find( tnu, "90" ) ~= nil then
                ts = "90"
            else
              -- fix?  Do what?
            end
        end
        rv = rv .. '-' .. ts
    elseif tool.ToolType == Tool.VBIT then
        rv = "VB"
        rv = rv .. '-' .. tostring(tool.VBit_Angle)
    elseif tool.ToolType == Tool.DIAMOND_DRAG then
        rv = "DD"
        if string.find( tnu, "120" ) ~= nil then
            ts = "120"
        elseif string.find( tnu, "90" ) ~= nil then
            ts = "90"
        else
            ts = tostring(tool.VBit_Angle)
        end
        rv = rv .. '-' .. ts
    end
    return rv
end
3 Likes

Applique style embroidered patch for an Overwatch Genji costume in progress…

5 Likes

Cool! Isn’t the applique’ option on SewArt convenient?

Was really glad I got to take Matt’s class A Wood Shop project class to build a box with sliding lid to learn basic joints and tool usage and made a box.

10 Likes

My first pen on the metal lathe. I decided to use low carbon steel for a truly rustic look. It should age over time.

This was a PKFP4010 Gun Metal Vertex Click Pen kit that i picked up at Rockler in Frisco I used an 11/32 drill for the body but it was just a hair too large. I managed to wedge some metal shavings between the body and the end caps for a perfectly tight press fit.

12 Likes

My friend is having a baby, so I made him this small rattle. It’s filled with rice, and the ends are both > 1.75" to prevent a choke hazard. The finish is just shellac which is safe if the baby chews on it. I also made it out of cherry wood, which supposedly less people are allergic to. I’m happy with how it turned out! One of my first lathe projects. It’s not perfect, but I learned a lot!

Here is a short video to show how it sounds when you shake it:

12 Likes

Overwatch Genji patch all finished:

8 Likes

Update…

  • Successive toolpaths that use the same tool are merged into one cnc file
  • Text file is generated that includes instructions and a summary
  • Success message is displayed with a brief summary
5 Likes

I made a tray to hold the 1000’s (ok, about 40) Lego Dimension characters that my son has collected over the last year or so.

10 Likes

Cool with me copying your source file?

1 Like

The ignomious CHECK ENGINE light on my car (Mazda 3) engaged on a road trip last weekend. I suspected that this was due to a lost gas cap (lanyard on the original broke off some time ago) which I confirmed.

Read a few codes at an auto zone on the way back and they said 3 codes relating to the evaporative emissions system - recommended a new fuel pump. Yeah, right. Bought a new gas cap and returned home without incident.

Said light did not extinguish after 300 miles of highway driving, so I used the DMS code scanner to delete codes. Conveniently, this extinguished the bleeping light. I’ll run it again in a few days to see if there are any lingering alarms, but I suspect it threw those for lack of a means to tell.me the gas cap was missing.

2 Likes

A bluetooth code scanner and phone app are well worth buying your own.
Especially when your car is throwing codes in the month you need to get it inspected! If you’re needing to get your car inspected, what you do is reset your CEL and use the app to monitor your sensors. As soon as they’re all showing “ready” (look on your state inspection report to see which ones are necessary) you high-tail it to the nearest inspection facility. Then you can fix whatever is throwing the code as your time and budget permits.

Or at least that’s what I’ve heard.

I just finished a doghouse I’ve been working on for my girlfriends dog Lola! It’s made of HDPE plastic. I’ve been super excited about this project. It’s more to be used when the weather is nicer. It was supposed to be done in the fall, but the HDPE was on back order for 2 months. It probably won’t get used until the spring. The idea is it gives her a nicer area to live while my girlfriend is away at work. Otherwise she has to stay in a crate. :frowning: It’s completely collapsible and snaps together with snap joints I designed for the Multicam.

The snap joint:

“Smell holes” at my girlfriend’s request :slight_smile:

Slots along the bottom to stake it into the ground to prevent wind from catching it.

Straps for stakes made from nylon webbing.

Super fun project! I’m happy with the results, and am glad it’s finished :slight_smile: Hope Lola likes it!

8 Likes

Looks great - and what a thoughtful thing to make!

Beware the autozone generic gas cap. Had a check engine light that wouldn’t go away for a while. Turns out the generic cap wouldn’t seal for some reason. $20 on Amazon bought a Toyota branded replacement for my Camry and fixed the error

1 Like