308 if ( !
gc.testElementGraphicActivity(
this) ) {
313 EASValsSetColor(
gc.getElementColor() );
314 EASValsSetEdgeColor(
gc.getElementEdgeColor() );
315 EASValsSetEdgeFlag(
true);
317 EASValsSetLineStyle(SOLID_STYLE);
318 EASValsSetFillStyle(FILL_SOLID);
333 for (
int j = 0; j < 2; j++ ) {
340 const IntArray *span = iRule->giveKnotSpan();
342 double du = ( knotVector [ 0 ] [ span->
at(1) + 1 ] - knotVector [ 0 ] [ span->
at(1) ] ) / nseg;
343 for (
int i = 1; i <= nseg; i++ ) {
344 c [ 0 ].
at(1) = knotVector [ 0 ] [ span->
at(1) ] + du * ( i - 1 );
345 c [ 1 ].
at(1) = knotVector [ 0 ] [ span->
at(1) ] + du * i;
347 for (
int k = 0; k < 2; k++ ) {
349 p [ k ].x = ( FPNum ) cg [ k ].at(1);
354 auto go = CreateLine3D(p);
355 EGWithMaskChangeAttributes(WIDTH_MASK | STYLE_MASK | COLOR_MASK | LAYER_MASK, go);
356 EGAttachObject(go, ( EObjectP )
this);
357 EMAddGraphicsToModel(ESIModel(), go);
360 }
else if ( nsd == 2 ) {
363 for (
int j = 0; j < 4; j++ ) {
370 const IntArray *span = iRule->giveKnotSpan();
372 double du = ( knotVector [ 0 ] [ span->
at(1) + 1 ] - knotVector [ 0 ] [ span->
at(1) ] ) / nseg;
373 double dv = ( knotVector [ 1 ] [ span->
at(2) + 1 ] - knotVector [ 1 ] [ span->
at(2) ] ) / nseg;
374 for (
int i = 1; i <= nseg; i++ ) {
375 for (
int j = 1; j <= nseg; j++ ) {
376 c [ 0 ].
at(1) = knotVector [ 0 ] [ span->
at(1) ] + du * ( i - 1 );
377 c [ 0 ].
at(2) = knotVector [ 1 ] [ span->
at(2) ] + dv * ( j - 1 );
378 c [ 1 ].
at(1) = knotVector [ 0 ] [ span->
at(1) ] + du * i;
379 c [ 1 ].
at(2) = knotVector [ 1 ] [ span->
at(2) ] + dv * ( j - 1 );
380 c [ 2 ].
at(1) = knotVector [ 0 ] [ span->
at(1) ] + du * i;
381 c [ 2 ].
at(2) = knotVector [ 1 ] [ span->
at(2) ] + dv * j;
382 c [ 3 ].
at(1) = knotVector [ 0 ] [ span->
at(1) ] + du * ( i - 1 );
383 c [ 3 ].
at(2) = knotVector [ 1 ] [ span->
at(2) ] + dv * j;
385 for (
int k = 0; k < 4; k++ ) {
387 p [ k ].x = ( FPNum ) cg [ k ].at(1);
388 p [ k ].y = ( FPNum ) cg [ k ].at(2);
394 pp [ 0 ].x = p [ 0 ].x;
395 pp [ 0 ].y = p [ 0 ].y;
396 pp [ 0 ].z = p [ 0 ].z;
398 pp [ 1 ].x = p [ 3 ].x;
399 pp [ 1 ].y = p [ 3 ].y;
400 pp [ 1 ].z = p [ 3 ].z;
402 auto go = CreateLine3D(pp);
403 EGWithMaskChangeAttributes(WIDTH_MASK | STYLE_MASK | COLOR_MASK | LAYER_MASK, go);
404 EGAttachObject(go, ( EObjectP )
this);
405 EMAddGraphicsToModel(ESIModel(), go);
409 pp [ 0 ].x = p [ 0 ].x;
410 pp [ 0 ].y = p [ 0 ].y;
411 pp [ 0 ].z = p [ 0 ].z;
413 pp [ 1 ].x = p [ 1 ].x;
414 pp [ 1 ].y = p [ 1 ].y;
415 pp [ 1 ].z = p [ 1 ].z;
417 auto go = CreateLine3D(pp);
418 EGWithMaskChangeAttributes(WIDTH_MASK | STYLE_MASK | COLOR_MASK | LAYER_MASK, go);
419 EGAttachObject(go, ( EObjectP )
this);
420 EMAddGraphicsToModel(ESIModel(), go);
424 pp [ 0 ].x = p [ 1 ].x;
425 pp [ 0 ].y = p [ 1 ].y;
426 pp [ 0 ].z = p [ 1 ].z;
428 pp [ 1 ].x = p [ 2 ].x;
429 pp [ 1 ].y = p [ 2 ].y;
430 pp [ 1 ].z = p [ 2 ].z;
432 auto go = CreateLine3D(pp);
433 EGWithMaskChangeAttributes(WIDTH_MASK | STYLE_MASK | COLOR_MASK | LAYER_MASK, go);
434 EGAttachObject(go, ( EObjectP )
this);
435 EMAddGraphicsToModel(ESIModel(), go);
439 pp [ 0 ].x = p [ 2 ].x;
440 pp [ 0 ].y = p [ 2 ].y;
441 pp [ 0 ].z = p [ 2 ].z;
443 pp [ 1 ].x = p [ 3 ].x;
444 pp [ 1 ].y = p [ 3 ].y;
445 pp [ 1 ].z = p [ 3 ].z;
447 auto go = CreateLine3D(pp);
448 EGWithMaskChangeAttributes(WIDTH_MASK | STYLE_MASK | COLOR_MASK | LAYER_MASK, go);
449 EGAttachObject(go, ( EObjectP )
this);
450 EMAddGraphicsToModel(ESIModel(), go);
454 auto go = CreateQuad3D(p);
455 EGWithMaskChangeAttributes(WIDTH_MASK | FILL_MASK | COLOR_MASK | EDGE_COLOR_MASK | EDGE_FLAG_MASK | LAYER_MASK, go);
456 EGAttachObject(go, ( EObjectP )
this);
457 EMAddGraphicsToModel(ESIModel(), go);
462 }
else if ( nsd == 3 ) {
465 for (
int j = 0; j < 8; j++ ) {
472 const IntArray *span = iRule->giveKnotSpan();
474 double du = ( knotVector [ 0 ] [ span->
at(1) + 1 ] - knotVector [ 0 ] [ span->
at(1) ] ) / nseg;
475 double dv = ( knotVector [ 1 ] [ span->
at(2) + 1 ] - knotVector [ 1 ] [ span->
at(2) ] ) / nseg;
476 double dt = ( knotVector [ 2 ] [ span->
at(3) + 1 ] - knotVector [ 2 ] [ span->
at(3) ] ) / nseg;
477 for (
int i = 1; i <= nseg; i++ ) {
478 for (
int j = 1; j <= nseg; j++ ) {
479 for (
int k = 1; k <= nseg; k++ ) {
480 c [ 0 ].
at(1) = knotVector [ 0 ] [ span->
at(1) ] + du * ( i - 1 );
481 c [ 0 ].
at(2) = knotVector [ 1 ] [ span->
at(2) ] + dv * ( j - 1 );
482 c [ 0 ].
at(3) = knotVector [ 2 ] [ span->
at(3) ] + dt * ( k - 1 );
483 c [ 1 ].
at(1) = knotVector [ 0 ] [ span->
at(1) ] + du * i;
484 c [ 1 ].
at(2) = knotVector [ 1 ] [ span->
at(2) ] + dv * ( j - 1 );
485 c [ 1 ].
at(3) = knotVector [ 2 ] [ span->
at(3) ] + dt * ( k - 1 );
486 c [ 2 ].
at(1) = knotVector [ 0 ] [ span->
at(1) ] + du * i;
487 c [ 2 ].
at(2) = knotVector [ 1 ] [ span->
at(2) ] + dv * j;
488 c [ 2 ].
at(3) = knotVector [ 2 ] [ span->
at(3) ] + dt * ( k - 1 );
489 c [ 3 ].
at(1) = knotVector [ 0 ] [ span->
at(1) ] + du * ( i - 1 );
490 c [ 3 ].
at(2) = knotVector [ 1 ] [ span->
at(2) ] + dv * j;
491 c [ 3 ].
at(3) = knotVector [ 2 ] [ span->
at(3) ] + dt * ( k - 1 );
492 c [ 4 ].
at(1) = knotVector [ 0 ] [ span->
at(1) ] + du * ( i - 1 );
493 c [ 4 ].
at(2) = knotVector [ 1 ] [ span->
at(2) ] + dv * ( j - 1 );
494 c [ 4 ].
at(3) = knotVector [ 2 ] [ span->
at(3) ] + dt * k;
495 c [ 5 ].
at(1) = knotVector [ 0 ] [ span->
at(1) ] + du * i;
496 c [ 5 ].
at(2) = knotVector [ 1 ] [ span->
at(2) ] + dv * ( j - 1 );
497 c [ 5 ].
at(3) = knotVector [ 2 ] [ span->
at(3) ] + dt * k;
498 c [ 6 ].
at(1) = knotVector [ 0 ] [ span->
at(1) ] + du * i;
499 c [ 6 ].
at(2) = knotVector [ 1 ] [ span->
at(2) ] + dv * j;
500 c [ 6 ].
at(3) = knotVector [ 2 ] [ span->
at(3) ] + dt * k;
501 c [ 7 ].
at(1) = knotVector [ 0 ] [ span->
at(1) ] + du * ( i - 1 );
502 c [ 7 ].
at(2) = knotVector [ 1 ] [ span->
at(2) ] + dv * j;
503 c [ 7 ].
at(3) = knotVector [ 2 ] [ span->
at(3) ] + dt * k;
505 for (
int m = 0; m < 8; m++ ) {
507 p [ m ].x = ( FPNum ) cg [ m ].at(1);
508 p [ m ].y = ( FPNum ) cg [ m ].at(2);
509 p [ m ].z = ( FPNum ) cg [ m ].at(3);
513 if ( i == 1 && j == 1 ) {
514 pp [ 0 ].x = p [ 0 ].x;
515 pp [ 0 ].y = p [ 0 ].y;
516 pp [ 0 ].z = p [ 0 ].z;
518 pp [ 1 ].x = p [ 4 ].x;
519 pp [ 1 ].y = p [ 4 ].y;
520 pp [ 1 ].z = p [ 4 ].z;
522 #ifdef DRAW_VISIBLE_CONTOUR
523 #ifdef SPHERE_WITH_HOLE
524 double xx = 0.0, yy = 0.0, zz = 0.0, rr, r;
525 for (
int ii = 0; ii < 2; ii++ ) {
533 rr = xx * xx + yy * yy;
536 if ( zz < 2.0001 || yy < 0.0001 || rr < 1.001 * 1.001 || r < 25.0 || r > 5.98 * 5.98 ) {
537 if ( zz < 2.0001 || rr < 1.001 * 1.001 || yy < 0.0001 ) {
538 auto go = CreateLine3D(pp);
539 EGWithMaskChangeAttributes(WIDTH_MASK | STYLE_MASK | COLOR_MASK | LAYER_MASK, go);
540 EGAttachObject(go, ( EObjectP )
this);
541 EMAddGraphicsToModel(ESIModel(), go);
546 auto go = CreateLine3D(pp);
547 EGWithMaskChangeAttributes(WIDTH_MASK | STYLE_MASK | COLOR_MASK | LAYER_MASK, go);
548 EGAttachObject(go, ( EObjectP )
this);
549 EMAddGraphicsToModel(ESIModel(), go);
553 if ( i == 1 && j == nseg ) {
554 pp [ 0 ].x = p [ 3 ].x;
555 pp [ 0 ].y = p [ 3 ].y;
556 pp [ 0 ].z = p [ 3 ].z;
558 pp [ 1 ].x = p [ 7 ].x;
559 pp [ 1 ].y = p [ 7 ].y;
560 pp [ 1 ].z = p [ 7 ].z;
562 #ifdef DRAW_VISIBLE_CONTOUR
563 #ifdef SPHERE_WITH_HOLE
564 double xx = 0.0, yy = 0.0, zz = 0.0, rr, r;
565 for (
int ii = 0; ii < 2; ii++ ) {
573 rr = xx * xx + yy * yy;
576 if ( zz < 2.0001 || yy < 0.0001 || rr < 1.001 * 1.001 || r < 25.0 || r > 5.98 * 5.98 ) {
577 if ( zz < 2.0001 || rr < 1.001 * 1.001 || yy < 0.0001 ) {
578 auto go = CreateLine3D(pp);
579 EGWithMaskChangeAttributes(WIDTH_MASK | STYLE_MASK | COLOR_MASK | LAYER_MASK, go);
580 EGAttachObject(go, ( EObjectP )
this);
581 EMAddGraphicsToModel(ESIModel(), go);
586 auto go = CreateLine3D(pp);
587 EGWithMaskChangeAttributes(WIDTH_MASK | STYLE_MASK | COLOR_MASK | LAYER_MASK, go);
588 EGAttachObject(go, ( EObjectP )
this);
589 EMAddGraphicsToModel(ESIModel(), go);
593 if ( i == nseg && j == 1 ) {
594 pp [ 0 ].x = p [ 1 ].x;
595 pp [ 0 ].y = p [ 1 ].y;
596 pp [ 0 ].z = p [ 1 ].z;
598 pp [ 1 ].x = p [ 5 ].x;
599 pp [ 1 ].y = p [ 5 ].y;
600 pp [ 1 ].z = p [ 5 ].z;
602 #ifdef DRAW_VISIBLE_CONTOUR
603 #ifdef SPHERE_WITH_HOLE
604 double xx = 0.0, yy = 0.0, zz = 0.0, rr, r;
605 for (
int ii = 0; ii < 2; ii++ ) {
613 rr = xx * xx + yy * yy;
616 if ( zz < 2.0001 || yy < 0.0001 || rr < 1.001 * 1.001 || r < 25.0 || r > 5.98 * 5.98 ) {
617 if ( zz < 2.0001 || rr < 1.001 * 1.001 || yy < 0.0001 ) {
618 auto go = CreateLine3D(pp);
619 EGWithMaskChangeAttributes(WIDTH_MASK | STYLE_MASK | COLOR_MASK | LAYER_MASK, go);
620 EGAttachObject(go, ( EObjectP )
this);
621 EMAddGraphicsToModel(ESIModel(), go);
626 auto go = CreateLine3D(pp);
627 EGWithMaskChangeAttributes(WIDTH_MASK | STYLE_MASK | COLOR_MASK | LAYER_MASK, go);
628 EGAttachObject(go, ( EObjectP )
this);
629 EMAddGraphicsToModel(ESIModel(), go);
633 if ( i == nseg && j == nseg ) {
634 pp [ 0 ].x = p [ 2 ].x;
635 pp [ 0 ].y = p [ 2 ].y;
636 pp [ 0 ].z = p [ 2 ].z;
638 pp [ 1 ].x = p [ 6 ].x;
639 pp [ 1 ].y = p [ 6 ].y;
640 pp [ 1 ].z = p [ 6 ].z;
642 #ifdef DRAW_VISIBLE_CONTOUR
643 #ifdef SPHERE_WITH_HOLE
644 double xx = 0.0, yy = 0.0, zz = 0.0, rr, r;
645 for (
int ii = 0; ii < 2; ii++ ) {
653 rr = xx * xx + yy * yy;
656 if ( zz < 2.0001 || yy < 0.0001 || rr < 1.001 * 1.001 || r < 25.0 || r > 5.98 * 5.98 ) {
657 if ( zz < 2.0001 || rr < 1.001 * 1.001 || yy < 0.0001 ) {
658 auto go = CreateLine3D(pp);
659 EGWithMaskChangeAttributes(WIDTH_MASK | STYLE_MASK | COLOR_MASK | LAYER_MASK, go);
660 EGAttachObject(go, ( EObjectP )
this);
661 EMAddGraphicsToModel(ESIModel(), go);
666 auto go = CreateLine3D(pp);
667 EGWithMaskChangeAttributes(WIDTH_MASK | STYLE_MASK | COLOR_MASK | LAYER_MASK, go);
668 EGAttachObject(go, ( EObjectP )
this);
669 EMAddGraphicsToModel(ESIModel(), go);
673 if ( j == 1 && k == 1 ) {
674 pp [ 0 ].x = p [ 0 ].x;
675 pp [ 0 ].y = p [ 0 ].y;
676 pp [ 0 ].z = p [ 0 ].z;
678 pp [ 1 ].x = p [ 1 ].x;
679 pp [ 1 ].y = p [ 1 ].y;
680 pp [ 1 ].z = p [ 1 ].z;
682 #ifdef DRAW_VISIBLE_CONTOUR
683 #ifdef SPHERE_WITH_HOLE
684 double xx = 0.0, yy = 0.0, zz = 0.0, rr, r;
685 for (
int ii = 0; ii < 2; ii++ ) {
693 rr = xx * xx + yy * yy;
696 if ( zz < 2.0001 || yy < 0.0001 || rr < 1.001 * 1.001 || r < 25.0 || r > 5.98 * 5.98 ) {
697 auto go = CreateLine3D(pp);
698 EGWithMaskChangeAttributes(WIDTH_MASK | STYLE_MASK | COLOR_MASK | LAYER_MASK, go);
699 EGAttachObject(go, ( EObjectP )
this);
700 EMAddGraphicsToModel(ESIModel(), go);
704 auto go = CreateLine3D(pp);
705 EGWithMaskChangeAttributes(WIDTH_MASK | STYLE_MASK | COLOR_MASK | LAYER_MASK, go);
706 EGAttachObject(go, ( EObjectP )
this);
707 EMAddGraphicsToModel(ESIModel(), go);
711 if ( j == 1 && k == nseg ) {
712 pp [ 0 ].x = p [ 4 ].x;
713 pp [ 0 ].y = p [ 4 ].y;
714 pp [ 0 ].z = p [ 4 ].z;
716 pp [ 1 ].x = p [ 5 ].x;
717 pp [ 1 ].y = p [ 5 ].y;
718 pp [ 1 ].z = p [ 5 ].z;
720 #ifdef DRAW_VISIBLE_CONTOUR
721 #ifdef SPHERE_WITH_HOLE
722 double xx = 0.0, yy = 0.0, zz = 0.0, rr, r;
723 for (
int ii = 0; ii < 2; ii++ ) {
731 rr = xx * xx + yy * yy;
734 if ( zz < 2.0001 || yy < 0.0001 || rr < 1.001 * 1.001 || r < 25.0 || r > 5.98 * 5.98 ) {
735 if ( yy < 1.5 || zz < 2.0001 ) {
736 auto go = CreateLine3D(pp);
737 EGWithMaskChangeAttributes(WIDTH_MASK | STYLE_MASK | COLOR_MASK | LAYER_MASK, go);
738 EGAttachObject(go, ( EObjectP )
this);
739 EMAddGraphicsToModel(ESIModel(), go);
744 auto go = CreateLine3D(pp);
745 EGWithMaskChangeAttributes(WIDTH_MASK | STYLE_MASK | COLOR_MASK | LAYER_MASK, go);
746 EGAttachObject(go, ( EObjectP )
this);
747 EMAddGraphicsToModel(ESIModel(), go);
751 if ( j == nseg && k == 1 ) {
752 pp [ 0 ].x = p [ 3 ].x;
753 pp [ 0 ].y = p [ 3 ].y;
754 pp [ 0 ].z = p [ 3 ].z;
756 pp [ 1 ].x = p [ 2 ].x;
757 pp [ 1 ].y = p [ 2 ].y;
758 pp [ 1 ].z = p [ 2 ].z;
760 #ifdef DRAW_VISIBLE_CONTOUR
761 #ifdef SPHERE_WITH_HOLE
762 double xx = 0.0, yy = 0.0, zz = 0.0, rr, r;
763 for (
int ii = 0; ii < 2; ii++ ) {
771 rr = xx * xx + yy * yy;
774 if ( zz < 2.0001 || yy < 0.0001 || rr < 1.001 * 1.001 || r < 25.0 || r > 5.98 * 5.98 ) {
775 auto go = CreateLine3D(pp);
776 EGWithMaskChangeAttributes(WIDTH_MASK | STYLE_MASK | COLOR_MASK | LAYER_MASK, go);
777 EGAttachObject(go, ( EObjectP )
this);
778 EMAddGraphicsToModel(ESIModel(), go);
782 auto go = CreateLine3D(pp);
783 EGWithMaskChangeAttributes(WIDTH_MASK | STYLE_MASK | COLOR_MASK | LAYER_MASK, go);
784 EGAttachObject(go, ( EObjectP )
this);
785 EMAddGraphicsToModel(ESIModel(), go);
789 if ( j == nseg && k == nseg ) {
790 pp [ 0 ].x = p [ 7 ].x;
791 pp [ 0 ].y = p [ 7 ].y;
792 pp [ 0 ].z = p [ 7 ].z;
794 pp [ 1 ].x = p [ 6 ].x;
795 pp [ 1 ].y = p [ 6 ].y;
796 pp [ 1 ].z = p [ 6 ].z;
798 #ifdef DRAW_VISIBLE_CONTOUR
799 #ifdef SPHERE_WITH_HOLE
800 double xx = 0.0, yy = 0.0, zz = 0.0, rr, r;
801 for (
int ii = 0; ii < 2; ii++ ) {
809 rr = xx * xx + yy * yy;
812 if ( zz < 2.0001 || yy < 0.0001 || rr < 1.001 * 1.001 || r < 25.0 || r > 5.98 * 5.98 ) {
813 if ( yy < 1.5 || zz < 2.0001 ) {
814 auto go = CreateLine3D(pp);
815 EGWithMaskChangeAttributes(WIDTH_MASK | STYLE_MASK | COLOR_MASK | LAYER_MASK, go);
816 EGAttachObject(go, ( EObjectP )
this);
817 EMAddGraphicsToModel(ESIModel(), go);
822 auto go = CreateLine3D(pp);
823 EGWithMaskChangeAttributes(WIDTH_MASK | STYLE_MASK | COLOR_MASK | LAYER_MASK, go);
824 EGAttachObject(go, ( EObjectP )
this);
825 EMAddGraphicsToModel(ESIModel(), go);
829 if ( k == 1 && i == 1 ) {
830 pp [ 0 ].x = p [ 0 ].x;
831 pp [ 0 ].y = p [ 0 ].y;
832 pp [ 0 ].z = p [ 0 ].z;
834 pp [ 1 ].x = p [ 3 ].x;
835 pp [ 1 ].y = p [ 3 ].y;
836 pp [ 1 ].z = p [ 3 ].z;
838 #ifdef DRAW_VISIBLE_CONTOUR
839 #ifdef SPHERE_WITH_HOLE
840 double xx = 0.0, yy = 0.0, zz = 0.0, rr, r;
841 for (
int ii = 0; ii < 2; ii++ ) {
849 rr = xx * xx + yy * yy;
852 if ( zz < 2.0001 || yy < 0.0001 || rr < 1.001 * 1.001 || r < 25.0 || r > 5.98 * 5.98 ) {
853 auto go = CreateLine3D(pp);
854 EGWithMaskChangeAttributes(WIDTH_MASK | STYLE_MASK | COLOR_MASK | LAYER_MASK, go);
855 EGAttachObject(go, ( EObjectP )
this);
856 EMAddGraphicsToModel(ESIModel(), go);
860 auto go = CreateLine3D(pp);
861 EGWithMaskChangeAttributes(WIDTH_MASK | STYLE_MASK | COLOR_MASK | LAYER_MASK, go);
862 EGAttachObject(go, ( EObjectP )
this);
863 EMAddGraphicsToModel(ESIModel(), go);
867 if ( k == 1 && i == nseg ) {
868 pp [ 0 ].x = p [ 1 ].x;
869 pp [ 0 ].y = p [ 1 ].y;
870 pp [ 0 ].z = p [ 1 ].z;
872 pp [ 1 ].x = p [ 2 ].x;
873 pp [ 1 ].y = p [ 2 ].y;
874 pp [ 1 ].z = p [ 2 ].z;
876 #ifdef DRAW_VISIBLE_CONTOUR
877 #ifdef SPHERE_WITH_HOLE
878 double xx = 0.0, yy = 0.0, zz = 0.0, rr, r;
879 for (
int ii = 0; ii < 2; ii++ ) {
887 rr = xx * xx + yy * yy;
890 if ( zz < 2.0001 || yy < 0.0001 || rr < 1.001 * 1.001 || r < 25.0 || r > 5.98 * 5.98 ) {
891 auto go = CreateLine3D(pp);
892 EGWithMaskChangeAttributes(WIDTH_MASK | STYLE_MASK | COLOR_MASK | LAYER_MASK, go);
893 EGAttachObject(go, ( EObjectP )
this);
894 EMAddGraphicsToModel(ESIModel(), go);
898 auto go = CreateLine3D(pp);
899 EGWithMaskChangeAttributes(WIDTH_MASK | STYLE_MASK | COLOR_MASK | LAYER_MASK, go);
900 EGAttachObject(go, ( EObjectP )
this);
901 EMAddGraphicsToModel(ESIModel(), go);
905 if ( k == nseg && i == 1 ) {
906 pp [ 0 ].x = p [ 4 ].x;
907 pp [ 0 ].y = p [ 4 ].y;
908 pp [ 0 ].z = p [ 4 ].z;
910 pp [ 1 ].x = p [ 7 ].x;
911 pp [ 1 ].y = p [ 7 ].y;
912 pp [ 1 ].z = p [ 7 ].z;
914 #ifdef DRAW_VISIBLE_CONTOUR
915 #ifdef SPHERE_WITH_HOLE
916 double xx = 0.0, yy = 0.0, zz = 0.0, rr, r;
917 for (
int ii = 0; ii < 2; ii++ ) {
925 rr = xx * xx + yy * yy;
928 if ( zz < 2.0001 || yy < 0.0001 || rr < 1.001 * 1.001 || r < 25.0 || r > 5.98 * 5.98 ) {
930 auto go = CreateLine3D(pp);
931 EGWithMaskChangeAttributes(WIDTH_MASK | STYLE_MASK | COLOR_MASK | LAYER_MASK, go);
932 EGAttachObject(go, ( EObjectP )
this);
933 EMAddGraphicsToModel(ESIModel(), go);
938 auto go = CreateLine3D(pp);
939 EGWithMaskChangeAttributes(WIDTH_MASK | STYLE_MASK | COLOR_MASK | LAYER_MASK, go);
940 EGAttachObject(go, ( EObjectP )
this);
941 EMAddGraphicsToModel(ESIModel(), go);
945 if ( k == nseg && i == nseg ) {
946 pp [ 0 ].x = p [ 5 ].x;
947 pp [ 0 ].y = p [ 5 ].y;
948 pp [ 0 ].z = p [ 5 ].z;
950 pp [ 1 ].x = p [ 6 ].x;
951 pp [ 1 ].y = p [ 6 ].y;
952 pp [ 1 ].z = p [ 6 ].z;
954 #ifdef DRAW_VISIBLE_CONTOUR
955 #ifdef SPHERE_WITH_HOLE
956 double xx = 0.0, yy = 0.0, zz = 0.0, rr, r;
957 for (
int ii = 0; ii < 2; ii++ ) {
965 rr = xx * xx + yy * yy;
968 if ( zz < 2.0001 || yy < 0.0001 || rr < 1.001 * 1.001 || r < 25.0 || r > 5.98 * 5.98 ) {
970 auto go = CreateLine3D(pp);
971 EGWithMaskChangeAttributes(WIDTH_MASK | STYLE_MASK | COLOR_MASK | LAYER_MASK, go);
972 EGAttachObject(go, ( EObjectP )
this);
973 EMAddGraphicsToModel(ESIModel(), go);
978 auto go = CreateLine3D(pp);
979 EGWithMaskChangeAttributes(WIDTH_MASK | STYLE_MASK | COLOR_MASK | LAYER_MASK, go);
980 EGAttachObject(go, ( EObjectP )
this);
981 EMAddGraphicsToModel(ESIModel(), go);
986 auto go = CreateHexahedron(p);
987 EGWithMaskChangeAttributes(WIDTH_MASK | FILL_MASK | COLOR_MASK | EDGE_COLOR_MASK | EDGE_FLAG_MASK | LAYER_MASK, go);
988 EGAttachObject(go, ( EObjectP )
this);
989 EMAddGraphicsToModel(ESIModel(), go);
1010 double defScale =
gc.getDefScale();
1012 if ( !
gc.testElementGraphicActivity(elem) ) {
1017 EASValsSetColor(
gc.getDeformedElementColor() );
1018 EASValsSetEdgeColor(
gc.getElementEdgeColor() );
1019 EASValsSetEdgeFlag(
true);
1021 EASValsSetLineStyle(SOLID_STYLE);
1022 EASValsSetFillStyle(FILL_SOLID);
1023 EASValsSetLineWidth(0);
1033 int nsd = interp->
giveNsd(this->giveGeometryType());
1041 for (
int j = 0; j < 2; j++ ) {
1051 double du = ( knotVector [ 0 ] [ span->
at(1) + 1 ] - knotVector [ 0 ] [ span->
at(1) ] ) / nseg;
1052 for (
int i = 1; i <= nseg; i++ ) {
1053 c [ 0 ].
at(1) = knotVector [ 0 ] [ span->
at(1) ] + du * ( i - 1 );
1054 c [ 1 ].
at(1) = knotVector [ 0 ] [ span->
at(1) ] + du * i;
1056 for (
int k = 0; k < 2; k++ ) {
1058 GaussPoint gp(iRule, 999, c [ k ], 1.0, _PlaneStress);
1065 ur.
resize(
N.giveNumberOfColumns() );
1066 for (
int n = 1; n <= lc.
giveSize(); n++ ) {
1067 ur.
at(n) = u.
at( lc.
at(n) );
1074 p [ k ].x = ( FPNum ) ( cg [ k ].at(1) + d.
at(1) * defScale );
1079 auto go = CreateLine3D(p);
1080 EGWithMaskChangeAttributes(WIDTH_MASK | STYLE_MASK | COLOR_MASK | LAYER_MASK, go);
1081 EGAttachObject(go, ( EObjectP ) elem);
1082 EMAddGraphicsToModel(ESIModel(), go);
1085 }
else if ( nsd == 2 ) {
1088 for (
int j = 0; j < 4; j++ ) {
1098 double du = ( knotVector [ 0 ] [ span->
at(1) + 1 ] - knotVector [ 0 ] [ span->
at(1) ] ) / nseg;
1099 double dv = ( knotVector [ 1 ] [ span->
at(2) + 1 ] - knotVector [ 1 ] [ span->
at(2) ] ) / nseg;
1100 for (
int i = 1; i <= nseg; i++ ) {
1101 for (
int j = 1; j <= nseg; j++ ) {
1102 c [ 0 ].
at(1) = knotVector [ 0 ] [ span->
at(1) ] + du * ( i - 1 );
1103 c [ 0 ].
at(2) = knotVector [ 1 ] [ span->
at(2) ] + dv * ( j - 1 );
1104 c [ 1 ].
at(1) = knotVector [ 0 ] [ span->
at(1) ] + du * i;
1105 c [ 1 ].
at(2) = knotVector [ 1 ] [ span->
at(2) ] + dv * ( j - 1 );
1106 c [ 2 ].
at(1) = knotVector [ 0 ] [ span->
at(1) ] + du * i;
1107 c [ 2 ].
at(2) = knotVector [ 1 ] [ span->
at(2) ] + dv * j;
1108 c [ 3 ].
at(1) = knotVector [ 0 ] [ span->
at(1) ] + du * ( i - 1 );
1109 c [ 3 ].
at(2) = knotVector [ 1 ] [ span->
at(2) ] + dv * j;
1111 for (
int k = 0; k < 4; k++ ) {
1113 GaussPoint gp(iRule, 999, c [ k ], 1.0, _PlaneStress);
1120 ur.
resize(
N.giveNumberOfColumns() );
1121 for (
int n = 1; n <= lc.
giveSize(); n++ ) {
1122 ur.
at(n) = u.
at( lc.
at(n) );
1129 p [ k ].x = ( FPNum ) ( cg [ k ].at(1) + d.
at(1) * defScale );
1130 p [ k ].y = ( FPNum ) ( cg [ k ].at(2) + d.
at(2) * defScale );
1134 auto go = CreateQuad3D(p);
1135 EGWithMaskChangeAttributes(WIDTH_MASK | FILL_MASK | COLOR_MASK | EDGE_COLOR_MASK | EDGE_FLAG_MASK | LAYER_MASK, go);
1136 EGAttachObject(go, ( EObjectP ) elem);
1137 EMAddGraphicsToModel(ESIModel(), go);
1141 }
else if ( nsd == 3 ) {
1144 for (
int j = 0; j < 8; j++ ) {
1154 double du = ( knotVector [ 0 ] [ span->
at(1) + 1 ] - knotVector [ 0 ] [ span->
at(1) ] ) / nseg;
1155 double dv = ( knotVector [ 1 ] [ span->
at(2) + 1 ] - knotVector [ 1 ] [ span->
at(2) ] ) / nseg;
1156 double dt = ( knotVector [ 2 ] [ span->
at(3) + 1 ] - knotVector [ 2 ] [ span->
at(3) ] ) / nseg;
1157 for (
int i = 1; i <= nseg; i++ ) {
1158 for (
int j = 1; j <= nseg; j++ ) {
1159 for (
int k = 1; k <= nseg; k++ ) {
1160 c [ 0 ].
at(1) = knotVector [ 0 ] [ span->
at(1) ] + du * ( i - 1 );
1161 c [ 0 ].
at(2) = knotVector [ 1 ] [ span->
at(2) ] + dv * ( j - 1 );
1162 c [ 0 ].
at(3) = knotVector [ 2 ] [ span->
at(3) ] + dt * ( k - 1 );
1163 c [ 1 ].
at(1) = knotVector [ 0 ] [ span->
at(1) ] + du * i;
1164 c [ 1 ].
at(2) = knotVector [ 1 ] [ span->
at(2) ] + dv * ( j - 1 );
1165 c [ 1 ].
at(3) = knotVector [ 2 ] [ span->
at(3) ] + dt * ( k - 1 );
1166 c [ 2 ].
at(1) = knotVector [ 0 ] [ span->
at(1) ] + du * i;
1167 c [ 2 ].
at(2) = knotVector [ 1 ] [ span->
at(2) ] + dv * j;
1168 c [ 2 ].
at(3) = knotVector [ 2 ] [ span->
at(3) ] + dt * ( k - 1 );
1169 c [ 3 ].
at(1) = knotVector [ 0 ] [ span->
at(1) ] + du * ( i - 1 );
1170 c [ 3 ].
at(2) = knotVector [ 1 ] [ span->
at(2) ] + dv * j;
1171 c [ 3 ].
at(3) = knotVector [ 2 ] [ span->
at(3) ] + dt * ( k - 1 );
1172 c [ 4 ].
at(1) = knotVector [ 0 ] [ span->
at(1) ] + du * ( i - 1 );
1173 c [ 4 ].
at(2) = knotVector [ 1 ] [ span->
at(2) ] + dv * ( j - 1 );
1174 c [ 4 ].
at(3) = knotVector [ 2 ] [ span->
at(3) ] + dt * k;
1175 c [ 5 ].
at(1) = knotVector [ 0 ] [ span->
at(1) ] + du * i;
1176 c [ 5 ].
at(2) = knotVector [ 1 ] [ span->
at(2) ] + dv * ( j - 1 );
1177 c [ 5 ].
at(3) = knotVector [ 2 ] [ span->
at(3) ] + dt * k;
1178 c [ 6 ].
at(1) = knotVector [ 0 ] [ span->
at(1) ] + du * i;
1179 c [ 6 ].
at(2) = knotVector [ 1 ] [ span->
at(2) ] + dv * j;
1180 c [ 6 ].
at(3) = knotVector [ 2 ] [ span->
at(3) ] + dt * k;
1181 c [ 7 ].
at(1) = knotVector [ 0 ] [ span->
at(1) ] + du * ( i - 1 );
1182 c [ 7 ].
at(2) = knotVector [ 1 ] [ span->
at(2) ] + dv * j;
1183 c [ 7 ].
at(3) = knotVector [ 2 ] [ span->
at(3) ] + dt * k;
1185 for (
int m = 0; m < 8; m++ ) {
1187 GaussPoint gp(iRule, 999, c [ m ], 1.0, _3dMat);
1194 ur.
resize(
N.giveNumberOfColumns() );
1195 for (
int n = 1; n <= lc.
giveSize(); n++ ) {
1196 ur.
at(n) = u.
at( lc.
at(n) );
1203 p [ m ].x = ( FPNum ) ( cg [ m ].at(1) + d.
at(1) * defScale );
1204 p [ m ].y = ( FPNum ) ( cg [ m ].at(2) + d.
at(2) * defScale );
1205 p [ m ].z = ( FPNum ) ( cg [ m ].at(3) + d.
at(3) * defScale );
1208 auto go = CreateHexahedron(p);
1209 EGWithMaskChangeAttributes(WIDTH_MASK | FILL_MASK | COLOR_MASK | EDGE_COLOR_MASK | EDGE_FLAG_MASK | LAYER_MASK, go);
1210 EGAttachObject(go, ( EObjectP ) elem);
1211 EMAddGraphicsToModel(ESIModel(), go);