Coder Social home page Coder Social logo

mikemag / monkeycam Goto Github PK

View Code? Open in Web Editor NEW
38.0 11.0 15.0 10 MB

CAD/CAM software for ski and snowboard design and G-code program generation.

License: Apache License 2.0

C++ 30.13% nesC 32.88% CMake 0.10% HTML 34.35% Batchfile 0.02% JavaScript 2.47% CSS 0.05%
snowboard cnc-machine gcode-programs cad cam splitboards skis c-plus-plus react nodejs

monkeycam's Introduction

MonkeyCAM v4.0

MonkeyCAM v4.0 is an open source CAD/CAM program for designing skis and snowboards, and generating G-code programs to cut board parts with a CNC machine.

The CAD portion of MonkeyCAM is quite limited, and is specifically designed to aid the design of skis and snowboards only. The CAM portion is slightly more general, but again is specialized to ski and snowboard manufacture.

The easiest way to use MonkeyCAM is at MonkeyCAM.org. See the tour for an overview of the site.

MonkeyCAM creates nine G-Code programs to cut all parts of a ski or snowboard on your CNC machine. For a real example of the results, see https://monkeycam.org/results/5744863563743232

MonkeyCAM is published on Github at https://github.com/mikemag/MonkeyCAM

More information about ski and snowboard construction can be found at Monkey Wiki and SkiBuilders.com.

Donate

You can help offset the server costs for running MonkeyCAM.org with a small donation.

ko-fi

Documentation

See the MonkeyCAM v4.0 User’s Guide for an overview of how to use and configure MonkeyCAM.

License

MonkeyCAM is licensed under the Apache License, Version 2.0 except as otherwise noted. See LICENSE for details.

The G-code programs generated by MonkeyCAM are license-free.

Current Release

The current version of MonkeyCAM is always live at MonkeyCAM.org, where you can use it without having to download it.

See the Releases page for the last engine release, which includes release notes and links to download binaries. Note that engine binaries are not released with every new feature, nor for every platform, and may be well behind what is available at MonkeyCAM.org.

Features and Current Status

The MonkeyCAM engine is currently a command-line program only, which is made available with a very basic UI at MonkeyCAM.org. The program takes configuration files to describe the ski or snowboard shape via a small set of parameters and generates the following G-code programs plus a HTML overview of the board:

  • Base cutout
  • Core:
    • Guide holes to allow the core to be removed and flipped between programs
    • Alignment marks to transfer key design points to the bottom of the core
    • Edge relief to leave room for steel edges
    • Insert holes for standard snowboard inserts (T-nuts) in a variety of patterns
    • Top profile to impart the taper to the core
    • Cutout, allowing for sidewall overhang and nose/tail spacers
  • Nose and tail spacers which match the core
  • Edge trenches to enable inlay of different edge wood and/or sidewall material along the effective edge of the core

The G-code programs emitted at this time have been tested on my CNC machine with a very old DeskCNC controller and work correctly. Each program also loads in Mach 3 and simulates correctly. The programs not involving holes load in ShopBot's controller and simulate correctly, but the ones with holes do not work for ShopBot right now.

There is no interactive user interface. Configuration is done via three text files, and all results are either G-Code programs, or the HTML overview which can be easily used to refine the board shape.

Future Work

MonkeyCAM v4.0 is a work in-progress. It is a port of MonkeyCAM v1-v3, developed by Mike Magruder for Happy Monkey Snowboards, Inc. from 2003 to 2012. The valuable parts of the MonkeyCAM v3 backend (shape and G-code generation) have been almost completely ported. The old UI has been discarded.

My plan for work includes, roughly in order:

  • Engine
    • Target more G-code controllers with different formats and requirements.
    • More options for effective edge, nose, and tail. (MonkeyCAM v3, for instance, had 6 tail options.)
    • Port the code to soften the transition between edge and nose/tail. (You can work around this with a sandblock and two min of your time for now.)
    • Read the overall board shape from other CAD programs (DXF at least).
    • Mold design and program to cut molds.
    • Roughing passes for the core profile.
    • Output the overall shape, insert locations, etc. to PDF/DXF for printing or use in other CAD programs.
    • Adapt for other kinds of 'boards': kite boards, skate boards, etc.
  • Web App
    • Improve input UI, remove need to use JSON.
    • Improve the results UI, remove the need for the overview HTML currently generated.
    • Worker reliability and scaling: retry, allow multiple workers again.

