Latest commit

History

29 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

G-code Visualizer for Unity

This repository contains a Unity project that reads G-code files, simulates the movement of an end mill (cylindrical cutting tool), and visualizes the toolpath generated by the G-code. The project is implemented using C# and Unity's built-in features like LineRenderer.


Features

  • G-code Parsing: Reads and interprets G-code commands to control the movement of the end mill.
  • Toolpath Visualization: Displays the trajectory of the end mill using Unity's LineRenderer.
  • Coordinate Transformation: Converts between G-code coordinates and Unity's coordinate system.
  • Modal State Management: Handles G-code modal states, including absolute/relative positioning, plane selection, and feed rate adjustments.
  • Linear and Arc Motion Support: Simulates both linear (G0, G1) and arc (G2, G3) movements.

Requirements

  • Unity Version: Unity 6 or later
  • Dependencies:
    • A G-code parser library (GenericGCodeParser) is used to interpret G-code files. Ensure it is included in your project.

How It Works

  1. Load a G-Code File:

    • Specify the path to your G-code file in the gcodeFilePath variable (default: Assets/gcode/test.cnc).
  2. Simulate End Mill Movement:

    • The script reads the G-code file line by line and moves a cylindrical object in Unity according to the parsed commands.
  3. Visualize Toolpath:

    • The trajectory of the end mill is recorded and displayed using Unity's LineRenderer.
  4. Coordinate Conversion:

    • Converts between Unity's coordinate system (X, Y, Z) and G-code's coordinate system (X, Z, Y) with scaling.

Usage

  1. Clone this repository into your Unity project's Assets folder.
  2. Attach the EndmillMover script to a GameObject representing the end mill (e.g., a cylinder).
  3. Add a LineRenderer component to the same GameObject for toolpath visualization.
  4. Place your G-code file in the specified path (Assets/gcode/test.cnc by default).
  5. Play the scene in Unity to see the end mill move along the toolpath defined by the G-code.

Code Overview

Key Components

  • EndmillMover Script:

    • Core logic for parsing G-code, controlling object movement, and visualizing toolpaths.
  • Coordinate Conversion:

    • ConvertToUnityCoordinates: Converts G-code coordinates to Unity's coordinate system.
    • ConvertToGCodeCoordinates: Converts Unity coordinates back to G-code format.
  • Motion Handlers:

    • HandleLinearMove: Simulates linear movements (G0, G1).
    • HandleArcMove: Simulates circular arc movements (G2, G3).
  • Toolpath Recording:

    • Positions are recorded during movement and passed to the LineRenderer for visualization.

Example

Sample G-Code Input (test.cnc)

G21; Set units to millimetersG90; Absolute positioningG0X10Y10 Z0 ; Rapid moveG1X20Y20 Z-5 F800; Linear move with feed rateG2X30Y30I10J0; Clockwise arc

Result in Unity

  • The cylinder moves along a defined path while leaving a visual trail representing its trajectory.

Customization

  • Scaling Factor: Adjust the SCALE variable to modify how real-world units map to Unity units.
  • Feed Rate: Modify feed rate behavior by adjusting lastFeedRate.
  • Visualization Style: Customize the appearance of the toolpath by tweaking LineRenderer properties.

License

This project is licensed under the MIT License. See LICENSE for details.


Acknowledgments

Special thanks to contributors and libraries used in this project, including any external G-code parsers integrated into this implementation.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Latest commit

History

29 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

G-code Visualizer for Unity

This repository contains a Unity project that reads G-code files, simulates the movement of an end mill (cylindrical cutting tool), and visualizes the toolpath generated by the G-code. The project is implemented using C# and Unity's built-in features like LineRenderer.


Features

  • G-code Parsing: Reads and interprets G-code commands to control the movement of the end mill.
  • Toolpath Visualization: Displays the trajectory of the end mill using Unity's LineRenderer.
  • Coordinate Transformation: Converts between G-code coordinates and Unity's coordinate system.
  • Modal State Management: Handles G-code modal states, including absolute/relative positioning, plane selection, and feed rate adjustments.
  • Linear and Arc Motion Support: Simulates both linear (G0, G1) and arc (G2, G3) movements.

Requirements

  • Unity Version: Unity 6 or later
  • Dependencies:
    • A G-code parser library (GenericGCodeParser) is used to interpret G-code files. Ensure it is included in your project.

