// ബാഹ്യ രൂപത്തിനുള്ള അളവുകൾ
outer_diameter_start = 38;
outer_diameter_end = 32;
മൊത്തം_ഉയരം = 20; // ആകെ ഉയരം 20 മില്ലീമീറ്ററായി സജ്ജമാക്കി
// അകത്തെ ദ്വാരത്തിനുള്ള അളവുകൾ
hole_diameter_start = 15;
hole_diameter_end = 12;
// സിലിണ്ടറിനെ വൃത്താകൃതിയിലാക്കാനുള്ള വശങ്ങളുടെ എണ്ണം
fn = 100;
// വൃത്താകൃതിയിലുള്ള കോണുകൾ ഉപയോഗിച്ച് പുറം രൂപം സൃഷ്ടിക്കുക
മൊഡ്യൂൾ tapered_cylinder(d1, d2, h) {
വ്യത്യാസം() {
സിലിണ്ടർ (h = h, d1 = d1, d2 = d2, $fn = fn);
വിവർത്തനം ചെയ്യുക([0, 0, -0.5]) // പൂർണ്ണമായ കുറയ്ക്കൽ ഉറപ്പാക്കാൻ അകത്തെ സിലിണ്ടർ ചെറുതായി താഴ്ത്തുക
സിലിണ്ടർ (h = h + 1, d1 = d1 - 2, d2 = d2 - 2, $fn = fn); // ചെറുതായി ചെറിയ സിലിണ്ടർ വൃത്താകൃതിയിലുള്ള അരികുകളിലേക്ക് കുറയ്ക്കുക
}
}
// അകത്തെ ദ്വാരം ഉണ്ടാക്കുക
മൊഡ്യൂൾ ഹോൾ (d1, d2, h) {
സിലിണ്ടർ (h = h, d1 = d1, d2 = d2, $fn = fn);
}
// ലോക്കിംഗ് സവിശേഷതകളുമായി രൂപങ്ങൾ സംയോജിപ്പിക്കുക
മൊഡ്യൂൾ object_with_hole() {
വ്യത്യാസം() {
tapered_cylinder(outer_diameter_start, outer_diameter_end, total_height / 2);
വിവർത്തനം ചെയ്യുക([0, 0, -1]) // പൂർണ്ണമായ നുഴഞ്ഞുകയറ്റത്തിനായി ദ്വാരം അൽപ്പം താഴെയായി ആരംഭിക്കുക
ദ്വാരം (ദ്വാരം_വ്യാസം_ആരംഭം, ദ്വാരം_വ്യാസം_അവസാനം, മൊത്തം_ഉയരം / 2 + 2); // ദ്വാരം പൂർണ്ണമായും കടന്നുപോകുന്നുണ്ടെന്ന് ഉറപ്പാക്കുക
}
}
// ലോക്കിംഗ് മെക്കാനിസം വിഭജിച്ച് ചേർക്കുക
മൊഡ്യൂൾ split_and_lock() {
കവല() {
ഒബ്ജക്റ്റ്_വിത്ത്_ഹോൾ();
വിവർത്തനം ചെയ്യുക ([-20, -20, 0]) ക്യൂബ് ([40, 40, 10]); // താഴത്തെ പകുതി
}
കവല() {
ഒബ്ജക്റ്റ്_വിത്ത്_ഹോൾ();
വിവർത്തനം ചെയ്യുക ([-20, -20, 10]) ക്യൂബ് ([40, 40, 10]); // മുകളിലെ പകുതി
വിവർത്തനം ചെയ്യുക ([0, 0, 10])
സിലിണ്ടർ (h = 2, d = 5, $fn = fn); // ലോക്കിംഗ് പിൻ
}
}
// ഭാഗങ്ങൾ റെൻഡർ ചെയ്യുക
വിവർത്തനം ചെയ്യുക ([0, -50, 0]) split_and_lock();
വിവർത്തനം ചെയ്യുക ([0, 50, 0]) split_and_lock();