$fn=100;

module fenetre() { // 4 cubes pour créer une fenêtre avec la différence
    translate([0, 0, 0]) cube([1.5, 4, 1.5]);
    translate([2, 0, 0]) cube([1.5, 4, 1.5]);
    translate([2, 0, 2]) cube([1.5, 4, 1.5]);
    translate([0, 0, 2]) cube([1.5, 4, 1.5]);
}

difference() {
    union() {
        cube([10, 10, 10]); // cube maison
        translate([5, -.5, 5]) rotate([-90, 0, 0]) cylinder(2, 2.5, 2.5); // contour 3D porte cercle
    }
    translate([1, 1, 1]) cube([8, 8, 10]); // cube pour vider la maison
    //translate([4, -2, 1]) cube([2, 4, 4]); // porte rectangle
    translate([5, -1, 5]) rotate([-90, 0, 0]) cylinder(3, 2, 2); // porte cercle
    translate([2, 3.25, 3.25]) rotate([0, 0, 90]) fenetre(); // fenetre gauche
    translate([12, 3.25, 3.25]) rotate([0, 0, 90]) fenetre(); // fenetre droite
    translate([3.25, 7.5, 3.25]) fenetre(); // fenetre arrière
}

difference() {
    translate([4.25, -1, 14.5]) rotate([0, 135, 0]) union() { // toit
        cube([10, 12, 1]); 
        translate([0, 0, 0]) rotate([0, -90, 0]) cube([11, 12, 1]);
    }
    translate([5, 3, 12]) { // trous dans le toit pour qu'on puisse l'accrocher
        cylinder(4, .5, .5);
        translate([0, 3.5, 0]) cylinder(4, .5, .5);
    }
}

translate([1, 1, 10]) rotate([90, 0, 0]) linear_extrude(height=1) { // prisme qui bouche l'espace entre le mur avant et le toit
    polygon([[0, 0], [8, 0], [4, 4]]);
}

translate([1, 10, 10]) rotate([90, 0, 0]) linear_extrude(height=1) { // prisme qui bouche l'espace entre le mur arrière et le toit
    polygon([[0, 0], [8, 0], [4, 4]]);
}

translate([7, 2, 11]) cube([2, 2, 4]); // cheminée

translate([2.75, .5, 8.5]) rotate([90, 0, 0]) linear_extrude(height=1) {
    text("TB", 3, "Figtree:style=Bold"); // initiales TB
}