How It Works

  1. Load a G-Code File:

    • Specify the path to your G-code file in the gcodeFilePath variable (default: Assets/gcode/test.cnc).
  2. Simulate End Mill Movement:

    • The script reads the G-code file line by line and moves a cylindrical object in Unity according to the parsed commands.
  3. Visualize Toolpath:

    • The trajectory of the end mill is recorded and displayed using Unity's LineRenderer.
  4. Coordinate Conversion:

    • Converts between Unity's coordinate system (X, Y, Z) and G-code's coordinate system (X, Z, Y) with scaling.

Usage

  1. Clone this repository into your Unity project's Assets folder.
  2. Attach the EndmillMover script to a GameObject representing the end mill (e.g., a cylinder).
  3. Add a LineRenderer component to the same GameObject for toolpath visualization.
  4. Place your G-code file in the specified path (Assets/gcode/test.cnc by default).
  5. Play the scene in Unity to see the end mill move along the toolpath defined by the G-code.

Code Overview

Key Components

  • EndmillMover Script:

    • Core logic for parsing G-code, controlling object movement, and visualizing toolpaths.
  • Coordinate Conversion:

    • ConvertToUnityCoordinates: Converts G-code coordinates to Unity's coordinate system.
    • ConvertToGCodeCoordinates: Converts Unity coordinates back to G-code format.
  • Motion Handlers:

    • HandleLinearMove: Simulates linear movements (G0, G1).
    • HandleArcMove: Simulates circular arc movements (G2, G3).
  • Toolpath Recording:

    • Positions are recorded during movement and passed to the LineRenderer for visualization.

Example

Sample G-Code Input (test.cnc)

G21; Set units to millimetersG90; Absolute positioningG0X10Y10 Z0 ; Rapid moveG1X20Y20 Z-5 F800; Linear move with feed rateG2X30Y30I10J0; Clockwise arc

Result in Unity

  • The cylinder moves along a defined path while leaving a visual trail representing its trajectory.

Customization

  • Scaling Factor: Adjust the SCALE variable to modify how real-world units map to Unity units.
  • Feed Rate: Modify feed rate behavior by adjusting lastFeedRate.
  • Visualization Style: Customize the appearance of the toolpath by tweaking LineRenderer properties.

License

This project is licensed under the MIT License. See LICENSE for details.


Acknowledgments

Special thanks to contributors and libraries used in this project, including any external G-code parsers integrated into this implementation.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

29 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

G-code Visualizer for Unity

This repository contains a Unity project that reads G-code files, simulates the movement of an end mill (cylindrical cutting tool), and visualizes the toolpath generated by the G-code. The project is implemented using C# and Unity's built-in features like LineRenderer.


Features

  • G-code Parsing: Reads and interprets G-code commands to control the movement of the end mill.
  • Toolpath Visualization: Displays the trajectory of the end mill using Unity's LineRenderer.
  • Coordinate Transformation: Converts between G-code coordinates and Unity's coordinate system.
  • Modal State Management: Handles G-code modal states, including absolute/relative positioning, plane selection, and feed rate adjustments.
  • Linear and Arc Motion Support: Simulates both linear (G0, G1) and arc (G2, G3) movements.

Requirements

  • Unity Version: Unity 6 or later
  • Dependencies:
    • A G-code parser library (GenericGCodeParser) is used to interpret G-code files. Ensure it is included in your project.

How It Works

  1. Load a G-Code File:

    • Specify the path to your G-code file in the gcodeFilePath variable (default: Assets/gcode/test.cnc).
  2. Simulate End Mill Movement:

    • The script reads the G-code file line by line and moves a cylindrical object in Unity according to the parsed commands.
  3. Visualize Toolpath:

    • The trajectory of the end mill is recorded and displayed using Unity's LineRenderer.
  4. Coordinate Conversion:

    • Converts between Unity's coordinate system (X, Y, Z) and G-code's coordinate system (X, Z, Y) with scaling.

Usage

  1. Clone this repository into your Unity project's Assets folder.
  2. Attach the EndmillMover script to a GameObject representing the end mill (e.g., a cylinder).
  3. Add a LineRenderer component to the same GameObject for toolpath visualization.
  4. Place your G-code file in the specified path (Assets/gcode/test.cnc by default).
  5. Play the scene in Unity to see the end mill move along the toolpath defined by the G-code.

Code Overview

