react-gcode-viewer
v2.2.4
Published
react component for visualizing GCodes in the browser using three.js
Downloads
372
Maintainers
Readme
react-gcode-viewer
React component for visualizing GCodes using Three.js.
Install
npm install --save react-gcode-vieweror
yarn add react-gcode-viewerUsage
import React from 'react';
import ReactDOM from 'react-dom';
import {GCodeViewer} from "react-gcode-viewer";
const url = "https://storage.googleapis.com/ucloud-v3/6127a7f9aa32f718b8c1ab4f.gcode"
const style = {
top: 0,
left: 0,
width: '100vw',
height: '100vh',
}
function App() {
return (
<GCodeViewer
orbitControls
showAxes
style={style}
url={url}
/>
);
}
ReactDOM.render(<App />, document.getElementById('root'));Demos
You can see working the examples from .storybook/stories here
Props
| Prop | Type | Required | Notes |
|-------------------------|:--------------------------------:|:--------:|:------------------------------------------------------------------------------------------------------------------------------------------------------------:|
| url | string | true | url of the GCode file |
| quality | number | false | (default 1) number between 0 and 1 specifying the render quality, for larger models it's recommended to lower this number, as it consumes a lot of resources |
| visible | number | false | (default 1) number between 0 and 1 specifying the percentage of visible layers |
| layerColor | string | false | (default "grey") layer color |
| topLayerColor | string | false | (default "hotpink") top layer color |
| showAxes | boolean | false | show x y z axis |
| orbitControls | boolean | false | enable camera orbit controls |
| cameraInitialPosition | CameraInitialPosition | false | set the initial position of the camera in geographic coordinates. The coordinates origin is the object itself |
| floorProps | FloorProps | false | floor properties, see below |
| reqOptions | RequestInit | false | fetch options for customizing the http query made for retrieving the GCode file, only valid if "url" is specified |
| onProgress | (p: GCodeParseProgress) => any | false | callback triggered on parsing progress |
| onFinishLoading | (p: GCodeParseProgress) => any | false | callback triggered when GCode is fully loaded |
| onError | (err: Error) => any | false | callback triggered when an error occurred while loading GCode |
| canvasId | string | false | id of the canvas element used for rendering the model |
The component also accepts <div/> props
Interfaces
FloorProps
| Prop | Type | Required | Notes |
|--------------|:--------:|:--------:|:----------------------------------------------------------------:|
| gridWidth | number | false | if specified, a grid will be drawn in the floor with this width |
| gridLength | number | false | if specified, a grid will be drawn in the floor with this length |
GCodeParseProgress
| Prop | Type | Notes |
|------------------|:-----------------------------------:|:---------------------------------------:|
| read | number | number of bytes read from the url |
| baseCenter | {x: number, y: number} | x, y center of the rendered gcode model |
| max | {x: number, y: number, z: number} | maximum coordinates of the gcode model |
| min | {x: number, y: number, z: number} | minimum coordinates of the gcode model |
| filamentLength | number | length of the filament used in mm |
CameraInitialPosition
| Prop | Type | Required | Notes |
|-------------|:--------:|:--------:|:------------------------------------------------------------------------------------------------------------------------------------------------:|
| latitude | number | true | camera's position latitude, it should be a number between - Math.PI / 2 and Math.PI / 2, if the number exceeds the limits it will be clamped |
| longitude | number | true | camera's position longitude, it should be a number between - Math.PI and Math.PI, if the number exceeds the limits it will be clamped |
| distance | number | true | the distance between the object and the camera |
