npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@appliedengdesign/gcode-reference

v0.0.8

Published

Node module to provide descriptions and reference to CNC G-Codes

Downloads

142

Readme

NPM Version NPM DL GitHub Issues Github Stars MIT License

CodeQL Node.js CI

Follow @appliedengdesign

G-Code Reference

This project aims to provide a JSON-backed reference to the G & M codes associated with CNC mills, lathes, 3D printers and more. This project was created to be consumed by our VSCode G-Code Syntax extension for hover information, but we think it can be of use for many different applications.

Goals

Since this is still in very early stages of development, here are the goals outlined for the project:

  • JSON Files
    • Provide a comprehensive & accurate source of information on G & M codes for CNC Mills & Lathes, as well as 3D Printers.
  • Provide an API to be consumed by Typescript / Javascript / Node applications to retrieve the information.
  • Ability to generate full pages of information in HTML or Markdown.
  • Act as a single reseource via GitHub pages for all to read the documentation
  • Provide a simple interface for contributors to add / modify the reference JSON.

Install

To install the latest version:

npm install @appliedengdesign/gcode-reference --save

Usage

Try it in the Node.js REPL :)

Javascript:

// Import Everything ESM/Typescript style
import * as GRef from 'gcode-reference';
// OR
const GRef = require('gcode-reference');

const gref = new GReference();
// OR
// initialize with a machine type
const gref = new GReference('mill');
// OR
// initalize with a machine type and variant
const gref = new GReference('mill', 'mazak');

// Get Complete G-Code Object
const gcode = gref.get('G1');

// Get All Codes
const gcode = gref.getAllCodes(CodeTypes.G);

// Get Short Description
const shortDesc = gref.getShortDesc('G1');

// Get Full Description
const desc = gref.getDesc('G1');

// Get Current Machine Type
const type = gref.getType();

// Set Machine Type (Will rebuild reference)
gref.setType(GRef.MachineTypes.Mill);

// Set or Remove a Variant
gref.setVariant(Gref.MachineTypes.Mazak);
gref.removeVariant();

// Check if there is a variant
gref.isVariant();

// Get Parameters for a G/M Code
gref.getParams('G84');

// MARKDOWN GENERATION

// Get Code as Markdown
const codeMarkdown = gref.getCodeAsMarkdown('G1');

// Get All Codes formatted in Markdown
const codesMarkdown = gref.getAllCodesAsMarkdown('gcode');

// HTML GENERATION

// Get Code as HTML (complete w/ head/meta)
const codeHTML = gref.getCodeAsHTML('G1', false);

// Get Code as HTML (partial) - default if true/false not included
const codeHTML = gref.getCodeAsHTML('G1');

// Get All Codes as HTML (partial by default as well)
const codeHTML = gref.getAllCodesAsHTML('G1', false);

// You can also import the types separately / individually when using Typescript
import {
  Categories,
  Category,
  CNCCodes,
  Code,
  CodeType,
  CodeTypes,
  ICode,
  MachineType,
  MachineTypes,
  Parameters,
  Variant,
  Variants,
} from 'gcode-reference';

Machine Types

Supported machine types are edm, mill, lathe, laser, printer or swiss. You can select the machine type using the string variant or use the enum MachineTypes.

Variants

The current supported variants are amada, brother, centroid, citizen, doosan, fadal, fanuc, haas, hurco, mach3, mazak, milltrs, mitsu, okuma, snpmaker and tormach. These are also exposed under the enum Variants.

For more information on creating more variants or requesting them, please check out our Contributing page.

Schema

The schema used for the JSON data is published in the repo cnccodes-json-schema and was created specifically for this project.

Issues

If you find any bugs or issues with the package, please create a new GitHub issue.

Contributing

We Need Your Help

We need people to help add more G & M codes to the various machine tool bases as well as adding variants.

For information on contributing, please refer to the CONTRIBUTING doc for information on how to add to this project.

Contributors

About Applied Eng & Design

We are a full service engineering and design firm, specializing in CAD/CAM, CNC milling, rapid prototyping, training and more. We also like to dabble in Arudino / RaspberryPi projects, electronics, drones and robotics projects! Subscribe to our YouTube channel for videos on our projects, screencast tutorials, and more!

Follow us on Twitter & Instagram, and like our Facebook Page!

License

This extension is licensed under the MIT License.