lvidx140 (19)
===============


* parsurf.bb.min.z goes 5mm lower 
* flat dinner plate with hole in middle
* g4poly misses some middle cylinders and the very bottom one




::

    19         5                      LsoOflTnk0xc17d928 lvidx 140 nsp    315                       union intersection cylinder   nds[  2]  4606 6266 . 

               5                      LsoOflTnk0xc17d928 lvidx 140 nsp    315 
   
               amn (   -920.000  -920.000   -10.000)   parsurf.bb.min.z goes lower
               bmn (   -920.042  -920.000    -5.000) 
               dmn (      0.042     0.000    -5.000) 

               amx (    920.000   920.000   170.000) 
               bmx (    920.000   920.031   170.057) 
               dmx (      0.000    -0.031    -0.057)



Viz
-----


::

   op --dlv140
        g4poly is two disconnected plates with different sized holes

   op --dlv140 --gltf 1
        raytrace joins the plates

 


tbool
-------



::

    078 # generated by tboolean.py : 20170706-1446 
     79 # opticks-;opticks-tbool 140 
     80 # opticks-;opticks-tbool-vi 140 
     81 
     82 
     83 a = CSG("cylinder", param = [0.000,0.000,0.000,920.000],param1 = [-5.000,5.000,0.000,0.000])
     84 b = CSG("cylinder", param = [0.000,0.000,0.000,50.000],param1 = [-5.050,5.050,0.000,0.000],complement = True)
     85 ab = CSG("intersection", left=a, right=b)
     86 
     87 c = CSG("cylinder", param = [0.000,0.000,0.000,112.500],param1 = [-2.500,2.500,0.000,0.000])
     88 d = CSG("cylinder", param = [0.000,0.000,0.000,50.000],param1 = [-2.525,2.525,0.000,0.000],complement = True)
     89 cd = CSG("intersection", left=c, right=d)
     90 cd.transform = [[1.000,0.000,0.000,0.000],[0.000,1.000,0.000,0.000],[0.000,0.000,1.000,0.000],[0.000,0.000,-7.500,1.000]]
     91 
     92 abcd = CSG("union", left=ab, right=cd)
     93 
     94 e = CSG("cylinder", param = [0.000,0.000,0.000,920.000],param1 = [-77.500,77.500,0.000,0.000])
     95 f = CSG("cylinder", param = [0.000,0.000,0.000,910.000],param1 = [-78.275,78.275,0.000,0.000],complement = True)
     96 ef = CSG("intersection", left=e, right=f)
     97 ef.transform = [[1.000,0.000,0.000,0.000],[0.000,1.000,0.000,0.000],[0.000,0.000,1.000,0.000],[0.000,0.000,82.500,1.000]]
     98 
     99 g = CSG("cylinder", param = [0.000,0.000,0.000,920.000],param1 = [-5.000,5.000,0.000,0.000])
    100 h = CSG("cylinder", param = [0.000,0.000,0.000,660.000],param1 = [-5.050,5.050,0.000,0.000],complement = True)
    101 gh = CSG("intersection", left=g, right=h)
    102 gh.transform = [[1.000,0.000,0.000,0.000],[0.000,1.000,0.000,0.000],[0.000,0.000,1.000,0.000],[0.000,0.000,165.000,1.000]]
    103 
    104 efgh = CSG("union", left=ef, right=gh)
    105 
    106 abcdefgh = CSG("union", left=abcd, right=efgh)