| Summary: | BooleanProcessor::execute: Unknown faces! in simple situation!!! | ||
|---|---|---|---|
| Product: | Geant4 | Reporter: | porosev |
| Component: | graphics_reps | Assignee: | John.Allison |
| Status: | RESOLVED INVALID | ||
| Severity: | normal | ||
| Priority: | P2 | ||
| Version: | 8.1 | ||
| Hardware: | Other | ||
| OS: | Windows | ||
Your subtracter is entirely within the subtracted solid. This is not a proper use of Boolean solids. To get what you want, simply place the subtracter as a daughter. By convention, a daughter "subtracts" from the mother volume. The daughter volume should have the material of the surrounding world volume. Boolean solids only work if there is a genuine intersection of the surfaces of the shapes. Perhaps we should trap this situation more elegantly, but that's how it is at present. |
Hello all!! I got bug in geometry visualisation in the simplest situation!!! I just created a hole in a box using another box and I try to create VRML2FILE... as a result I catch the message BooleanProcessor::execute: Unknown faces! and I can see only outer box!!! Please fix it ASAP... Viacheslav Porosev Example of my code: G4VPhysicalVolume* DetectorConstruction::ConstructVolumes() { // Clean old geometry, if any // G4GeometryManager::GetInstance()->OpenGeometry(); G4PhysicalVolumeStore::GetInstance()->Clean(); G4LogicalVolumeStore::GetInstance()->Clean(); G4SolidStore::GetInstance()->Clean(); //----------------------------------------------------------------------------- G4Box* sWorld = new G4Box("World", 100.*cm, 100.*cm, 100.*cm); //its dimensions lWorld = new G4LogicalVolume(sWorld, //its shape aDefaultMaterial,//its material "World"); //its name lWorld->SetVisAttributes(G4VisAttributes::GetInvisible()); pWorld = new G4PVPlacement(0, //no rotation G4ThreeVector(), //at (0,0,0) "World", //its name lWorld, //its logical volume NULL, //its mother volume false, //no boolean operation 0); //copy number //Create box ---------------------------------------------------------------- G4Box* CaseBox = new G4Box("Case_out", 25.0*cm, 2.5*cm, 5.5*cm); G4Box* CaseHole = new G4Box("Case_out", 24.0*cm, 1.5*cm, 4.5*cm); G4SubtractionSolid* CaseSolid = new G4SubtractionSolid("CaseBox-Hole", CaseBox, CaseHole, 0, G4ThreeVector(0., 0., 0.)); G4LogicalVolume* Case_log = new G4LogicalVolume(CaseSolid, aBoxMaterial, "Case_log"); G4VPhysicalVolume* DetectorBox_phys = new G4PVPlacement(0, G4ThreeVector( 0.0*cm, 5.0*cm, 0.0*cm), Case_log, "Case", lWorld, false, 0); return pWorld; }