@@ -333,7 +333,7 @@ endsolid name`
333
333
for ( var obj of VRCube . cube . ElemZs ) {
334
334
segList . push ( {
335
335
pixelData : obj . imgData ,
336
- PositionZ : obj . position . z
336
+ PositionZ : parseInt ( obj . originPositionZ )
337
337
} ) ;
338
338
}
339
339
@@ -388,16 +388,20 @@ endsolid name`
388
388
389
389
//針對第一面和最後一面
390
390
for ( var p0 = 0 ; p0 < segList . length ; p0 ++ ) {
391
+
392
+ //如果選擇空心,非0層就直接跳最後一層
393
+ if ( getByid ( "VR2_STLCheck" ) . checked ) {
394
+ if ( p0 != 0 ) p0 = segList . length - 1 ;
395
+ }
396
+
391
397
var seg0 = segList [ p0 ] ;
392
- //if (p0 == 0) var seg0 = segList[0];
393
- //else var seg0 = segList[segList.length - 1];
394
398
var pixel = seg0 . pixelData ;
395
399
//左到右
396
400
for ( var h = 1 ; h < height - 1 ; h += 1 ) {
397
401
for ( var w = 1 ; w < width ; w ++ ) {
398
- if ( pixel [ h * width + w ] != 0 && pixel [ h * width + w - 1 ] == 0 ) {
402
+ if ( pixel [ h * width + w ] > 0xFF000000 && pixel [ h * width + w - 1 ] <= 0xFF000000 ) {
399
403
for ( var w2 = w ; w2 < width ; w2 ++ ) {
400
- if ( pixel [ h * width + w2 ] == 0 && pixel [ h * width + w2 - 1 ] != 0 ) {
404
+ if ( pixel [ h * width + w2 ] <= 0xFF000000 && pixel [ h * width + w2 - 1 ] > 0xFF000000 ) {
401
405
pushIntters (
402
406
h , w , seg0 . PositionZ ,
403
407
h + 1 , w , seg0 . PositionZ ,
@@ -428,9 +432,9 @@ endsolid name`
428
432
//上到下
429
433
for ( var w = 1 ; w < width ; w += 1 ) {
430
434
for ( var h = 1 ; h < height ; h ++ ) {
431
- if ( pixel [ h * width + w ] != 0 && pixel [ ( h - 1 ) * width + w ] == 0 ) {
435
+ if ( pixel [ h * width + w ] > 0xFF000000 && pixel [ ( h - 1 ) * width + w ] <= 0xFF000000 ) {
432
436
for ( var h2 = h ; h2 < height ; h2 ++ ) {
433
- if ( pixel [ h2 * width + w ] == 0 && pixel [ ( h2 - 1 ) * width + w ] != 0 ) {
437
+ if ( pixel [ h2 * width + w ] <= 0xFF000000 && pixel [ ( h2 - 1 ) * width + w ] > 0xFF000000 ) {
434
438
pushIntters (
435
439
h , w , seg0 . PositionZ ,
436
440
h , w + 1 , seg0 . PositionZ ,
@@ -467,7 +471,7 @@ endsolid name`
467
471
var pixel = seg1 . pixelData ;
468
472
for ( var h = 0 ; h < height ; h += 5 ) {
469
473
for ( var w = 1 ; w < width ; w ++ ) {
470
- if ( pixel [ h * width + w ] != 0 && pixel [ h * width + w - 1 ] == 0 ) {
474
+ if ( pixel [ h * width + w ] > 0xFF000000 && pixel [ h * width + w - 1 ] <= 0xFF000000 ) {
471
475
pointlist1 . push ( [ h , w ] ) ;
472
476
break ;
473
477
}
@@ -478,7 +482,7 @@ endsolid name`
478
482
var pixel = seg2 . pixelData ;
479
483
for ( var h = 0 ; h < height ; h += 5 ) {
480
484
for ( var w = 1 ; w < width ; w ++ ) {
481
- if ( pixel [ h * width + w ] != 0 && pixel [ h * width + w - 1 ] == 0 ) {
485
+ if ( pixel [ h * width + w ] > 0xFF000000 && pixel [ h * width + w - 1 ] <= 0xFF000000 ) {
482
486
pointlist2 . push ( [ h , w ] ) ;
483
487
break ;
484
488
}
@@ -494,7 +498,7 @@ endsolid name`
494
498
var pixel = seg1 . pixelData ;
495
499
for ( var h = 0 ; h < height ; h += 5 ) {
496
500
for ( var w = width - 2 ; w > 0 ; w -- ) {
497
- if ( pixel [ h * width + w ] != 0 && pixel [ h * width + w + 1 ] == 0 ) {
501
+ if ( pixel [ h * width + w ] > 0xFF000000 && pixel [ h * width + w + 1 ] <= 0xFF000000 ) {
498
502
pointlist1 . push ( [ h , w ] ) ;
499
503
break ;
500
504
}
@@ -505,7 +509,7 @@ endsolid name`
505
509
var pixel = seg2 . pixelData ;
506
510
for ( var h = 0 ; h < height ; h += 5 ) {
507
511
for ( var w = width - 2 ; w > 0 ; w -- ) {
508
- if ( pixel [ h * width + w ] != 0 && pixel [ h * width + w + 1 ] == 0 ) {
512
+ if ( pixel [ h * width + w ] > 0xFF000000 && pixel [ h * width + w + 1 ] <= 0xFF000000 ) {
509
513
pointlist2 . push ( [ h , w ] ) ;
510
514
break ;
511
515
}
@@ -522,7 +526,7 @@ endsolid name`
522
526
var pixel = seg1 . pixelData ;
523
527
for ( var w = 0 ; w < width ; w += 5 ) {
524
528
for ( var h = 1 ; h < height ; h ++ ) {
525
- if ( pixel [ h * width + w ] != 0 && pixel [ ( h - 1 ) * width + w ] == 0 ) {
529
+ if ( pixel [ h * width + w ] > 0xFF000000 && pixel [ ( h - 1 ) * width + w ] <= 0xFF000000 ) {
526
530
pointlist1 . push ( [ h , w ] ) ;
527
531
break ;
528
532
}
@@ -533,7 +537,7 @@ endsolid name`
533
537
var pixel = seg2 . pixelData ;
534
538
for ( var w = 0 ; w < width ; w += 5 ) {
535
539
for ( var h = 1 ; h < height ; h ++ ) {
536
- if ( pixel [ h * width + w ] != 0 && pixel [ ( h - 1 ) * width + w ] == 0 ) {
540
+ if ( pixel [ h * width + w ] > 0xFF000000 && pixel [ ( h - 1 ) * width + w ] <= 0xFF000000 ) {
537
541
pointlist2 . push ( [ h , w ] ) ;
538
542
break ;
539
543
}
@@ -549,7 +553,7 @@ endsolid name`
549
553
var pixel = seg1 . pixelData ;
550
554
for ( var w = 0 ; w < width ; w += 5 ) {
551
555
for ( var h = height - 2 ; h > 0 ; h -- ) {
552
- if ( pixel [ h * width + w ] != 0 && pixel [ ( h + 1 ) * width + w ] == 0 ) {
556
+ if ( pixel [ h * width + w ] > 0xFF000000 && pixel [ ( h + 1 ) * width + w ] <= 0xFF000000 ) {
553
557
pointlist1 . push ( [ h , w ] ) ;
554
558
break ;
555
559
}
@@ -560,7 +564,7 @@ endsolid name`
560
564
var pixel = seg2 . pixelData ;
561
565
for ( var w = 0 ; w < width ; w += 5 ) {
562
566
for ( var h = height - 2 ; h > 0 ; h -- ) {
563
- if ( pixel [ h * width + w ] != 0 && pixel [ ( h + 1 ) * width + w ] == 0 ) {
567
+ if ( pixel [ h * width + w ] > 0xFF000000 && pixel [ ( h + 1 ) * width + w ] <= 0xFF000000 ) {
564
568
pointlist2 . push ( [ h , w ] ) ;
565
569
break ;
566
570
}
@@ -1080,7 +1084,24 @@ endsolid name`
1080
1084
span . appendChild ( ReduceSliceLable ) ;
1081
1085
userDIV . appendChild ( span ) ;
1082
1086
1083
-
1087
+ //////////STL//////////
1088
+ var span = document . createElement ( "span" ) ;
1089
+ span . style [ 'zIndex' ] = "490" ;
1090
+ span . style [ 'float' ] = "right" ;
1091
+ var STLLable = document . createElement ( "LABEL" ) ;
1092
+ STLLable . innerText = "Download as hollow STL model" ;
1093
+ STLLable . className = "VR2_Label" ;
1094
+ STLLable . style . float = "left" ;
1095
+
1096
+ var STLCheck = document . createElement ( "input" ) ;
1097
+ STLCheck . style = "z-index: 490;float:left" ;
1098
+ STLCheck . type = "checkbox" ;
1099
+ STLCheck . id = "VR2_STLCheck" ;
1100
+ STLCheck . setAttribute ( "checked" , "checked" ) ;
1101
+
1102
+ span . appendChild ( STLCheck ) ;
1103
+ span . appendChild ( STLLable ) ;
1104
+ userDIV . appendChild ( span ) ;
1084
1105
//////////Perspective//////////
1085
1106
var span = document . createElement ( "span" ) ;
1086
1107
span . style [ 'zIndex' ] = "490" ;
@@ -1263,6 +1284,7 @@ endsolid name`
1263
1284
1264
1285
NewCanvas . position = new Point3D ( 0 , 0 , 0 ) ;
1265
1286
NewCanvas . position . z = parseFloat ( SOP . Image . data . string ( Tag . ImagePositionPatient ) . split ( "\\" ) [ 2 ] ) * ( 1 / ( parseFloat ( SOP . Image . rowPixelSpacing ) ) ) ;
1287
+ NewCanvas . originPositionZ = NewCanvas . position . z ;
1266
1288
NewCanvas . direction = 'z' ;
1267
1289
1268
1290
var Matrix = multiplyMatrices ( getTranslateMatrix ( 0 , 0 , ( NewCanvas . position . z / step ) ) , [ 1 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 1 ] ) ;
0 commit comments