Dependencies

MonkeyCAM engine currently depends on the following packages:

  • Mac build: Mac OSX 10.14.4 Mojave with the system compiler, Apple LLVM version 10.0.1 (clang-1001.0.46.3).
  • Ubuntu build: ubuntu 16.04 LTS with the default compiler, gcc (Ubuntu 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609.
  • Windows build: Windows 10.0, MinGW with GCC 4.9.3-1.
  • CMake 3.5.1. See http://www.cmake.org/ or install via something like Ports.
  • Clipper 5.1.6. See http://sourceforge.net/projects/polyclipping/. The C++ version is copied in the clipper directory.

The web app currently depends on the following packages:

  • Node.js, v8.15.0 for the cloud functions, and v8.15.0 for the client and worker.
  • See the package.json files in the respective source directories for further dependencies. The major ones are React and Bootstrap on the UI side, and Google's cloud infra (Storage, Datastore, Pubsub) on the server side.
  • The web app is hosted on Google's cloud infra: App Engine, Cloud Functions, and Compute Engine.

Contributing

If you're a software developer who is into ski and snowboard construction or CAM and you're interested in helping out on MonkeyCAM then let's chat. Open up an issue with what you want to work on and we'll work out the details there, or fork the repo, make some changes and put up a pull request!

monkeycam's People

Contributors

mikemag avatar regmeasures avatar zxyle avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

monkeycam's Issues

Programs with circles do not work on ShopBot

ShopBot doesn't support the R variant of G02, so the following programs fail on ShopBot:

  • Inserts
  • Guide holes

Need to move to the I,J variant of G02 to support less capable controllers.

third taper for profile

some cores I have measured have a thinner section between the bindings. A third/fourth profile arc would allow the creation of this thinner middle section between the bindings.

monkeyCAM

hello,
i cant seem to start monkeyCAM on my laptop. once i try open it i get a small screen flash up for a second then it drops out. not sure what to do?

JSON parameters out of order on re-run

When you select to change the design and run again, all of the parameters are there but they're jumbled and hard to find. Figure out a nice way to sort and group them to keep 'em stable.

Release mac build

Use the real release process with github to release the first binary version for Mac. Remove the FCIB's when done :)

[G-code] Core edge trench extensions should be computed accuratley

Fix the tench program to not guess on the extension length:

  • Offset inward to the inward trench edge, and trim like now.
  • Extend to hit the core shape, then add a smaller extension length.
  • Strike end lines at 90deg to the last line in the inward edge, twice the trench width.
  • Close the path.
  • Offset the original shape outward to the outter trench edge.
  • Intersect the two to form the trench path.

Shape comparison

Older versions of MonkeyCAM allowed me to define two board shapes and compare them visually. This was great for tweaking nose/tail shapes, and comparing different edge geometry.

I'm considering the following:

  1. Have MonkeyCAM take two sets of board def files.
  2. Build up the overall and core shapes as usual.
  3. Run a bunch of comparison algorithms on them.
  4. Collect all the results up in a nice HTML output like the current output, but with sections focused on different comparisons of the boards.

Various comparison ideas:

  1. Nose/tail shapes. Overlay them visually. Surface area differences.
  2. Edge shapes. Overlay them, width differences at key points (bindings, waist, narrowest section vs. ee center and setback, etc.) Here I'd also like to quantify the portions of the edges with maximum difference, and relate that to the effect on edge shape of grinding during the finishing process and repeated edge tuning. (I want this specifically because I've tried some cute shapes in the past where the difference was literally erased during the first tune.)

Mac Help

I'm sure it's me but I cant figure out for the life of me how to get this downloaded on my mac and running.

Could a "simple" background process make it almost realtime as we fill out a form?

