OpenSCAD काफ़ी शानदार है
(nuxx.net)- OpenSCAD का उपयोग करके एक साधारण बैटरी होल्डर डिज़ाइन करते हुए code-based CAD की बुनियादी अवधारणाओं को समझने का एक उदाहरण
- पहले Autodesk Fusion में AA·AAA बैटरियों के लिए parameterized बॉक्स बनाया गया था, और सीखने के लिए उसे OpenSCAD में फिर से बनाया गया
- कोड में
numRows,numColumns,batteryTypeजैसी variables बदलने भर से कस्टम होल्डर बनाया जा सकता है, और महंगे CAD software के बिना भी वही परिणाम हासिल किए जा सकते हैं difference()औरtranslate()का उपयोग करके बॉक्स और छेदों को बार-बार बनाकर/हटाने वाली संरचना, जो सरल लेकिन प्रभावी डिज़ाइन तरीका है- जटिल models के लिए सीमाएँ हैं, लेकिन spacer·bearing drift जैसी सरल ज्यामितीय संरचनाएँ बनाने में उपयोगी टूल माना गया है
OpenSCAD से बैटरी होल्डर डिज़ाइन
- AA और AAA बैटरियों के लिए बुनियादी बॉक्स-आधारित organizer को Autodesk Fusion में डिज़ाइन करने के बाद, उसे OpenSCAD में फिर से बनाया गया
- मौजूदा Fusion मॉडल में variables बदलकर बैटरी का आकार, पंक्तियाँ और कॉलम बदले जा सकते थे, यानी यह parameterized संरचना थी
- पूरा मॉडल Printables पर अपलोड किया गया
- OpenSCAD एक ऐसा CAD टूल है जो code लिखकर 3D objects बनाता है, इसलिए सरल संरचना वाले models सीखने के लिए उपयुक्त है
- लेखक ने OpenSCAD tutorial के कुछ हिस्सों का सहारा लेकर लगभग एक घंटे तक अभ्यास किया
- परिणाम
battery_holder_generator.scadफ़ाइल के रूप में सार्वजनिक किया गया
कोड संरचना और काम करने का तरीका
- मुख्य variables के रूप में
AA,AAA,heightCompartment,thicknessWall,numRows,numColumns,batteryTypeआदि को परिभाषित किया गयाwidthBox,lengthBox,depthBoxइन variables के संयोजन से निकाले जाते हैं
difference()फ़ंक्शन से मूल बॉक्स (cube) बनाया जाता है, फिर उसके अंदर बैटरी के छेद बार-बार घटाए जाते हैंforloop औरtranslate()का उपयोग करके छेदों की स्थिति निकाली जाती है, औरcube()से हर छेद बनाया जाता है- लेखक ने कहा कि
let()का उपयोग करकेstartColumn,startRowको loop के भीतर परिभाषित करना थोड़ा उलझाने वाला था
OpenSCAD और Fusion की तुलना
- एक ही मॉडल को Fusion और OpenSCAD दोनों में बनाकर slicer में तुलना की गई
- नतीजे में प्रिंट आउट लगभग एक जैसे थे, और OpenSCAD में हल्के code-based approach के कारण तेज़ी से बदलाव करना संभव था
- महंगे CAD software के बिना भी समान स्तर का परिणाम पाया जा सकता है
उपयोग की संभावनाएँ और सीमाएँ
- जटिल डिज़ाइनों के लिए यह उपयुक्त नहीं है, लेकिन spacer·bearing drift जैसी सरल ज्यामितीय संरचनाएँ बनाने में बहुत उपयोगी है
- रोज़मर्रा की ज़िंदगी में बार-बार ज़रूरत पड़ने वाले सरल parts के automated निर्माण में इसकी खास ताकत है
- OpenSCAD का code-केंद्रित डिज़ाइन तरीका दोहराव वाली और नियमबद्ध संरचनाएँ बनाने में प्रभावी है
निष्कर्ष
- OpenSCAD को एक ऐसा code-based CAD टूल माना गया है जो सरल 3D models को तेज़ी से बना सकता है
- लेखक ने इसे इस तरह व्यक्त किया: “यह बस एक बॉक्स बनाकर उसमें छेद करने जैसा है, लेकिन काफ़ी शानदार है।”
- आगे चलकर सरल डिज़ाइन कार्यों में Fusion की तुलना में OpenSCAD ज़्यादा व्यावहारिक हो सकता है
2 टिप्पणियां
Hacker News की राय
OpenSCAD एक CAD टूल है जो प्रोग्रामर वाली सोच के लिए बिल्कुल फिट बैठता है
इसमें हर चीज़ को parameterize किया जा सकता है, इसलिए एक बार बनाया गया project enclosure सिर्फ कुछ variables बदलकर कई versions में जनरेट किया जा सकता है
नवीनतम nightly build में Manifold backend सेट करने पर rendering speed मिनटों से घटकर सेकंडों में आ जाती है
आधिकारिक 2021 release अब बहुत पुरानी हो चुकी है, इसलिए इस्तेमाल करना मुश्किल लगता है
BOSL2 library fillet, rounding, attachment जैसी सुविधाएँ जोड़कर OpenSCAD को खिलौना-स्तर से एक व्यावहारिक design tool बना देती है
यह Git-friendly भी बहुत है, इसलिए Fusion 360 की binary files की तुलना में .scad files के changes को compare करना कहीं आसान है
OpenSCAD की सीमाएँ महसूस होने पर Python में SDF(signed distance function) आधारित 3D mesh generation library sdf खुद बनाई
Python की flexible logic का उपयोग करके models बनाए जा सकते हैं, और मौजूदा 3D meshes import करके erosion, expansion, cutting, hollowing जैसे काम भी किए जा सकते हैं
इस project में अभी बहुत काम बाकी है, लेकिन लगता है कि इस क्षेत्र में काफ़ी रुचि है
STL bitmap की तरह triangle coordinates स्टोर करता है, जबकि STEP vector art की तरह model creation commands स्टोर करता है
ज़्यादातर GUI CAD STEP-आधारित होते हैं, इसलिए compatibility अच्छी रहती है
अगर SDF सिर्फ STL ही बनाता है, तो GUI CAD के साथ compatibility को देखते हुए शायद Build123d या CadQuery सीखना बेहतर होगा
Build123d में Fusion360 या FreeCAD की तरह पहले 2D sketch बनाकर उसे 3D में बदलने का concept है, इसलिए GUI और code-based CAD के बीच आना-जाना आसान रहता है
Meshlab जैसे tools में error messages इतने उलझे हुए थे कि काम नहीं बन पाया, लेकिन इस तरीके से यह कहीं ज़्यादा intuitive लग रहा है
हाल ही में OpenSCAD इस्तेमाल करना शुरू किया, और जहाँ ज़्यादातर CAD tools में ढेरों features सीखने पड़ते हैं, वहीं OpenSCAD को एक A4 पेज की cheatsheet में समझाया जा सकता है
2021 release की जगह git master version इस्तेमाल करें तो यह काफ़ी तेज़ है और नए features भी मिलते हैं
BOSL2 library इस्तेमाल करने पर traditional CAD की जटिल सुविधाएँ खुद implement नहीं करनी पड़तीं, और उसके अंदर का implementation देखकर सीखने में भी मज़ा आता है
GUI CAD में 0.25mm का छोटा-सा बदलाव करने पर सारे holes और cutouts फिर से adjust करने पड़ते थे, जो बहुत frustrating था, लेकिन code-based approach से यह समस्या टल जाती है
BOSL2 का default center origin transformations को बहुत आसान बना देता है
खेद है कि OpenSCAD में object concept नहीं है, इसलिए box1.width जैसी access संभव नहीं है
Build123d इस्तेमाल किया, लेकिन उसमें bugs बहुत हैं और documentation भी कमज़ोर है। उम्मीद है, कभी यह बेहतर होगा
OpenSCAD की ताकत यह है कि sphere, cylinder, cube को गणितीय रूप से combine करके modeling करना आसान है
इसकी कमी यह है कि वही गणितीय combination क्षमता इसकी modeling limits भी तय करती है
Python support वाला PythonSCAD fork जल्द ही main release में merge होने वाला है
bolt जैसी चीज़ का model बनाना हो तो हर हिस्से को अलग बनाकर overlap कराना पड़ता है
वास्तविक parts के साथ align करने के लिए बहुत-सी manual calculations करनी पड़ती हैं, और hardcoded dimensions बदलना मुश्किल होता है
नवीनतम beta renderer काफ़ी तेज़ है, इसलिए उसे ज़रूर आज़माना चाहिए
GitHub repository देखें
मुझे lightweight 3D modeler के रूप में OpenSCAD की simplicity पसंद है
बड़े GUI CAD की जगह, graphics programming की तरह सिर्फ basic shapes और transformations से model बनाया जा सकता है
काफ़ी समय बाद भी code खोलो तो कुछ lines देखकर तुरंत समझ आ जाता है
जिन constraints में mathematical calculations चाहिए होती हैं, वहाँ GUI CAD की sketch features कहीं आसान होती हैं
CAD में step-by-step पीछे जाकर structure देखा जा सकता है, इसलिए script को interpret करने की ज़रूरत नहीं पड़ती
OpenSCAD में built-in editor की जगह external editor इस्तेमाल किया जा सकता है
external editor में save करते ही preview अपने-आप refresh हो जाता है
external editor setup guide
पहले OpenSCAD की शुरुआती सीख के लिए “10 मुख्य concepts” वाला tutorial लिखा था
tutorial link
टिप:
$fnvariable सेट करके resolution control किया जा सकता है$fn = $preview ? 32 : 64;visual smoothness से ज़्यादा analysis accuracy अहम होती है, इसलिए 32~64 के आसपास ठीक रहता है
व्यवहारिक रूप से उपयोगी model बनाने में मेहनत ज़रूर लगती है, लेकिन 2KB की text file में पूरा parametric model व्यक्त कर पाना बेहद आकर्षक है
Git diff भी अर्थपूर्ण तरीके से काम करता है, और customizer panel से model को app की तरह adjust किया जा सकता है
FreeCAD की भारी-भरकम XML files की तुलना में यह कहीं ज़्यादा efficient है
लेकिन chamfer या rounding जैसी सुविधाएँ built-in नहीं हैं, इसलिए cone या sphere के साथ minkowski operations का सहारा लेना पड़ता है, जो थोड़ा झंझट भरा है
मैं
freecadकी ज़ोरदार सिफारिश करता हूँ।