Key Components

  • EndmillMover Script:

    • Core logic for parsing G-code, controlling object movement, and visualizing toolpaths.
  • Coordinate Conversion:

    • ConvertToUnityCoordinates: Converts G-code coordinates to Unity's coordinate system.
    • ConvertToGCodeCoordinates: Converts Unity coordinates back to G-code format.
  • Motion Handlers:

    • HandleLinearMove: Simulates linear movements (G0, G1).
    • HandleArcMove: Simulates circular arc movements (G2, G3).
  • Toolpath Recording:

    • Positions are recorded during movement and passed to the LineRenderer for visualization.

Example

Sample G-Code Input (test.cnc)

G21; Set units to millimetersG90; Absolute positioningG0X10Y10 Z0 ; Rapid moveG1X20Y20 Z-5 F800; Linear move with feed rateG2X30Y30I10J0; Clockwise arc

Result in Unity

  • The cylinder moves along a defined path while leaving a visual trail representing its trajectory.

Customization

  • Scaling Factor: Adjust the SCALE variable to modify how real-world units map to Unity units.
  • Feed Rate: Modify feed rate behavior by adjusting lastFeedRate.
  • Visualization Style: Customize the appearance of the toolpath by tweaking LineRenderer properties.

License

This project is licensed under the MIT License. See LICENSE for details.


Acknowledgments

Special thanks to contributors and libraries used in this project, including any external G-code parsers integrated into this implementation.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

29 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

G-code Visualizer for Unity

This repository contains a Unity project that reads G-code files, simulates the movement of an end mill (cylindrical cutting tool), and visualizes the toolpath generated by the G-code. The project is implemented using C# and Unity's built-in features like LineRenderer.


Features

  • G-code Parsing: Reads and interprets G-code commands to control the movement of the end mill.
  • Toolpath Visualization: Displays the trajectory of the end mill using Unity's LineRenderer.
  • Coordinate Transformation: Converts between G-code coordinates and Unity's coordinate system.
  • Modal State Management: Handles G-code modal states, including absolute/relative positioning, plane selection, and feed rate adjustments.
  • Linear and Arc Motion Support: Simulates both linear (G0, G1) and arc (G2, G3) movements.

Requirements

  • Unity Version: Unity 6 or later
  • Dependencies:
    • A G-code parser library (GenericGCodeParser) is used to interpret G-code files. Ensure it is included in your project.

How It Works

  1. Load a G-Code File:

    • Specify the path to your G-code file in the gcodeFilePath variable (default: Assets/gcode/test.cnc).
  2. Simulate End Mill Movement:

    • The script reads the G-code file line by line and moves a cylindrical object in Unity according to the parsed commands.
  3. Visualize Toolpath:

    • The trajectory of the end mill is recorded and displayed using Unity's LineRenderer.
  4. Coordinate Conversion:

    • Converts between Unity's coordinate system (X, Y, Z) and G-code's coordinate system (X, Z, Y) with scaling.

Usage

  1. Clone this repository into your Unity project's Assets folder.
  2. Attach the EndmillMover script to a GameObject representing the end mill (e.g., a cylinder).
  3. Add a LineRenderer component to the same GameObject for toolpath visualization.
  4. Place your G-code file in the specified path (Assets/gcode/test.cnc by default).
  5. Play the scene in Unity to see the end mill move along the toolpath defined by the G-code.

Code Overview

Key Components

  • EndmillMover Script:

    • Core logic for parsing G-code, controlling object movement, and visualizing toolpaths.
  • Coordinate Conversion:

    • ConvertToUnityCoordinates: Converts G-code coordinates to Unity's coordinate system.
    • ConvertToGCodeCoordinates: Converts Unity coordinates back to G-code format.
  • Motion Handlers:

    • HandleLinearMove: Simulates linear movements (G0, G1).
    • HandleArcMove: Simulates circular arc movements (G2, G3).
  • Toolpath Recording:

    • Positions are recorded during movement and passed to the LineRenderer for visualization.

Example

Sample G-Code Input (test.cnc)

G21; Set units to millimetersG90; Absolute positioningG0X10Y10 Z0 ; Rapid moveG1X20Y20 Z-5 F800; Linear move with feed rateG2X30Y30I10J0; Clockwise arc

Result in Unity

  • The cylinder moves along a defined path while leaving a visual trail representing its trajectory.

Customization

  • Scaling Factor: Adjust the SCALE variable to modify how real-world units map to Unity units.
  • Feed Rate: Modify feed rate behavior by adjusting lastFeedRate.
  • Visualization Style: Customize the appearance of the toolpath by tweaking LineRenderer properties.

License

This project is licensed under the MIT License. See LICENSE for details.


Acknowledgments

Special thanks to contributors and libraries used in this project, including any external G-code parsers integrated into this implementation.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Latest commit