Simple, well definitely not for me but maybe for a whizz programmer its a go-er. So what I mean is we have a "GUI" that is the current brilliant SVG html output, which is updated almost in real time as the MonkeyCAM computes svg and the gcode based on the entries entered into a simple form?

The form updates the json file automatically as every change is committed to the form with a tab or enter keystroke after each field is tweaked, then the html file displayed with the svg is automatically updated and refreshed...... or there is a "commit" button at the bottom of the table form.

Now just to be clear Mike, I do not expect you to do this , its just a suggestion and I know I've been quite prolific with my input!!!! So please forgive me mate if this is just one step too far! What you have created here is simply mind boggling.

cheers
Rich

problem executing on MAC???? see issue details for how to work around this....

Rileys-iMac:MonkeyCAM-4.0.3 new$ ./bin/MonkeyCam --board ./example/board-def.json --machine ./example/machine-tool-def.json
MonkeyCAM v4.0.3, Copyright (C) 2013-2014 Michael M. Magruder
This is free software; see the source for license information. There is
NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Using board './example/board-def.json', machine './example/machine-tool-def.json'
Building board shapes...
Generating G-code programs to './'...
Sample-snowboard-top-profile.nc
Assertion failed: (o.is_open()), function write, file /Users/Mike/dev/MonkeyCAM/core/gcode-writer.cpp, line 412.
Abort trap: 6
Rileys-iMac:MonkeyCAM-4.0.3 new$

running OSX 10.9.5

I mounted the dwg file and its all there, and its executing but bombing out, i tried various relative and absolute pathnames working out of the MonkeyCAM root or in MonkeyCAM/bin directories and it made no difference. Need the guru input now Mike!!!!

Enhancement request - from bottom side cut sidewall trench to match top core profile for PU sidewall pouring

Create a trench in the core underside before profiling the top side, that follows the top profile of the core, so that you can pour in a sidewall using PU or other brews such as reinforced resin mixes. making the trench say 0.5 mm deeper all the way through to allow some fudge factor although all cnc should be way better than this anyway!!!

The benefit is less wasted PU as it is expensive, prob save 50%, and also less PU dust created which lessens the harmful effects as it is not so pleasant material to be inhaling.

The program could also calculate the qty of PU to be mixed again eliminating wastage.

Trench width adjustable say anything from 5-10mm??

Productivity gains, less wastage, more healthy!

error when running monkeycam

Having an issue getting the program to run. I am getting the following error when trying to execute.

tried rich's fix of running in the same directory to no avail.

Using board 'board1.json', machine 'machine1.json'
libc++abi.dylib: terminating with uncaught exception of type boost::exception_detail::clone_implboost::exception_detail::error_info_injector<boost::property_tree::json_parser::json_parser_error >: machine1.json: cannot open file
Abort trap: 6

all help appreciated.
Cheers
Liam

Different kinds of guide pins and locations

  • Add different kinds of guide pin holes, since not everyone will want to use extra inserts for that.
  • Allow different locations and pin counts. Perhaps the default can be two pins where I have them now, but allow an arbitrary number with locations relative in X & Y to the center of the board. Percentages or exact distances is also probably reasonable.
  • Provide an option to dimple the base. This could be sketchy, and I likely wouldn't do it myself, but it should be easy to do and it's worth a try.

cc: @splitn2

Cannot open machine-tool-def.json

I tried running the sample board and machine json files. I get an error below. I checked the permissions on the files and the folders. All looks ok. I'm referencing the files/folders appropriately. Running Windows Vista.

C:\Users\steve\Documents\MonkeyCam\MonkeyCAM-4.0.2\bin>MonkeyCAM.exe --board boa
rd-def.json --machine machine-tool-def.json --outdir SampleBoard
MonkeyCAM v4.0.2, Copyright (C) 2013-2014 Michael M. Magruder
This is free software; see the source for license information. There is
NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Using board 'board-def.json', machine 'machine-tool-def.json'
terminate called after throwing an instance of 'boost::exception_detail::clone_i
mpl<boost::exception_detail::error_info_injector<boost::property_tree::json_pars
er::json_parser_error> >'
what(): machine-tool-def.json: cannot open file

This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.

C:\Users\steve\Documents\MonkeyCam\MonkeyCAM-4.0.2\bin>

