@@ -29,7 +29,7 @@ import {
2929
3030import { ExtrusionGeometry } from './extrusion-geometry' ;
3131
32- type RenderLayer = { extrusion : number [ ] ; travel : number [ ] ; z : number } ;
32+ type RenderLayer = { extrusion : number [ ] ; travel : number [ ] ; z : number ; height : number } ;
3333type GVector3 = {
3434 x : number ;
3535 y : number ;
@@ -61,6 +61,7 @@ export type GCodePreviewOptions = {
6161 initialCameraPosition ?: number [ ] ;
6262 lastSegmentColor ?: ColorRepresentation ;
6363 lineWidth ?: number ;
64+ lineHeight ?: number ;
6465 nonTravelMoves ?: string [ ] ;
6566 minLayerThreshold ?: number ;
6667 renderExtrusion ?: boolean ;
@@ -96,6 +97,7 @@ export class WebGLPreview {
9697 renderTubes = false ;
9798 extrusionWidth = 0.6 ;
9899 lineWidth ?: number ;
100+ lineHeight ?: number ;
99101 startLayer ?: number ;
100102 endLayer ?: number ;
101103 singleLayerMode = false ;
@@ -134,6 +136,7 @@ export class WebGLPreview {
134136 this . endLayer = opts . endLayer ;
135137 this . startLayer = opts . startLayer ;
136138 this . lineWidth = opts . lineWidth ;
139+ this . lineHeight = opts . lineHeight ;
137140 this . buildVolume = opts . buildVolume ;
138141 this . initialCameraPosition = opts . initialCameraPosition ?? this . initialCameraPosition ;
139142 this . debug = opts . debug ?? this . debug ;
@@ -341,13 +344,15 @@ export class WebGLPreview {
341344
342345 renderLayer ( index : number ) : void {
343346 if ( index > this . maxLayerIndex ) return ;
347+ const l = this . layers [ index ] ;
344348
345349 const currentLayer : RenderLayer = {
346350 extrusion : [ ] ,
347351 travel : [ ] ,
348- z : this . state . z
352+ z : this . state . z ,
353+ height : l . height
349354 } ;
350- const l = this . layers [ index ] ;
355+
351356 for ( const cmd of l . commands ) {
352357 if ( cmd . gcode == 'g20' ) {
353358 this . setInches ( ) ;
@@ -421,15 +426,15 @@ export class WebGLPreview {
421426 const endPoint = layer . extrusion . splice ( - 3 ) ;
422427 const preendPoint = layer . extrusion . splice ( - 3 ) ;
423428 if ( this . renderTubes ) {
424- this . addTubeLine ( layer . extrusion , layerColor . getHex ( ) ) ;
425- this . addTubeLine ( [ ...preendPoint , ...endPoint ] , lastSegmentColor . getHex ( ) ) ;
429+ this . addTubeLine ( layer . extrusion , layerColor . getHex ( ) , layer . height ) ;
430+ this . addTubeLine ( [ ...preendPoint , ...endPoint ] , lastSegmentColor . getHex ( ) , layer . height ) ;
426431 } else {
427432 this . addLine ( layer . extrusion , layerColor . getHex ( ) ) ;
428433 this . addLine ( [ ...preendPoint , ...endPoint ] , lastSegmentColor . getHex ( ) ) ;
429434 }
430435 } else {
431436 if ( this . renderTubes ) {
432- this . addTubeLine ( layer . extrusion , extrusionColor . getHex ( ) ) ;
437+ this . addTubeLine ( layer . extrusion , extrusionColor . getHex ( ) , layer . height ) ;
433438 } else {
434439 this . addLine ( layer . extrusion , extrusionColor . getHex ( ) ) ;
435440 }
@@ -598,7 +603,7 @@ export class WebGLPreview {
598603 this . group ?. add ( lineSegments ) ;
599604 }
600605
601- addTubeLine ( vertices : number [ ] , color : number ) : void {
606+ addTubeLine ( vertices : number [ ] , color : number , layerHeight = 0.2 ) : void {
602607 let curvePoints : Vector3 [ ] = [ ] ;
603608 const extrusionPaths : Vector3 [ ] [ ] = [ ] ;
604609
@@ -619,7 +624,7 @@ export class WebGLPreview {
619624 }
620625
621626 extrusionPaths . forEach ( ( extrusionPath ) => {
622- const geometry = new ExtrusionGeometry ( extrusionPath , this . extrusionWidth , 0.2 , 4 ) ;
627+ const geometry = new ExtrusionGeometry ( extrusionPath , this . extrusionWidth , this . lineHeight || layerHeight , 4 ) ;
623628 this . disposables . push ( geometry ) ;
624629
625630 const material = new MeshLambertMaterial ( { color : color } ) ;
0 commit comments