History

29 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

G-code Visualizer for Unity

This repository contains a Unity project that reads G-code files, simulates the movement of an end mill (cylindrical cutting tool), and visualizes the toolpath generated by the G-code. The project is implemented using C# and Unity's built-in features like LineRenderer.


Features

  • G-code Parsing: Reads and interprets G-code commands to control the movement of the end mill.
  • Toolpath Visualization: Displays the trajectory of the end mill using Unity's LineRenderer.
  • Coordinate Transformation: Converts between G-code coordinates and Unity's coordinate system.
  • Modal State Management: Handles G-code modal states, including absolute/relative positioning, plane selection, and feed rate adjustments.
  • Linear and Arc Motion Support: Simulates both linear (G0, G1) and arc (G2, G3) movements.

Requirements

  • Unity Version: Unity 6 or later
  • Dependencies:
    • A G-code parser library (GenericGCodeParser) is used to interpret G-code files. Ensure it is included in your project.

How It Works

  1. Load a G-Code File:

    • Specify the path to your G-code file in the gcodeFilePath variable (default: Assets/gcode/test.cnc).
  2. Simulate End Mill Movement:

    • The script reads the G-code file line by line and moves a cylindrical object in Unity according to the parsed commands.
  3. Visualize Toolpath:

    • The trajectory of the end mill is recorded and displayed using Unity's LineRenderer.
  4. Coordinate Conversion:

    • Converts between Unity's coordinate system (X, Y, Z) and G-code's coordinate system (X, Z, Y) with scaling.

Usage

  1. Clone this repository into your Unity project's Assets folder.
  2. Attach the EndmillMover script to a GameObject representing the end mill (e.g., a cylinder).
  3. Add a LineRenderer component to the same GameObject for toolpath visualization.
  4. Place your G-code file in the specified path (Assets/gcode/test.cnc by default).
  5. Play the scene in Unity to see the end mill move along the toolpath defined by the G-code.

Code Overview

Key Components

  • EndmillMover Script:

    • Core logic for parsing G-code, controlling object movement, and visualizing toolpaths.
  • Coordinate Conversion:

    • ConvertToUnityCoordinates: Converts G-code coordinates to Unity's coordinate system.
    • ConvertToGCodeCoordinates: Converts Unity coordinates back to G-code format.
  • Motion Handlers:

    • HandleLinearMove: Simulates linear movements (G0, G1).
    • HandleArcMove: Simulates circular arc movements (G2, G3).
  • Toolpath Recording:

    • Positions are recorded during movement and passed to the LineRenderer for visualization.

Example

Sample G-Code Input (test.cnc)

G21; Set units to millimetersG90; Absolute positioningG0X10Y10 Z0 ; Rapid moveG1X20Y20 Z-5 F800; Linear move with feed rateG2X30Y30I10J0; Clockwise arc

Result in Unity

  • The cylinder moves along a defined path while leaving a visual trail representing its trajectory.

Customization

  • Scaling Factor: Adjust the SCALE variable to modify how real-world units map to Unity units.
  • Feed Rate: Modify feed rate behavior by adjusting lastFeedRate.
  • Visualization Style: Customize the appearance of the toolpath by tweaking LineRenderer properties.

License

This project is licensed under the MIT License. See LICENSE for details.


Acknowledgments

Special thanks to contributors and libraries used in this project, including any external G-code parsers integrated into this implementation.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

29 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

G-code Visualizer for Unity

This repository contains a Unity project that reads G-code files, simulates the movement of an end mill (cylindrical cutting tool), and visualizes the toolpath generated by the G-code. The project is implemented using C# and Unity's built-in features like LineRenderer.


Features

  • G-code Parsing: Reads and interprets G-code commands to control the movement of the end mill.
  • Toolpath Visualization: Displays the trajectory of the end mill using Unity's LineRenderer.
  • Coordinate Transformation: Converts between G-code coordinates and Unity's coordinate system.
  • Modal State Management: Handles G-code modal states, including absolute/relative positioning, plane selection, and feed rate adjustments.
  • Linear and Arc Motion Support: Simulates both linear (G0, G1) and arc (G2, G3) movements.

Requirements

  • Unity Version: Unity 6 or later
  • Dependencies:
    • A G-code parser library (GenericGCodeParser) is used to interpret G-code files. Ensure it is included in your project.