enhancement request - full cutout of tip and tail spacer to get the core and spacer to a set fixed length

Make the cam output full cutout of tip and tail spacer including the 3 straight sides and the shaped end that fits the core, to get the overall core and spacer to a set fixed length. So then the tip and tail spacer is attached to the core first with a small staple or epoxy or tape and becomes say a total of 170cm long, and then fits into 4 corner pockets or tabs in the cassette, like photo album books have on the corners of each photo that they slip into. This would just speed up production a tad and also basically nullify the chances of a mis alignment either by a mis placement during layup or a shift while moving the cassette. On the to do list not urgent just another idea to streamline the process. cheers Rich

Difficulty Getting Started can not get the program to run.

So I read through the thread on ski builders.com and the documentation on github and believe I have followed the direction (obviously not). After downloading the .dmg file I then took the folder and put it into a folder I created on my desktop called MonkeyCam. After that I opened the terminal and pasted the code that github provided.

cd
mkdir SampleBoard
bin/MonkeyCAM --board example/board-def.json --machine example/machine-tool-def.json --outdir SampleBoard
open Sample-output/Sample-snowboard-overview.html

Changing to

cd
mkdir SampleBoard
bin/MonkeyCAM --board example/board-def.json --machine example/machine-tool-def.json --outdir SampleBoard
open Sample-output/Sample-snowboard-overview.html

this did not work. I then took all the files out of their folders so they were just sitting in the MonkeyCam folder. and posted the code again and it did not work. When I opened the terming all I did was post the code. Are there other inputs that I need to put in before I post the code?

What am I doing wrong?

thanks for the help!

Bug in G-Code comments

Rich and I were testing the ski binding inserts functionality on his machine and have found a minor bug in the comments part of the G-code files which get output from MonkeyCAM. The bug appears as a non-closed comment line in the second line of comments. For example:

( Sample-ski-base-cutout.nc                                                    )

( Generated by MonkeyCAM v4.0.5 at 2017-07-09 00:44:27 New Zealand Standard Time

(                                                                              )

( This GCode program is provided on an "AS IS" BASIS WITHOUT WARRANTIES OR     )

It looks like this might happen due to the date-time-timezone field getting too long and not getting truncated properly.
It's easy to fix in a text editor but could do with resolving properly.

Material dimension checks, bill of materials, basic laminate analysis

Add a materials definition file for MonkeyCAM to consume and use to understand the available materials: base material width and thickness, edge dimensions, glass width and type, topsheet width and type, etc.

Use these to do the following:

  1. Ensure that the shape will fit the materials available. Warn if the base material isn't wide enough, or the glass is too narrow for the nose width, or if the edge profile won't fit in the edge groove, etc. Include the maximum pressable length given your press/mold setup.
  2. Produce a Bill of Materials: length of base material, glass, edges, sidewall inlays, length of nose/tail spacer material, volume of epoxy needed, etc.
  3. Basic analysis of the board given what we know about the materials: final laminate thicknesses, weight of all materials individually and when assembled dry, projected weight given various fiber fractions, surface area, compute hose pressure to laminate pressure given surface area and hose contact patch to cat track, center of mass of the final board. I call these "basic" vs. what I'd consider more advanced things to hopefully come later: flex projections along the length of the board, torsional rigidity, moment of inertia, etc.
  4. Produce "scaling factors" for the major parameters of a board design. I.e., how much does the weight of the core/base/glass/topsheet/edges change given a change in the center core profile thickness? Change in tail thickness? Change in profile ramp? Change in waist width? Change in sidecut radius? Etc.

The primary goals are:

  1. Prevent mistakes in board design that result in sadness half way thru construction. We've all been there :)
  2. Produce a list of what I need to gather up to make the board. I don't want to have to keep referring back to the board design, or re-measure the edge trench, etc.
  3. Help us understand how our design choices effect the final big properties of the board, starting with weight.

MonkeyCam Error

Something happened to your web app MonkeyCam. An error occurs after clicking the button "Run MonkeyCam". Error "The server returned an error: TypeError: Failed to fetch". Look, please, what happened? Your application is very useful and I would like to use it. Thank you:)

