Hi Kiril, There are no overlaps/extrusions in your example. Due to limitations of x3d you sometime see surfaces that dissapear or change color - this has nothing to do with the overlaps. Your "Arrow" volume is OK (sphere with R=10 in the origin and three cones with half-length 45 positioned at 55 along X, Y and Z. The content of "KeepIn" is also non-overlapping. If you still think your geometry has overlaps, please point out where you think they are (which volume/daughter(s)). Best regards, Andrei Kirill Shileev wrote: > On Thu, 10 Jul 2003, Andrei Gheata wrote: > > Hi Andrei, > Please find the example in attachment. > > > >>Hi Kirill, >> >>There is no limitation. Could you send me your example ? >> >>Regards, >>Andrei >> >>Kirill Shileev wrote: >> >>>Hi rooters, >>> >>>Is there any limitations on using of the subj? >>>Is it possible that the subj does not check clashes for some particular >>>shapes? In my case it gives me no overlaps while there are in, and clearly >>>visible in x3d. >>>I'm on 3.05.05 on Mandrake 9.0 >>> >> >> >> > > > ------------------------------------------------------------------------ > > void TofinoGeo() > { > if(gClassTable->GetID("TGeoManager")<0) gSystem->Load("libGeom"); > new TGeoManager("GM", "Simple geometry"); > MakeMediums(); > MakeMotherAndArrow(); > // if (gPad) gPad->x3d(); > gGeoManager->CheckOverlaps(0.00001); > } > > void MakeMediums() > { > > int medID; > Double_t a,z,den; > p=new TGeoMedium("vacuum",medID=1,new TGeoMaterial("vacuum",a=0,z=0,den=0)); > > } > > > const Double_t g2r=TMath::Pi()/180; > const Double_t r2g=180/TMath::Pi(); > const Double_t deg=TMath::Pi()/180; > const Double_t rad=1; > const Double_t mm=0.1; > const Double_t cm=1; > const Double_t m=100; > > void MakeMotherAndArrow() > { > if(gClassTable->GetID("TGeoManager")<0) gSystem->Load("libGeom"); > > Double_t dx,dy,dz,dxmin,dxmax,rmin,rmin1,rmin2,rmax,rmax1,rmax2; > Int_t copy; > > //make mother > TGeoVolume *pMother=gGeoManager->MakeBox("MOTHER",gGeoManager->GetMedium("vacuum"), > dx=10*m,dy=10*m,dz=30*m); > > gGeoManager->SetTopVolume(pMother); > > //CS > Double_t arrowLen=1*m; > TGeoVolume *pCS=gGeoManager->MakeBox("Arrow",gGeoManager->GetMedium("vacuum"), > dx=arrowLen,dy=arrowLen,dz=arrowLen); > pCS->SetVisibility(kFALSE); > pMother->AddNode(pCS,copy=1); > TGeoVolume *pZero=gGeoManager->MakeSphere("Zero",gGeoManager->GetMedium("vacuum"), > rmin=0,rmax=0.1*arrowLen);//10% zero point > pZero->SetLineColor(kMagenta); > pCS->AddNode(pZero,copy=1); > TGeoVolume *pAxisX=gGeoManager->MakeCone("AxisX",gGeoManager->GetMedium("vacuum"), > dz=0.9*arrowLen/2,rmin1=0,rmax1=0.1*arrowLen,rmin2=0,rmax2=0);//10% zero point > pAxisX->SetLineColor(kRed); > pCS->AddNode(pAxisX,copy=1,new TGeoCombiTrans(0.55*arrowLen,0,0, new TGeoRotation("rot1",0,90,0))); > TGeoVolume *pAxisY=gGeoManager->MakeCone("AxisY",gGeoManager->GetMedium("vacuum"), > dz=0.9*arrowLen/2,rmin1=0,rmax1=0.1*arrowLen,rmin2=0,rmax2=0);//10% zero point > pAxisY->SetLineColor(kGreen); > pCS->AddNode(pAxisY,copy=1,new TGeoCombiTrans(0,0.55*arrowLen,0, new TGeoRotation("rot1",90,90,0))); > TGeoVolume *pAxisZ=gGeoManager->MakeCone("AxisZ",gGeoManager->GetMedium("vacuum"), > dz=0.9*arrowLen/2,rmin1=0,rmax1=0.1*arrowLen,rmin2=0,rmax2=0);//10% zero point > pAxisZ->SetLineColor(kBlue); > pCS->AddNode(pAxisZ,copy=1,new TGeoTranslation(0,0,0.55*arrowLen)); > //______________________________________________________________________________ > > const Double_t largeKeepInLenMin=274.21*2*mm; //old > const Double_t largeKeepInLenMax=784.15*2*mm; //old > > //const Double_t largeKeepInLenMin=(274.21+0.816)*2*mm; //new > //const Double_t largeKeepInLenMax=(784.15+0.816)*2*mm; //new > > const Double_t largeKeepInHeight=(758.58+694.34)*mm; > const Double_t largeKeepInThickness=10*mm; > const Double_t shift=largeKeepInHeight/2-758.58*mm; > > > const Double_t smallKeepIn23LenMin=100.02*2*mm; > const Double_t smallKeepIn23LenMax=179.83*2*mm; > const Double_t smallKeepIn23Height=(686.95+693.05)*mm; > const Double_t smallKeepIn23Thickness=10*mm; > > const Double_t smallKeepIn23X=369.46*mm; //old > const Double_t smallKeepIn23Y=-64.86*mm-shift; //old > > //const Double_t smallKeepIn23X=370.276*mm; //new > //const Double_t smallKeepIn23Y=-64.951*mm-shift; //new > > const Double_t smallKeepIn23Phi=16.03; > > const Double_t smallKeepIn24LenMin=41.23*2*mm; > const Double_t smallKeepIn24LenMax=195.05*2*mm; > const Double_t smallKeepIn24Height=(689.94+690.06)*mm; > const Double_t smallKeepIn24Thickness=10*mm; > > //const Double_t smallKeepIn24X=117.4*mm; //no shift > //const Double_t smallKeepIn24Y=-13.09*mm-shift; //no shift > > const Double_t smallKeepIn24X=116.14*mm; //old shift > const Double_t smallKeepIn24Y=-24.86*mm-shift; //old shift > > //const Double_t smallKeepIn24X=117.4*mm; //new shift > //const Double_t smallKeepIn24Y=-20.05*mm-shift; //new shift > > const Double_t smallKeepIn24Phi=6.36; > > const Double_t trdIns24LenMin=41.23*2*mm; > const Double_t trdIns24LenMax=321*mm; > const Double_t trdIns24Height=(1380-239.91)*mm; > const Double_t trdIns24Thickness=10*mm; > > const Double_t boxIns24Len=321*mm; > const Double_t boxIns24Height=119.955*2*mm; > const Double_t boxIns24Thickness=10*mm; > > TGeoVolume *pLargeKeepIn=gGeoManager->MakeTrd1("KeepIn",gGeoManager->GetMedium("vacuum"), > dxmin=largeKeepInLenMin/2, > dxmax=largeKeepInLenMax/2, > dy=largeKeepInThickness/2, > dz=largeKeepInHeight/2); > pLargeKeepIn->SetLineColor(kRed); > pMother->AddNode(pLargeKeepIn,copy=1,new TGeoTranslation(0,0,3*m)); > > TGeoVolume *pSmallKeepIn23=gGeoManager->MakeTrd1("SmallKeepIn1",gGeoManager->GetMedium("vacuum"), > dxmin=smallKeepIn23LenMin/2, > dxmax=smallKeepIn23LenMax/2, > dy=smallKeepIn23Thickness/2, > dz=smallKeepIn23Height/2); > pSmallKeepIn23->SetLineColor(kGreen); > pLargeKeepIn->AddNode(pSmallKeepIn23,copy=1, > new TGeoCombiTrans(smallKeepIn23X,0,smallKeepIn23Y, > new TGeoRotation("rot1",0,smallKeepIn23Phi,0))); > pLargeKeepIn->AddNode(pSmallKeepIn23,copy=2, > new TGeoCombiTrans(-smallKeepIn23X,0,smallKeepIn23Y, > new TGeoRotation("rot1",180,smallKeepIn23Phi,0))); > > TGeoVolume *pSmallKeepIn24=gGeoManager->MakeTrd1("SmallKeepIn2",gGeoManager->GetMedium("vacuum"), > dxmin=smallKeepIn24LenMin/2, > dxmax=smallKeepIn24LenMax/2, > dy=smallKeepIn24Thickness/2, > dz=smallKeepIn24Height/2); > pSmallKeepIn24->SetLineColor(kBlue); > pLargeKeepIn->AddNode(pSmallKeepIn24,copy=1, > new TGeoCombiTrans(smallKeepIn24X,0,smallKeepIn24Y, > new TGeoRotation("rot10",0,smallKeepIn24Phi,0))); > pLargeKeepIn->AddNode(pSmallKeepIn24,copy=2, > new TGeoCombiTrans(-smallKeepIn24X,0,smallKeepIn24Y, > new TGeoRotation("rot11",180,smallKeepIn24Phi,0))); > > TGeoVolume *pTrdIns24=gGeoManager->MakeTrd1("TrdIns2",gGeoManager->GetMedium("vacuum"), > dxmin=trdIns24LenMin/2, > dxmax=trdIns24LenMax/2, > dy=trdIns24Thickness/2, > dz=trdIns24Height/2); > pTrdIns24->SetLineColor(kRed); > pSmallKeepIn24->AddNode(pTrdIns24,copy=1, > new TGeoTranslation(0,0,-(smallKeepIn24Height/2-trdIns24Height/2))); > > TGeoVolume *pBoxIns24=gGeoManager->MakeBox("BoxIns2",gGeoManager->GetMedium("vacuum"), > dx=boxIns24Len/2, > dy=boxIns24Thickness/2, > dz=boxIns24Height/2); > pBoxIns24->SetLineColor(kMagenta); > pSmallKeepIn24->AddNode(pBoxIns24,copy=1, > new TGeoTranslation(0,0,boxIns24Height/2+trdIns24Height-smallKeepIn24Height/2)); > > gGeoManager->SetTopVolume(pMother); > > gGeoManager->CloseGeometry(); > pMother->Draw(); > > }//void MakeArrow(TGeoVolume *pMother)
This archive was generated by hypermail 2b29 : Thu Jan 01 2004 - 17:50:13 MET