A parametric model that automatically generates an advent calendar with a house silhouette! Simply specify the number of days, and it will automatically calculate the optimal house size and room layout, creating a 3D printable model.
✨ Features
🎄 Automatic Layout: Just specify the number of days, and the optimal house size and room arrangement are calculated automatically
🎁 Highly Customizable: Fine-tune room sizes, wall thicknesses, roof shapes, and more
🎨 Emoji Support: Place emojis in empty spaces using Noto Emoji
🔢 Numbered Doors: Automatically generates numbered doors for each room
🎯 Flexible Output: Generate house body, roof, doors, screws, and more individually
Boost MeIf you love the these designs please consider a BOOST 🚀 It helps me keep creating more designs 🙏
📖 How to Use
This model is designed as a parametric model. By adjusting parameters, you can create advent calendars of various sizes and shapes.
Basic Usage
Set the Number of Days: Specify number_of_days from 7 to 31 in the "Advent Calendar Settings"
Adjust Sizes: Modify the dimensions of each room (cell_width, cell_depth, cell_height) in the "Box Dimensions" section
Generate: The model automatically regenerates when you adjust parameters
Object Generation Control
In "Object Generation Settings", you can select which objects to generate:
House Body: Main advent calendar body
Lower Roof: Y-axis inner side roof
Upper Roof: Y-axis outer side roof (with chimney)
Doors: Doors for small rooms and tall rooms
Door Knob: Objects with screws and screw heads
You can generate only the parts you need and print them in stages.
📋 Parameter List
📦 Advent Calendar Settings
Parameter
Description
Default
Range
number_of_days
Number of days for the advent calendar
15
7-31
min_empty_spaces
Minimum number of empty spaces for emoji placement
5
0-5
min_tall_rooms
Minimum number of tall rooms (rooms with 2+ cells) to generate
This model uses the Noto Emoji font to display emojis beautifully! Noto Emoji is a comprehensive emoji font developed by Google, capable of displaying various emojis beautifully.
✨ Emoji customization is possible!
You can check the list of available emojis at Noto Emoji Glyphs. Combine Christmas-related emojis (🎄, 🎁, ⛄, etc.) and animal emojis (🐾, 🐈, 🐶, etc.) to create your original advent calendar!
Simply enter emojis in the gap_text_string parameter, and they will automatically be placed in empty spaces. Emojis are automatically optimized to avoid adjacent placement, ensuring a beautiful finish. You can change the emoji color using the gap_text_color parameter.
Door shrink amount (amount to shrink toward center overall)
0.6
0-2 mm
💡 Number Customization: You can specify the starting number for printing using the door_number_start parameter, allowing for various creative ideas such as printing actual dates or numbers with special meanings. For example, set the starting number to 1 for an advent calendar starting on December 1st, or set it to count down from 24 for a Christmas countdown, allowing flexible customization according to your needs.
💡 Number Order: The door_number_order parameter allows you to change the number order, making it easy to adjust and bring tall rooms to the end. By setting it to "Tall rooms first", you can number tall room doors first, making layout adjustments simple.
💡 Tall Room Count: By setting the min_tall_rooms parameter, you can ensure that at least the specified number of tall rooms are automatically generated. Tall rooms are created by merging adjacent 1x1 rooms, so the layout is automatically adjusted. If you specify a value greater than the number of days, the number of days will be used as the upper limit.
⚠️ Detailed Effects and Adjustment Methods for door_shrink
🎯 Effects and Changes Brought by door_shrink
The door_shrink parameter is an important parameter that adjusts the size of doors. This value affects the following elements:
Overall Door Size: The door width and depth are reduced by the door_shrink value
actual_plate_width = plate_width - door_shrink
actual_plate_depth = plate_depth - door_shrink
Rim Size: Since the rim is placed inside the door, a larger door_shrink makes the outer rim size smaller
The rim width (ring_thickness = 1mm) is fixed, but the outer rim size changes according to door_shrink
Fit in Room:
Larger door_shrink → Door and rim become smaller → Looser fit in room
Smaller door_shrink → Door and rim become larger → Tighter fit in room
🔧 How to Handle Tight Doors
When doors are difficult to fit into rooms or don't fit:
Increase the door_shrink value (Recommended)
Gradually increase from the default value (0.6mm) to 0.8mm, 1.0mm, etc.
Can be set up to a maximum of 2.0mm
Example: door_shrink = 0.8; or door_shrink = 1.0;
Consider 3D Printing Shrinkage
3D printing materials can shrink during printing
Materials like PLA or ABS may shrink by about 0.2-0.5mm
Therefore, it may be good to set door_shrink about 0.2-0.4mm larger
Check Room Size
If cell_width or cell_depth is too small, doors may not fit
Gradually decrease from the default value (0.6mm) to 0.4mm, 0.2mm, etc.
Can be set down to a minimum of 0.0mm (though 0.2mm is safer considering 3D printing shrinkage)
Example: door_shrink = 0.4; or door_shrink = 0.2;
Also Check Rim Size
Decreasing door_shrink makes the rim larger, resulting in a tighter fit
The rim width (1mm) is fixed, but the larger outer size strengthens the fit in the room
Check Print Accuracy
If your 3D printer has high accuracy, doors may fit well even with a smaller door_shrink
Conversely, if accuracy is low, it's safer to leave some margin (increase door_shrink)
📊 Recommended Setting Value Guidelines
Situation
Recommended door_shrink Value
Notes
Standard Use
0.6mm (Default)
Suitable for most cases
Too Tight
0.8mm ~ 1.2mm
Gradually increase to adjust
Too Loose
0.2mm ~ 0.4mm
Gradually decrease to adjust
High Accuracy Printer
0.4mm ~ 0.6mm
Can be set smaller if accuracy is high
Low Accuracy Printer
0.8mm ~ 1.0mm
Recommended to set larger if accuracy is low
⚠️ Important Notes
Setting door_shrink to 0.0mm means the door and room sizes theoretically match, but due to 3D printing shrinkage and errors, it may not fit
Conversely, setting door_shrink to 2.0mm (maximum) makes the door too small, potentially causing rattling in the room
The optimal value varies depending on your 3D printer and material, so we recommend adjusting through test prints
⚠️ Impact of Filament Type
The optimal clearance for doors and door knobs varies depending on the type and material of filament you use
Different materials such as PLA, ABS, PETG, and TPU have different shrinkage rates
For example, ABS has a higher shrinkage rate than PLA, so even with the same door_shrink or screw_slack values, the actual sizes may differ
If you change filaments, we recommend readjusting the clearance parameters (door_shrink, screw_slack)
⚠️ Importance of Trial Printing
For parts with critical clearances like door knobs and doors, it is very important to print only one piece at a time for testing until you find the optimal parameter values, rather than printing everything at once
If you print all doors and door knobs at once, and the parameters are not appropriate, you will waste a lot of material and time
First, print only one door and one door knob, and test how they fit into the room
After checking the fit, adjust door_shrink or screw_slack as needed, and repeat the process of printing one piece and testing
Once you find the optimal values, print all parts with those parameters
🔩 Screw Settings
Parameter
Description
Default
Options
screw_size
Screw size to use
"M5"
M3, M4, M5, M6, M7, M8
screw_slack
Diameter change amount
0.2
0-0.5 mm
💡 Printing Small Sizes: When creating a small advent calendar, it is recommended to make the screw thread clearance tight. Setting the screw slack to around 0.1mm ensures that screws are securely fixed even in small parts.
⚠️ Detailed Effects and Adjustment Methods for screw_slack
🎯 Effects and Changes Brought by screw_slack
The screw_slack parameter is an important parameter that controls the clearance (play) between screw holes and screw bodies. This value affects the following elements:
Screw Hole Size: The screw hole diameter increases according to the screw_slack value
Set as $slop = screw_slack / 4 in BOSL2's $slop global variable
According to BOSL2 specifications, $slop = 0.05 changes the diameter by approximately 0.2mm
That is, when screw_slack = 0.2, the screw hole diameter is approximately 0.2mm larger
Screw Body Size: The screw body diameter decreases according to screw_slack, similar to the screw hole
When screw_slack = 0.2, the screw body diameter is approximately 0.2mm smaller
In 3D printing, materials may shrink or printer accuracy may cause deviations from theoretical values
Therefore, appropriate screw_slack settings are important
🔧 How to Handle Tight Door Knobs (Screws)
When screws don't fit into screw holes or are difficult to turn:
Increase the screw_slack value (Recommended)
Gradually increase from the default value (0.2mm) to 0.3mm, 0.4mm, etc.
Can be set up to a maximum of 0.5mm
Example: screw_slack = 0.3; or screw_slack = 0.4;
Consider 3D Printing Shrinkage
3D printing materials can shrink during printing
Materials like PLA or ABS tend to make screw holes smaller
Therefore, it may be good to set screw_slack about 0.1-0.2mm larger
Check Screw Size
Verify the screw size using the screw_size parameter
Confirm that it matches the actual screw size you plan to use
If the screw size is too large, consider reducing screw_size
Check Print Accuracy
If your 3D printer has low accuracy, screw holes may be printed smaller
In that case, you need to set screw_slack larger
🔧 How to Handle Loose Door Knobs (Screws)
When screws fit loosely in screw holes and rattle:
Decrease the screw_slack value (Recommended)
Gradually decrease from the default value (0.2mm) to 0.1mm, 0.0mm, etc.
Can be set down to a minimum of 0.0mm (though 0.1mm is safer considering 3D printing shrinkage)
Example: screw_slack = 0.1; or screw_slack = 0.0;
For High Accuracy Printers
If your 3D printer has high accuracy, screws may fit well even with a smaller screw_slack
In that case, setting it to around 0.1mm will ensure secure fastening
Printing Small Sizes
When creating a small advent calendar, setting screw_slack to around 0.1mm ensures that screws are securely fixed even in small parts
Check Screw Size
If the actual screw size is smaller than the set screw_size, it may become loose
In that case, adjust screw_size to match the actual screw size
If Parameter Adjustment Doesn't Solve the Problem
If screws are still loose even with screw_slack set to 0.0mm, or if parameter adjustment alone doesn't solve the problem
Consider using adhesive
Using a small amount of adhesive (such as instant adhesive or epoxy) between the screw and screw hole can ensure secure fastening
If using adhesive, make sure the screw fits correctly before applying it
📊 Recommended Setting Value Guidelines
Situation
Recommended screw_slack Value
Notes
Standard Use
0.2mm (Default)
Suitable for most cases
Too Tight
0.3mm ~ 0.5mm
Gradually increase to adjust
Too Loose
0.0mm ~ 0.1mm
Gradually decrease to adjust
High Accuracy Printer
0.1mm ~ 0.2mm
Can be set smaller if accuracy is high
Low Accuracy Printer
0.3mm ~ 0.4mm
Recommended to set larger if accuracy is low
Small Size
0.1mm
Ensures secure fastening even in small parts
Large Size
0.2mm ~ 0.3mm
Leave some margin for large parts
⚠️ Important Notes
Setting screw_slack to 0.0mm means the screw hole and screw body sizes theoretically match, but due to 3D printing shrinkage and errors, screws may not fit
Conversely, setting screw_slack to 0.5mm (maximum) makes the screw hole too large, potentially causing screws to rattle
The optimal value varies depending on your 3D printer, material, and screw size, so we recommend adjusting through test prints
screw_slack is a parameter that directly specifies the diameter change amount (passed to BOSL2 as $slop = screw_slack / 4)
⚠️ Impact of Filament Type
The optimal clearance for doors and door knobs varies depending on the type and material of filament you use
Different materials such as PLA, ABS, PETG, and TPU have different shrinkage rates
For example, ABS has a higher shrinkage rate than PLA, so even with the same door_shrink or screw_slack values, the actual sizes may differ
If you change filaments, we recommend readjusting the clearance parameters (door_shrink, screw_slack)
⚠️ Importance of Trial Printing
For parts with critical clearances like door knobs and doors, it is very important to print only one piece at a time for testing until you find the optimal parameter values, rather than printing everything at once
If you print all doors and door knobs at once, and the parameters are not appropriate, you will waste a lot of material and time
First, print only one door and one door knob, and test how they fit into the room
After checking the fit, adjust door_shrink or screw_slack as needed, and repeat the process of printing one piece and testing
Once you find the optimal values, print all parts with those parameters
🎯 Object Generation Settings
Parameter
Description
Default
generate_house
Main advent calendar body
true
generate_roof_lower
Y-axis inner side roof
true
generate_roof_upper
Y-axis outer side roof
true
generate_doors
Doors for small and tall rooms
true
generate_door_knob
Objects with screws and screw heads
true
💡 Printing Tip: You can specify objects to generate individually, making printing easier. For example, you can generate and print only the house body first, then generate and print only the roof next. This staged printing approach allows you to print each part with optimal settings, and if something fails, you only need to reprint that specific part, making it more efficient.
💡 Multi-Color Printing Tip: You can specify various colors, so you can make good use of AMS (Automatic Material System) for multi-color printing, or keep colors simple for quick printing. You can create a vibrant finish with multi-color printing or print quickly with simple single or two-color printing. Choose flexibly according to your needs and preferences.
💡 Winter Atmosphere: For winter seasons and events, setting the upper roof to white creates a snow-covered atmosphere. Perfect for Christmas and winter events!
🎯 Use Cases
Christmas Gifts
Perfect for a 24-day advent calendar, opening one gift each day from December 1st to 24th
Ideal for storing small toys or candies for children
Event Calendar
Countdown calendar for weddings
Birthday countdown
Anniversary countdown
Educational Tool
Number learning (color-coding even, odd, and prime numbers with door numbers)
Learning date concepts
Countdown practice
Decoration
Place next to the Christmas tree
Use as living room interior decoration
Handmade gift idea
💡 Key Highlights
Fully Automatic Layout: Just specify the number of days, and the optimal house size and room arrangement are calculated automatically. No manual adjustment needed!
Flexible Customization: Fine-tune room sizes, wall thicknesses, roof shapes, and more. Adjust to your preferred size.
Emoji Support: Use Noto Emoji to place emojis in empty spaces. Easily create a Christmas-themed design!
Numbered Doors: Automatically generates numbered doors for each room. Color-coding for even, odd, and prime numbers is also possible.
Staged Printing: Generate house body, roof, doors, screws, and more individually. Print only the parts you need and assemble in stages.
3D Printing Optimized: Designed with 3D printing in mind, including minimum thickness constraints and rounded corner processing.
Automatic Tall Room Adjustment: By specifying the minimum number of tall rooms to generate, adjacent 1x1 rooms are automatically merged to create tall rooms. The layout is automatically optimized.
Complete Cell Coverage: All cells are properly assigned as either rooms or empty spaces (emojis), ensuring no unused cells remain.
🎬 Usage Scenarios
Christmas Season: Perfect as a 24-day advent calendar from December 1st to 24th, opening one gift each day
Gifts: Handmade Christmas gift for family and friends
Education: Educational tool to teach children about numbers and dates
Interior: Christmas season decoration for the living room
Events: Countdown calendar for weddings, birthdays, and other special occasions
🔧 Customization Tips
Small Size: Reduce room sizes to create a compact advent calendar
Large Size: Increase room sizes to accommodate larger gifts
Color Coding: Use even, odd, and prime number color-coding for number learning
Emoji Combinations: Combine various emojis to create original designs
Size Flexibility: Each part can be freely sized and designed, making it easy to create both miniature advent calendars and large-scale advent calendars. By adjusting all parameters such as room size, wall thickness, and roof shape, you can flexibly customize to your preferred size.
📝 Notes
Support material may be required when 3D printing
Doors are automatically generated to match room sizes, but there may be slight variations from actual room sizes
Adjust screw sizes to match the screws you plan to use
⚠️ Verification for Tight Settings
When using tight settings (settings with strict constraints such as min_tall_rooms or min_empty_spaces), the model may not be generated exactly as specified
In particular, setting min_tall_rooms to a large value or specifying many min_empty_spaces may result in the number of rooms or empty spaces not matching the specified values due to layout constraints
Before printing, always verify that the number of rooms and empty spaces in the generated model match the specified values
If the number of rooms differs from the specification, adjust the parameters (min_tall_rooms, min_empty_spaces, number_of_days, etc.) and try generating again