How It Works

  1. Load a G-Code File:

    • Specify the path to your G-code file in the gcodeFilePath variable (default: Assets/gcode/test.cnc).
  2. Simulate End Mill Movement:

    • The script reads the G-code file line by line and moves a cylindrical object in Unity according to the parsed commands.
  3. Visualize Toolpath:

    • The trajectory of the end mill is recorded and displayed using Unity's LineRenderer.
  4. Coordinate Conversion:

    • Converts between Unity's coordinate system (X, Y, Z) and G-code's coordinate system (X, Z, Y) with scaling.

Usage

  1. Clone this repository into your Unity project's Assets folder.
  2. Attach the EndmillMover script to a GameObject representing the end mill (e.g., a cylinder).
  3. Add a LineRenderer component to the same GameObject for toolpath visualization.
  4. Place your G-code file in the specified path (Assets/gcode/test.cnc by default).
  5. Play the scene in Unity to see the end mill move along the toolpath defined by the G-code.

Code Overview

Key Components

  • EndmillMover Script:

    • Core logic for parsing G-code, controlling object movement, and visualizing toolpaths.
  • Coordinate Conversion:

    • ConvertToUnityCoordinates: Converts G-code coordinates to Unity's coordinate system.
    • ConvertToGCodeCoordinates: Converts Unity coordinates back to G-code format.
  • Motion Handlers:

    • HandleLinearMove: Simulates linear movements (G0, G1).
    • HandleArcMove: Simulates circular arc movements (G2, G3).
  • Toolpath Recording:

    • Positions are recorded during movement and passed to the LineRenderer for visualization.

Example

Sample G-Code Input (test.cnc)

G21; Set units to millimetersG90; Absolute positioningG0X10Y10 Z0 ; Rapid moveG1X20Y20 Z-5 F800; Linear move with feed rateG2X30Y30I10J0; Clockwise arc

Result in Unity

  • The cylinder moves along a defined path while leaving a visual trail representing its trajectory.

Customization

  • Scaling Factor: Adjust the SCALE variable to modify how real-world units map to Unity units.
  • Feed Rate: Modify feed rate behavior by adjusting lastFeedRate.
  • Visualization Style: Customize the appearance of the toolpath by tweaking LineRenderer properties.

License

This project is licensed under the MIT License. See LICENSE for details.


Acknowledgments

Special thanks to contributors and libraries used in this project, including any external G-code parsers integrated into this implementation.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

29 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

G-code Visualizer for Unity

This repository contains a Unity project that reads G-code files, simulates the movement of an end mill (cylindrical cutting tool), and visualizes the toolpath generated by the G-code. The project is implemented using C# and Unity's built-in features like LineRenderer.


Features

  • G-code Parsing: Reads and interprets G-code commands to control the movement of the end mill.
  • Toolpath Visualization: Displays the trajectory of the end mill using Unity's LineRenderer.
  • Coordinate Transformation: Converts between G-code coordinates and Unity's coordinate system.
  • Modal State Management: Handles G-code modal states, including absolute/relative positioning, plane selection, and feed rate adjustments.
  • Linear and Arc Motion Support: Simulates both linear (G0, G1) and arc (G2, G3) movements.

Requirements

  • Unity Version: Unity 6 or later
  • Dependencies:
    • A G-code parser library (GenericGCodeParser) is used to interpret G-code files. Ensure it is included in your project.

How It Works

  1. Load a G-Code File:

    • Specify the path to your G-code file in the gcodeFilePath variable (default: Assets/gcode/test.cnc).
  2. Simulate End Mill Movement:

    • The script reads the G-code file line by line and moves a cylindrical object in Unity according to the parsed commands.
  3. Visualize Toolpath:

    • The trajectory of the end mill is recorded and displayed using Unity's LineRenderer.
  4. Coordinate Conversion:

    • Converts between Unity's coordinate system (X, Y, Z) and G-code's coordinate system (X, Z, Y) with scaling.

Usage

  1. Clone this repository into your Unity project's Assets folder.
  2. Attach the EndmillMover script to a GameObject representing the end mill (e.g., a cylinder).
  3. Add a LineRenderer component to the same GameObject for toolpath visualization.
  4. Place your G-code file in the specified path (Assets/gcode/test.cnc by default).
  5. Play the scene in Unity to see the end mill move along the toolpath defined by the G-code.

Code Overview

Key Components

  • EndmillMover Script:

    • Core logic for parsing G-code, controlling object movement, and visualizing toolpaths.
  • Coordinate Conversion:

    • ConvertToUnityCoordinates: Converts G-code coordinates to Unity's coordinate system.
    • ConvertToGCodeCoordinates: Converts Unity coordinates back to G-code format.
  • Motion Handlers:

    • HandleLinearMove: Simulates linear movements (G0, G1).
    • HandleArcMove: Simulates circular arc movements (G2, G3).
  • Toolpath Recording:

    • Positions are recorded during movement and passed to the LineRenderer for visualization.