ability to shape swallowtail

Snocad uses absolute values allowing the creation of reverse arcs giving half moon/swallowtail shapes. This may be possible in monkeycad using negative percentages in the bezier arcs or by switching to an absolute value.

(rich has asked me to add issues as I find them)

Edge Dimensions

I current use a typical edge sourced from CDW with a 2x2mm edge size approx. (and 1.4mm step for base). My preference is for a full wrap edge albeit extra work its worth the effort. So does MonkeyCAM offset the base size for 2mm or what ever you have chosen all the way around? Just thinking Splitboard allowing for the 2mm off each of the straight line inside edge too .......

Tool names in machine-tool-def.json

I will add to this issue for now its just a place holder while I am thinking of it. I was trying to enter new names and dimensions for my metric cutters and MonkeyCAM was hating on the names I was using, I will try again and add detail to this issue......

Its probably finger trouble but I thought my editing skills were better than that, do I need to use "vi" editor I think I can still remember how.......haha!!!

cheers
Rich

Tools

The tools section has an entry for each tool which will be used by the generated G-Code programs. Each tool is given an id which is used to reference the tool from other parameters, and is called the tool number in the documentation for those parameters.

"tools":
[
{
"id": 1,
"name": "Quarter Inch Upcut Spiral",
"diameter": 0.247,
"G-code #": 1
},
{
"id": 2,
"name": "Quarter Inch Straight",
"diameter": 0.250,
"G-code #": 1
},

]

Greater control over nose, edge, and tail shapes

Keen to understand how much control is possible over nose and tail planshape. Modern designs rightly or wrongly tend to have more than just curves but instead more sections are blocky or blunted joined by curves, some of this is possibly more fashion but it also serves for nose lift and maybe sometimes less nose catchy designs too. Would having multiple control points enable us to pull parts of the radius and lock down various parts?

Would it be possible to overlay a curve in the background that started/finished at the end of the effective edge where it transitions into the nose, and also travels through / intersects the actual nose tip so you could see how your own tweaks compared to a more round "traditional" nose shape?

cheers
Rich

Allow transposition of X & Y axes.

Some people have X as the short axis and Y as the long one, opposite my normal setup. Add specification of this to the machine config so people don't have to muck with transposition in their control program.

Splines , sidecuts, profiles ?????

Hi team - @RegMeasures @mikemag @NickAlbers , I've had a lot of fun lately with Fusion360 and splines , mainly this started with helping George Gaines @ Chilton Skis with his ski press profile redesign, albeit badly I think I came up with better than he had originally. But my curiosity with splines actually goes back to Styrotech Ltd who were a NZ based highly successful windsurf custom race board company in the 80's and 90's until windsurfing died..... I used to watch Kevin Trotter the designer/owner playing with splines on MacSurf a marine design program for Mac computers when I was flatting with Kevin in the early 90's. It all went over my head I just know it was a big part of his boards being fast. So recently I was helping some young guys build some powder boards for Japan and they used Fusion360 and splines to do their sidecuts and press profile camber/rocker press blocks and they came out beautifully. Then helping George I used splines to redesign his ski press profiles and then put them through the Fusion360 "Curvature Comb Analysis" tool to check for bumps and hard to see features that are in the splines - bumps that are mathematical calculated and are fair but not necessarily what you want in an efficient snow or water craft where we don;t want drag or an effect of "pushing" snow ...... Again I must say I am a total rookie at this and its total gut feel but given the boaties use I can't help but think its worth exploring.

So I am wondering to really round out the capabilities of MonkeyCAM is there any agreement with you guys in the effort of using splines in MonkeyCAM for press profiles and sidecuts

Taking that further , is there a way we can have a continuous spline from the tip all the way to the tail end to end ??? Maybe not so easy to define parametrically in MonkeyCAM currently ???

And is the code available to use hedgehog style comb curve analysis and can it be brought into MonkeyCAM???

What kind of spline ? As far as I can tell splines came from a couple of Frenchies, Bezier and another fellow , who worked for Renault and Citroen. Carious splines exist some are actually patented and licensed ??? B spline, T-spline, then there are NURBS surfaces....... some splines average their way between the control point handles some actually pass directly through the handles , some only tweak the spline back to the closest control points some tweak the curve all the way end to end ......... crikey its freaking me out already too many choices!!!!!

What do you guys think? I know you are all a way smarter with your maths than me!!!!!

Kinda covers these suggestions too

#13
Press profiles - nose and tail and mid section , rocker camber etc #13

#12
Greater control over nose, edge, and tail shapes #12

Better tool offset algorithm for core top profile

Given a core top profile curve, you just can't use that as the Z depth of the cutter because the cutter has width, and the wider the cutter the more error there will be matching the profile. Example: if a profile specifies that the rise from the thin part of the nose starts 2" from the end of the effective edge, and if you use a 1.5" cutter, then the rise will really start 2.75" from the end.

Thus, the profile curve is adjusted to account for the cutter width via the ToolOffsetPath class.

However, the algorithm is too basic, and will only work pretty much for profile paths formed by MonkeyCAM now: thin at the ends, thick in the center. If we want to be able to have top profiles with more curves in them, then we'll need a better offsetting algorithm.

I have some ideas on this I need to research. The current alg is very brute force, but I have a suspicion that a Minkowski Sum (https://en.wikipedia.org/wiki/Minkowski_addition) using a horizontal line the width of the cutter and the profile path as the trajectory would yield a polygon whose upper curve would represent the proper tool path. We'll see. If so, then this would be a reason to move up to a more recent version of Clipper.

Enhancement Request - CAMAX style insert holes

I use CAMAX inserts and I'm sure a few others do too. I'll measure up a sample and put the dimensions here. It would be great to have the flange cut set up for a non-dished flange , if that makes sense!? cheers, Rich

Record options with gcode output

Generate a copy of all of the options used to generate the board into the same dir. Serialize board and machine defs, don't just copy.

Monkeycam died outputting SVG file

For some reason it bombed while outputting the svg file?????

Windows 7 Enterprise SP1
Java Ver7 Update67 (Build 1.7.0_67-b01)
anything else you need?

Keep up the good work!

cheers
Rich

C:\Users\harcourt\Downloads\MonkeyCAM-4.0.2\bin>monkeycam --board ..\example\boa
rd-def.json --machine ..\example\machine-tool-def.json
MonkeyCAM v4.0.2, Copyright (C) 2013-2014 Michael M. Magruder
This is free software; see the source for license information. There is
NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Using board '..\example\board-def.json', machine '..\example\machine-tool-def.js
on'
Building board shapes...
Generating G-code programs to '.'...
Sample-snowboard-base-cutout.nc
Sample-snowboard-guide-holes.nc
Sample-snowboard-core-alignment-marks.nc
Sample-snowboard-core-edge-groove.nc
Sample-snowboard-core-insert-holes.nc
Sample-snowboard-top-cutout.nc
Sample-snowboard-nose-tail-spacers.nc
Sample-snowboard-edge-trench.nc
Sample-snowboard-top-profile.nc
Sample-snowboard-overview.svg
Assertion failed: base.is_open(), file C:\Users\Mike\MonkeyCAM\src\MonkeyCAM\uti
l\svg-writer.cpp, line 33

This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.

C:\Users\harcourt\Downloads\MonkeyCAM-4.0.2\bin>dir
Volume in drive C is PC COE
Volume Serial Number is A4E9-0D90

Directory of C:\Users\harcourt\Downloads\MonkeyCAM-4.0.2\bin

22/09/2014 01:00 p.m.

.
22/09/2014 01:00 p.m. ..
05/10/2013 10:17 a.m. 112,142 libgcc_s_dw2-1.dll
05/10/2013 10:17 a.m. 1,000,974 libstdc++-6.dll
20/09/2014 03:59 a.m. 10,185,064 MonkeyCAM.exe
22/09/2014 01:01 p.m. 22,692 Sample-snowboard-base-cutout.nc
22/09/2014 01:01 p.m. 3,121 Sample-snowboard-core-alignment-marks.n
c
22/09/2014 01:01 p.m. 39,697 Sample-snowboard-core-edge-groove.nc
22/09/2014 01:01 p.m. 88,729 Sample-snowboard-core-insert-holes.nc
22/09/2014 01:01 p.m. 88,224 Sample-snowboard-edge-trench.nc
22/09/2014 01:01 p.m. 4,718 Sample-snowboard-guide-holes.nc
22/09/2014 01:01 p.m. 18,743 Sample-snowboard-nose-tail-spacers.nc
22/09/2014 01:01 p.m. 0 Sample-snowboard-overview.svg
22/09/2014 01:01 p.m. 99,815 Sample-snowboard-top-cutout.nc
22/09/2014 01:01 p.m. 170,354 Sample-snowboard-top-profile.nc
13 File(s) 11,834,273 bytes
2 Dir(s) 53,373,841,408 bytes free

C:\Users\harcourt\Downloads\MonkeyCAM-4.0.2\bin>

Understanding Overall Shape Dimensions

Hi,

I'm working on an educational project to port MonkeyCAM into a serverless web app - I say port, but really it's using the excellent work on MonkeyCAM as inspiration, but building from scratch.

Whilst checking the output of my boards / skis to MonkeyCAM's, there's a discrepancy in the nose width & tail width.

Here's an example:

{
    "board": {
        "name": "Kids Skis",
        "nose length": "14",
        "effective edge length": "104",
        "tail length": "6",
        "sidecut radius": "1250",
        "waist width": "8",
        "taper": "1",
        "nose shape": {
            "type": "Basic Bezier",
            "end handle": "0.75",
            "transition handle": "0.5"
        },
        "edge shape": {
            "type": "Basic Arc"
        },
        "tail shape": {
            "type": "Flat",
            "flat width": "5.5",
            "end handle": "0.50",
            "transition handle": "0.75"
        },
        "nose and tail spacer width": "2",
        "tail edge extension": "2"
    },
    "profile": {
        "nose thickness": "0.3",
        "center thickness": "0.79",
        "tail thickness": "0.3",
        "nose taper": {
            "taper start": "0.45",
            "start handle": "0.70",
            "end handle": "0.80",
            "taper end": "1.00"
        },
        "tail taper": {
            "taper start": "0.51",
            "start handle": "0.68",
            "end handle": "0.85",
            "taper end": "1.00"
        }
    }
}

Using MonkeyCAM, this produces the following summary:

  • Total length: 124.0000cm
  • Nose / effective edge / tail length: 14.0000cm / 104.0000cm / 6.0000cm
  • Nose / waist / tail width: 10.6642cm / 8.0000cm / 9.6642cm
  • Taper: 1.0000cm
  • Sidecut radius / depth: 1250.0000cm / 1.0821cm
  • Reference stance width: None
  • Setback: None
  • Board area: 1082.687cm2
  • Extension of metal edge towards nose: None
  • Extension of metal edge towards tail: 2.0000cm

Using my webapp, I get the following:

  • Total length: 124.0000cm
  • Nose / effective edge / tail length: 14.0000cm / 104.0000cm / 6.0000cm
  • Nose / waist / tail width: 10.16cm / 8.0000cm / 9.16cm
  • Taper: 1.0000cm

Here's the difference overlaid - the wider one is MonkeyCAM's:
screen shot 2017-03-23 at 13 39 01

When I draw it up in SketchUp, I've measured the expected Nose / Tail widths to be 10.16cm / 9.16cm. See below:
screen shot 2017-03-23 at 13 47 20

So, any idea what the discrepancies are? I'm pulling my hair out trying to find the difference...Is it 5mm for edges?

Many thanks,
Gareth

Binding inserts for skis...

Most ski's don't have inserts as standard, but a few do. I figure ski design has learnt a lot from snowboards, so why not... Been discussing this with @splitn2 for lightweight cores which would otherwise need a lot of reinforcement to prevent pull out.

The obvious challenge for implementing this is that ski bindings are generally designed for a specific and exact hole pattern so a generic pattern of inserts won't work. This means that skis need to be custom built for a specific binding (and potentially boot length depending on how adjustable the binding is). But this also makes it ideally suited for CNC as the inserts can be precisely positioned.

After spending a bit of time looking at the way the snowboard inserts are set up in MonkeyCam I was thinking:

  • "stance setback" could be used to define the setback to the ski boot centre from the effective edge centre.
  • Rather than messing up the existing "nose insert pack" or "tail insert pack" I should create a new "ski insert pack" section in the board def json file.
  • The "ski insert pack" will need a setting for "boot length".
  • There needs to be some way to define the hole layout manually or from a library - this might be a bit complex to fit into the board def json file so maybe I should put this in a seperate binding def json file which gives details of the screw pattern, that way implementing a new binding would just require creating a new binding def file and then refer to it in the board def file? What do you think @mikemag. To specify the hole locations I'm going to have to define a list of x-y positions relative to boot toe and heel centres I think.

Any thoughts @mikemag? I guess we could leave this mod in a standalone fork rather than merge it into the main code as it is a bit specialist but i figure I should try and do a tidy job of it as if it is going to be imported? Where do you think the best place to input the hole pattern for a specific binding is?

Press profiles - nose and tail and mid section , rocker camber etc

Any thoughts on how we can design press profiles for nose and tail profiles and what's in-between? I use separate nose and tail blocks with a mid section of slight camber. I was looking at a Trapper splitboard at Splitfest NZ last week and it had such a sweet looking nose and tail really mellow, mine are just too old school at the moment that's for sure. Its nice to be able to visualize the nose and tail height and have the contact points where the nose and tail rise starts sitting in the right place with respect to the plan (top down look) shape transition from effective edge to nose/tail plan shape radius, avoiding a hooky board and getting the right final nose and tail height.....

Grid in SVG overview is meaningless. It should represent the design units, i.e., cm, but it is just crap right now.

so as an example I ran this through the monkeycam and got this SVG file..... when I view the svg file in Internet Explorer I see a effective edge length of approx. 950mm if I compare it with the background 1cmx1cm raster ????? Windows 7 Enterprise SP1 with IE10 .......
sample-snowboard-overview

I expected 136cm effective edge??? first part of board-defs below.....

cheers
Rich

{
"board":
{
"name": "Sample-snowboard",
"nose length": 18,
"effective edge length": 136,
"tail length": 6,
"sidecut radius": 1100,
"waist width": 24.6,
"taper": 1.0,
"nose shape":
{
etc etc nothing changed below here......

Enhancement request - Splitboard specific requirements

Touring bracket and heel riser insert pattern - in inches.....

Splitboard insert pattern for mounting Voile pucks - this is not 40x40mm its actually in inches!!!

The cut down the middle!!!!! So the board is really 2 mirrored halves of course, ideally the board is made with one whole core that is made 6mm wider in the middle to allow for bandsaw to rip through and for the 2 inside edges. The core should have at least 3 alignment dowels to the base end/middle/end as it is critical to a splitboard to helping keep the inside edges dead straight and parallel while laying up and pressing.

Bases are cut with the allowance for the inside edge 2mm also (I use 2x2mm edge profile with 1.4mm step)

tip/tail spacers ideally be modded to include some wrap into the inside sidewall

inside edge sidewall trench for hard inlay timber or plastic same as normal outside sidewall - just add a 14mm stringer cut down the middle to allow for 2 x 6mm sidewalls and a 2mm final gap for the bandsaw rip

so there you go Mike I work in inches and metric too!!! haha I totally get you about this, even my 14 year old son like to work in inches too.

I'll forward the insert pattern dimensions to you ok. Or try attach to this github

cheers
Rich

Enhancement request - partial edges for low cost production boards and prototyping?

For rapid prototyping and as a customer choice for a lower cost production board I would like to have an option to select the program to cut the base for partial edges just along the full running length so a minimal amount of bending just into the tip and tail transition area where the bezier meets the arc. Worth it or a PITA? cheers Rich

Build for Windows

  • Build for Windows 8.1
    • If anyone wants to ensure that MonkeyCAM works on earlier OS versions please leave a comment and let me know!!
  • Use LLVM on Windows, not MSVC++.
    • Too much of a pain in the ass to back-port to MSVC++'s weak-ass C++11 support.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.