Example

Sample G-Code Input (test.cnc)

G21; Set units to millimetersG90; Absolute positioningG0X10Y10 Z0 ; Rapid moveG1X20Y20 Z-5 F800; Linear move with feed rateG2X30Y30I10J0; Clockwise arc

Result in Unity

  • The cylinder moves along a defined path while leaving a visual trail representing its trajectory.

Customization

  • Scaling Factor: Adjust the SCALE variable to modify how real-world units map to Unity units.
  • Feed Rate: Modify feed rate behavior by adjusting lastFeedRate.
  • Visualization Style: Customize the appearance of the toolpath by tweaking LineRenderer properties.

License

This project is licensed under the MIT License. See LICENSE for details.


Acknowledgments

Special thanks to contributors and libraries used in this project, including any external G-code parsers integrated into this implementation.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Latest commit

History

29 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

G-code Visualizer for Unity

This repository contains a Unity project that reads G-code files, simulates the movement of an end mill (cylindrical cutting tool), and visualizes the toolpath generated by the G-code. The project is implemented using C# and Unity's built-in features like LineRenderer.


Features

  • G-code Parsing: Reads and interprets G-code commands to control the movement of the end mill.
  • Toolpath Visualization: Displays the trajectory of the end mill using Unity's LineRenderer.
  • Coordinate Transformation: Converts between G-code coordinates and Unity's coordinate system.
  • Modal State Management: Handles G-code modal states, including absolute/relative positioning, plane selection, and feed rate adjustments.
  • Linear and Arc Motion Support: Simulates both linear (G0, G1) and arc (G2, G3) movements.

Requirements

  • Unity Version: Unity 6 or later
  • Dependencies:
    • A G-code parser library (GenericGCodeParser) is used to interpret G-code files. Ensure it is included in your project.

How It Works

  1. Load a G-Code File:

    • Specify the path to your G-code file in the gcodeFilePath variable (default: Assets/gcode/test.cnc).
  2. Simulate End Mill Movement:

    • The script reads the G-code file line by line and moves a cylindrical object in Unity according to the parsed commands.
  3. Visualize Toolpath:

    • The trajectory of the end mill is recorded and displayed using Unity's LineRenderer.
  4. Coordinate Conversion:

    • Converts between Unity's coordinate system (X, Y, Z) and G-code's coordinate system (X, Z, Y) with scaling.

Usage

  1. Clone this repository into your Unity project's Assets folder.
  2. Attach the EndmillMover script to a GameObject representing the end mill (e.g., a cylinder).
  3. Add a LineRenderer component to the same GameObject for toolpath visualization.
  4. Place your G-code file in the specified path (Assets/gcode/test.cnc by default).
  5. Play the scene in Unity to see the end mill move along the toolpath defined by the G-code.

Code Overview

Key Components

  • EndmillMover Script:

    • Core logic for parsing G-code, controlling object movement, and visualizing toolpaths.
  • Coordinate Conversion:

    • ConvertToUnityCoordinates: Converts G-code coordinates to Unity's coordinate system.
    • ConvertToGCodeCoordinates: Converts Unity coordinates back to G-code format.
  • Motion Handlers:

    • HandleLinearMove: Simulates linear movements (G0, G1).
    • HandleArcMove: Simulates circular arc movements (G2, G3).
  • Toolpath Recording:

    • Positions are recorded during movement and passed to the LineRenderer for visualization.

Example

Sample G-Code Input (test.cnc)

G21; Set units to millimetersG90; Absolute positioningG0X10Y10 Z0 ; Rapid moveG1X20Y20 Z-5 F800; Linear move with feed rateG2X30Y30I10J0; Clockwise arc

Result in Unity

  • The cylinder moves along a defined path while leaving a visual trail representing its trajectory.

Customization

  • Scaling Factor: Adjust the SCALE variable to modify how real-world units map to Unity units.
  • Feed Rate: Modify feed rate behavior by adjusting lastFeedRate.
  • Visualization Style: Customize the appearance of the toolpath by tweaking LineRenderer properties.

License

This project is licensed under the MIT License. See LICENSE for details.


Acknowledgments

Special thanks to contributors and libraries used in this project, including any external G-code parsers integrated into this implementation.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages