दस्तावेज़
सीएडी ज्यामिति
एक साझा ज्यामिति कोर में इकाइयाँ, विवश रेखाचित्र, पैरामीट्रिक इतिहास, जाल और सटीक ठोस आरेखण।
अंग्रेज़ी से स्वचालित रूप से अनुवादित। अंग्रेज़ी मूल देखें
ड्राइंग इकाइयाँ
@cadcamfun/core निर्यात CAD कार्य सीधे और इसके अंतर्गत दोनों कार्य करता है cad नामस्थान. स्कीमा-प्रथम 2डी इकाइयां एक का उपयोग करती हैं _tag विभेदक: रेखा, वृत्त, चाप, पॉलीलाइन, आयत, दीर्घवृत्त, तख़्ता, पाठ, आयाम, हैच और ब्लॉक। प्रत्येक इकाई में एक स्थिर पहचानकर्ता, परत, दृश्यता और लॉक स्थिति होती है; चयन संपादक राज्य का है।
इकाई ज्यामिति मिलीमीटर और रेडियन का उपयोग करती है। चाप कोणों को एक पूर्ण मोड़ के लिए सामान्यीकृत किया जाता है, और समान प्रारंभ/अंत कोण एक पूर्ण वृत्त का प्रतिनिधित्व करते हैं। एक स्थानीय इकाई परिवर्तन स्केल, रोटेशन, फिर अनुवाद लागू करता है; Affine2D रचित परिवर्तनों का समर्थन करता है जिसमें कतरनी शामिल हो सकती है। दृश्य-तत्व और पैरामीट्रिक-इतिहास एडेप्टर के पास अपने स्वयं के प्रलेखित कोणीय क्षेत्र हैं, जिनमें डिग्री-मूल्यवान प्लेसमेंट और फीचर नियंत्रण शामिल हैं।
entitySchemaOf(tag) एक इकाई प्रकार के लिए स्कीमा लौटाता है। ज्योमेट्री फ़ंक्शंस को कॉल करने से पहले आयातित डेटा को डिकोड करें। बाउंड, टेसेलेशन, इंटरसेक्शन, ऑफसेट और स्नैपिंग अलग-अलग ऑपरेशन हैं; टेस्सेलेटेड वक्र का प्रतिपादन इसकी विश्लेषणात्मक इकाई को प्रतिस्थापित नहीं करता है।
विवश रेखाचित्र
स्केच मॉडल में नामित बिंदु, बिंदुओं के बीच की रेखाएं, केंद्र और त्रिज्या वाले वृत्त और वामावर्त चाप शामिल हैं। साझा बिंदु पहचानकर्ता साझा समापन बिंदु व्यक्त करते हैं। बाधाओं में संयोग, क्षैतिज और ऊर्ध्वाधर संरेखण, दूरियां, लंबाई, समानांतर और लंबवत रेखाएं, समान लंबाई और त्रिज्या, स्पर्शरेखा, समरूपता और ज्यामितीय घटना शामिल हैं।
संख्यात्मक सॉल्वर लेवेनबर्ग-मार्क्वार्ड पुनरावृत्ति और केंद्रीय-अंतर जैकोबियन के साथ बाधा अवशेषों को कम करता है। यह स्वतंत्रता की डिग्री, मुक्त अंक, अनावश्यक समीकरण और परस्पर विरोधी बाधाओं की रिपोर्ट करता है। कोई परिणाम पूरी तरह से बाधित, अल्प-बाधित, अति-बाधित, परस्पर विरोधी या असफल हो सकता है। एक कम-बाधित समाधान गति की अनुमति देते हुए हर आयाम को संतुष्ट कर सकता है; कॉल करने वालों को उस अंतर को बनाए रखना होगा।
स्केच बाधाओं से संख्याएँ प्राप्त होती हैं। पैरामीट्रिक इतिहास सॉल्वर को लागू करने से पहले पैरामीटर अभिव्यक्तियों को हल करता है। स्केच कोण बाधाएं रेडियन हैं; उपयोगकर्ता द्वारा दर्ज किए गए आयाम को परिवर्तित करते समय सुविधा के स्वयं के इनपुट कन्वेंशन का उपयोग करें।
पैरामीट्रिक इतिहास
एक पैरामीट्रिक भाग अपने मापदंडों और ऑर्डर किए गए फीचर इतिहास को संग्रहीत करता है। पुनर्निर्माण अनुक्रम में अभिव्यक्तियों और विशेषताओं का मूल्यांकन करता है ताकि एक सुविधा पहले बनाए गए रेखाचित्रों, विमानों, निकायों या उपकरणों का संदर्भ दे सके। कोर में एक्सट्रूज़न, क्रांतियाँ, लोफ्ट्स और स्वीप्स, बूलियन्स, होल, पैटर्न, फेस एडिट्स, टेक्स्ट, थ्रेड्स, शीट-मेटल फीचर्स और मेटिंग कंट्रोल शामिल हैं। सटीक प्रतिनिधित्व की उपलब्धता विशिष्ट सुविधा अनुक्रम पर निर्भर करती है।
rebuild मेश बॉडी और फ़ीचर समस्याएँ उत्पन्न करता है। rebuildExact सीमा-प्रतिनिधित्व कर्नेल के माध्यम से इतिहास को दोहराता है और रिकॉर्ड करता है कि किसी निकाय में सटीक प्रतिनिधित्व का अभाव क्यों है। इतिहास को संपादन योग्य स्रोत के रूप में रखें; उत्पन्न निकाय व्युत्पन्न आउटपुट हैं। एक विफल या असमर्थित सुविधा को उसके जारी रिकॉर्ड के माध्यम से दृश्यमान रहना चाहिए।
रीप्ले परिणाम पढ़ें
मेश आउटपुट तब मौजूद हो सकता है जब सटीक रीप्ले किसी सुविधा का प्रतिनिधित्व नहीं कर सकता। सटीक ज्यामिति, आयतन या निर्यात निष्ठा के बारे में दावे करने से पहले मुख्य भाग की जाँच करें और रिकॉर्ड जारी करें।
मेष ज्यामिति और प्लेसमेंट
मेष अनुक्रमित त्रिभुज ज्यामिति का उपयोग करते हैं। सीएडी परत आदिम निर्माण, जाल बूलियन, स्वीप और लॉफ्ट सहायक, टोपोलॉजी और सामान्य उपयोगिताएँ, और ज्यामिति सफाई प्रदान करती है। सीएएम मॉडल एडाप्टर नेस्टेड घटकों सहित समर्थित दृश्य तत्वों को मेष में परिवर्तित करता है, इसलिए विश्लेषण और टूलपाथ पीढ़ी समान ज्यामिति का उपयोग कर सकती है।
तत्व की स्थिति, घूर्णन, पैमाना और अनुवाद परिणामी भाग को प्रभावित करते हैं। सटीक दृश्य प्लेसमेंट बाउंडिंग-बॉक्स केंद्र के बारे में व्यूपोर्ट परिवर्तन को प्रतिबिंबित करता है। गैर-समान स्केलिंग किसी तत्व के सटीक-मॉडल पथ को हटा सकती है; दृश्य रूपांतरण एक कारण की रिपोर्ट करता है और निर्यात के दौरान एक पहलू प्रतिनिधित्व का उपयोग कर सकता है।
सटीक सीमा प्रतिनिधित्व
cad.brep फेस, लूप, एज-यूज़, एज और वर्टेक्स टोपोलॉजी के साथ विश्लेषणात्मक और NURBS ज्यामिति को उजागर करता है। इसके मॉड्यूल प्राइमेटिव्स, स्वीप्स, लॉफ्ट्स, बूलियन्स, फेस एडिट्स, ब्लेंड्स, सिलाई, टेस्सेलेशन, वर्गीकरण, सत्यापन, बड़े पैमाने पर गुण और एसटीईपी पढ़ने और लिखने को कवर करते हैं। history-brep.ts और scene-step.ts इस कर्नेल को पैरामीट्रिक भागों और रखे गए दृश्य तत्वों से कनेक्ट करें।
POST /api/cad/exact/analyze प्रति-भाग वैधता मुद्दे, आयतन, क्षेत्र, केन्द्रक, सीमाएँ, टोपोलॉजी गणना, सतह गणना, मान्यता प्राप्त छेद और मशीनिंग वर्गीकरण लौटाता है। यह छोड़े गए तत्वों को कारणों और कुल योग के साथ भी लौटाता है। एक प्रिज्मीय मशीनिंग परिणाम रूपरेखा, छेद, जेब और ऊपर/नीचे के स्तर की रिपोर्ट करता है; असमर्थित भाग एक कारण रखते हैं।
POST /api/cad/exact/assembly हस्तक्षेप, अपेक्षित ओवरलैप, स्पर्श और अनिर्धारित जोड़े, बिल-ऑफ-मटेरियल आइटम, जोड़ों और फास्टनर योजनाओं की रिपोर्ट करता है। अनिर्धारित ज्यामिति एक रिपोर्ट किया गया परिणाम है, क्लीयरेंस का प्रमाण नहीं। ये विश्लेषण मार्ग ड्राइंग में बदलाव किए बिना परिणामों की गणना करते हैं।
आयात और निर्यात
कोर में डीएक्सएफ और ड्राइंग-इम्पोर्ट सहायक, एक प्रिज्मीय एसटीईपी व्याख्या पथ और एक सटीक एसटीईपी बी-रेप रीडर है। प्रिज्मीय पथ उपयुक्त प्लेटों, ब्रैकेट और फ्लैंज के लिए पदचिह्न और एक्सट्रूज़न ऊंचाई को पढ़ता है; यह उन विशेषताओं की रिपोर्ट करता है जिनका वर्णन एक प्रिज्म नहीं कर सकता। जब सटीक समर्थित STEP टोपोलॉजी की आवश्यकता हो तो सटीक रीडर चुनें और किसी भी पथ से निदान का निरीक्षण करें।
sceneToStep एक दृश्य को STEP AP214 के रूप में लिखता है। सटीक समर्थित ठोस सटीक ज्यामिति बनाए रखते हैं; जाल-केवल ठोसों को मुखित ठोसों के रूप में उत्सर्जित किया जा सकता है। अठोस तत्वों को कारण सहित छोड़ दिया जाता है। faceted option उस फ़ॉलबैक को नियंत्रित करता है। बिना एक प्रतिक्रिया step इसमें कोई निर्यात योग्य ठोस पदार्थ नहीं है।
HTTP सटीक मार्ग या तो स्वीकार करते हैं elements या drawingId; स्पष्ट तत्वों को प्राथमिकता दी जाती है। स्नैपशॉट सरणियाँ 1–2,000 तत्वों और अधिकतम 200 पहचानकर्ताओं के वैकल्पिक चयन की अनुमति देती हैं। संग्रहीत ड्राइंग के साथ, साइडकार ड्राइंग एक्सेस नियमों के तहत दृश्य को पढ़ता है। एक गुम स्रोत, खाली ड्राइंग, अज्ञात ड्राइंग, या अस्वीकृत ड्राइंग संबंधित अनुरोध या एक्सेस त्रुटि उत्पन्न करता है।
तकनीकी चित्र
The drawing नेमस्पेस 3डी मॉडल से अनुमान, अनुभाग, आयाम, शीट संरचना और एसवीजी आउटपुट प्रदान करता है। यह संपादन योग्य 2डी इकाई ड्राइंग और एक मशीनिंग प्रोग्राम से एक अलग प्रतिनिधित्व है। मॉडल परिवर्तन के बाद प्रक्षेपण और अनुभाग ज्यामिति को पुनर्जीवित किया जाना चाहिए; एक शीट निर्यात इसे बनाने के लिए उपयोग की गई मॉडल स्थिति को कैप्चर करता है।
ज्यामिति का विस्तार कहां करें
के साथ शुरू packages/core/src/cad/index.ts सार्वजनिक सीएडी सतह के लिए। इकाई संचालन बगल में रहते हैं entities.ts; बाधा समाधान शामिल है sketch.ts; जाल इतिहास में है history.ts; सटीक रीप्ले मौजूद है history-brep.ts; सटीक टोपोलॉजी और एक्सचेंज नीचे हैं brep/. packages/core/src/drawing/ शीट आउटपुट का मालिक है। एक ही फ़ोल्डर में सहायक मॉड्यूल शामिल हैं expr.ts (पैरामीटर अभिव्यक्ति जैसे width / 2 + 3, त्रुटियों के रूप में रिपोर्ट किए गए चक्रों के साथ निर्भरता क्रम में हल किया गया), tolerance.ts (कॉर्ड-सगिट्टा खंड वक्रों के लिए गिना जाता है), gear.ts (आईएसओ 53 इन्वॉल्व स्पर-गियर आउटलाइन), thread.ts, sheet-metal.ts, fasteners.ts, recipes.ts (जेनरेटर जो पूर्ण, पूरी तरह से प्रतिबंधित फीचर इतिहास उत्सर्जित करते हैं), dfm.ts (मापा और आवश्यक मूल्यों के साथ निर्माण के लिए डिजाइन निष्कर्ष), और dxf.ts.
ज्योमेट्री फ़ंक्शंस एप्लिकेशन स्टोरेज को खोले बिना मानों पर काम करते हैं। साइडकार सेवाएँ पहुँच और दृढ़ता को संभालती हैं, और डेस्कटॉप एडेप्टर इंटरैक्शन और रेंडरिंग को संभालते हैं। सीमाओं पर रूपांतरणों को स्पष्ट रखें ताकि एक डिस्प्ले जाल, एक सटीक ठोस और एक सहेजा गया इतिहास अपना विशिष्ट अर्थ बनाए रखे।
ठोस निर्माण, सत्यापन और निर्यात करें
यह संपूर्ण मुख्य उदाहरण विश्व मूल पर एक कोने के साथ एक 40 × 25 × 8 मिमी बॉक्स का निर्माण करता है, इसकी टोपोलॉजी की जांच करता है, इसे मापता है, और STEP टेक्स्ट निर्यात करता है। इसके लिए केवल वर्कस्पेस कोर पैकेज की आवश्यकता होती है और कोई एप्लिकेशन लिखना नहीं होता है।
import { cad } from "@cadcamfun/core"
const solid = cad.brep.makeBox(40, 25, 8)
const report = cad.brep.validateBrep(solid)
if (!report.valid) throw new Error(JSON.stringify(report.issues))
const mass = cad.brep.massProperties(solid)
console.log(mass.volume.toFixed(3)) // "8000.000" cubic millimetres
console.log(mass.centroid) // approximately { x: 20, y: 12.5, z: 4 }
const step = cad.brep.writeStepBreps([{ name: "Bracket blank", brep: solid }], {
author: "Workshop",
timestamp: "2026-01-01T00:00:00.000Z"
})
console.log(step.startsWith("ISO-10303-21;")) // true स्पष्ट टाइमस्टैम्प बार-बार एक्सचेंज आउटपुट को प्रतिलिपि प्रस्तुत करने योग्य बनाता है। इसके बिना, STEP लेखन वर्तमान समय का उपयोग करता है। massProperties इकाई घनत्व पर केन्द्रक के बारे में क्षेत्र, प्रति-चेहरा क्षेत्र और एक जड़ता टेंसर भी लौटाता है; आयतन mm³ है और क्षेत्रफल mm² है। भौतिक द्रव्यमान की गणना करते समय घनत्व को स्पष्ट रूप से परिवर्तित करें।
स्रोत: packages/core/src/cad/brep/primitives.ts, mass.ts, validate.ts, और step.ts.
सत्यापन और रूपांतरण विकल्प
validateBrep रिटर्न valid, रिकॉर्ड जारी करें, manifoldSolid, और वैकल्पिक जीनस/वॉल्यूम। manifoldSolid इसका मतलब है कि प्रत्येक किनारे के साथ बंद गोले विपरीत अर्थों में दो बार उपयोग किए जाते हैं। डिफ़ॉल्ट ज्यामितीय दूरी सहनशीलता स्केल 10⁻⁶ मिमी फर्श के साथ मॉडल आकार के 10⁻⁵ के रूप में होता है। एक कॉलर आपूर्ति कर सकता है tol, वॉल्यूम/ओरिएंटेशन जांच छोड़ें skipVolume, या अभिविन्यास के लिए एक मोटे टेसलेशन का उपयोग करें coarseVolume.
सटीक-विश्लेषण एपीआई machining ध्वज डिफ़ॉल्ट रूप से सत्य है। STEP दृश्य निर्यात faceted फ़ॉलबैक डिफ़ॉल्ट सत्य है, और असेंबली फास्टनर योजना है washers विकल्प डिफ़ॉल्ट रूप से सत्य है। चयन आईडी दृश्य तत्वों को संदर्भित करता है, जिसमें दृश्य ट्रैवर्सल द्वारा हल किए गए घटक बच्चे भी शामिल हैं। ये HTTP विकल्प विश्लेषण/निर्यात को प्रभावित करते हैं, संग्रहित ड्राइंग को नहीं।
दृश्य निर्यात प्रति भाग रिटर्न देता है exact, faces, valid, और एक वैकल्पिक नोट। साथ में उन फ़ील्ड की जाँच करें skipped: एक वैध पहलूदार ठोस विश्लेषणात्मक सतहों को बनाए रखे बिना निर्यात योग्य हो सकता है।
स्रोत: packages/core/src/cad/brep/validate.ts, scene-analysis.ts, scene-step.ts, assembly-analysis.ts, और packages/api/src/cad-exact.ts.
किसी विफल पुनर्निर्माण या निर्यात की मरम्मत करें
| खोज | अगला निरीक्षण |
|---|---|
| स्केच अंडर-विवश रहता है | स्वतंत्रता की डिग्री और फ्री-पॉइंट आईडी पढ़ें। लुप्त स्थिति/अभिविन्यास बाधाओं को जोड़ें; केवल एक निश्चित समापन बिंदु वाली एक आयामी रेखा अभी भी घूम सकती है। |
| स्केच बाधाएँ संघर्ष | असंगत आयामों का पता लगाने के लिए नामित विरोध आईडी और अवशिष्ट का उपयोग करें। एक संगत समीकरण को दोहराना अतिरेक है; दो अलग-अलग आवश्यक लंबाई एक संघर्ष हैं। |
| इतिहास फीचर किसी अज्ञात पिंड या विमान का संदर्भ देता है | सुविधा क्रम और पहचानकर्ताओं की जाँच करें। निर्भरताएँ रीप्ले में पहले से मौजूद होनी चाहिए, और दमन/हटाने से बाद के संदर्भ अमान्य हो सकते हैं। |
| स्केलिंग के बाद सटीक मॉडल अनुपलब्ध है | गैर-समान पैमाने और तत्व के रिपोर्ट किए गए कारण का निरीक्षण करें। समर्थित एकसमान प्लेसमेंट का उपयोग करें या एक पहलू वाले निर्यात को स्वीकार करें और लेबल करें। |
| STEP परिणाम में आइटम छोड़ दिए गए हैं या कोई पाठ नहीं है | जांचें कि क्या चयन में ठोस पदार्थ शामिल हैं और क्या फ़ैसेटेड फ़ॉलबैक सक्षम है। खाली या 2D-केवल चयन एक ठोस STEP फ़ाइल नहीं बना सकते। |
आदिम आयाम सकारात्मक और सीमित होने चाहिए। प्रत्यक्ष ज्यामिति फ़ंक्शन अमान्य आयामों के लिए श्रेणी त्रुटियाँ उत्पन्न कर सकते हैं; परिवहन और सेवा परतों को उन विफलताओं को अपने स्वयं के टाइप किए गए परिणामों में परिवर्तित करना होगा। पुनर्निर्माण के मुद्दों को फीचर आईडी से जोड़ा जाता है ताकि किसी विफलता को पहले वाले जाल को बनाए रखकर छुपाने के बजाय उसके स्रोत पर ही ठीक किया जा सके।
स्रोत: packages/core/src/cad/sketch.test.ts, history.ts, scene-step.ts, और apps/sidecar/test/cad-exact.test.ts.
एक स्केच को चरण दर चरण हल करें
एक स्केच सादा डेटा है: की एक सरणी entities (बिंदु, रेखाएं, वृत्त, चाप) और एक सरणी constraints. रेखाएं, वृत्त और चाप पहचानकर्ता द्वारा बिंदुओं को संदर्भित करते हैं, इसलिए एक समापन बिंदु साझा करने वाली दो रेखाएं समान बिंदु आईडी साझा करती हैं। सॉल्वर केवल बिंदु निर्देशांक और वृत्त त्रिज्या को चलाता है; यह कभी भी इकाइयों को जोड़ता या हटाता नहीं है।
fully-constrained साथ dof = 0.import { cad } from "@cadcamfun/core"
const sketch = {
entities: [
{ id: "p1", kind: "point", x: 0, y: 0 },
{ id: "p2", kind: "point", x: 38, y: 1 }, // rough positions are fine:
{ id: "p3", kind: "point", x: 39, y: 26 }, // the solver moves them
{ id: "p4", kind: "point", x: 1, y: 24 },
{ id: "l1", kind: "line", p1: "p1", p2: "p2" },
{ id: "l2", kind: "line", p1: "p2", p2: "p3" },
{ id: "l3", kind: "line", p1: "p3", p2: "p4" },
{ id: "l4", kind: "line", p1: "p4", p2: "p1" },
],
constraints: [
{ type: "fixed", point: "p1", x: 0, y: 0 },
{ type: "horizontal", line: "l1" },
{ type: "horizontal", line: "l3" },
{ type: "vertical", line: "l2" },
{ type: "vertical", line: "l4" },
{ id: "width", type: "length", line: "l1", value: 40 },
{ id: "depth", type: "length", line: "l2", value: 25 },
],
}
const result = cad.solveSketch(sketch)
result.status // "fully-constrained"
result.dof // 0
result.iterations // 3
result.residual // < 1e-9
// points now at (0,0) (40,0) (40,25) (0,25) के बिना वही स्केच चलाएँ fixed बाधा और परिणाम बदल जाता है under-constrained साथ dof = 2 और free = ["p1", "p2", "p3", "p4"]. आयत का आकार अभी भी सही है, लेकिन यह X और Y में स्लाइड कर सकता है। एक तीसरी लंबाई जोड़ें, { id: "w2", type: "length", line: "l3", value: 50 }, और स्थिति बन जाती है conflicting. conflicts फिर उन नामित बाधाओं को सूचीबद्ध करता है जिन्हें एक साथ संतुष्ट नहीं किया जा सकता है, सबसे पहले सबसे खराब (उदाहरण के लिए)। w2 और width). उन बाधाओं का नाम बताएं जिनकी आपको परवाह है id; अनाम बाधाओं को जनरेट किए गए लेबल के साथ रिपोर्ट किया जाता है जैसे कि vertical#4.
| विकल्प | गलती करना | अर्थ |
|---|---|---|
maxIterations | 200 | समाधान से पहले लेवेनबर्ग-मार्क्वार्ड पुनरावृत्तियों पर ऊपरी सीमा के रूप में रिपोर्ट किया गया है failed. |
tolerance | 1e-9 | सबसे बड़े निरपेक्ष अवशेष को हल के रूप में स्वीकार किया जाता है। |
| परिणाम फ़ील्ड | सामग्री |
|---|---|
sketch | हल किए गए निर्देशांक और त्रिज्या के साथ इनपुट स्केच। |
status | fully-constrained, under-constrained, over-constrained, conflicting, या failed. |
dof | स्वतंत्रता की शेष डिग्री. |
free | बिंदु आईडी जो अभी भी घूम सकती हैं, और सर्कल आईडी जिनकी त्रिज्या अभी भी बदल सकती है। |
conflicts | बाधा आईडी जो संतुष्ट नहीं हो सकीं, सबसे पहले सबसे खराब। |
redundant | निरर्थक समीकरणों की संख्या (रैंक की कमी)। |
iterations, residual, message | सॉल्वर डायग्नोस्टिक्स। |
विकृत इनपुट थ्रो
एक स्केच जो किसी अज्ञात बिंदु या इकाई को संदर्भित करता है वह न सुलझने योग्य होने के बजाय विकृत होता है, और solveSketch फेंकता है ए SketchError. आयातित रेखाचित्रों को एक लूप में हल करने से पहले उन्हें सत्यापित करें।
बाधा संदर्भ
प्रत्येक बाधा एक वस्तु है type और एक वैकल्पिक id. लंबाई मिलीमीटर हैं और कोण रेडियन हैं। पैरामीट्रिक इतिहास में, कोई भी value एक पैरामीटर अभिव्यक्ति स्ट्रिंग भी हो सकती है।
| प्रकार | खेत | Effect |
|---|---|---|
fixed | point, वैकल्पिक x, y | वैकल्पिक रूप से स्पष्ट निर्देशांक पर एक बिंदु पिन करता है। |
coincident | a, b | दो बिंदु एक ही स्थान पर हैं। |
horizontal / vertical | line | एक रेखा X/Y के समानांतर है. |
horizontalPoints / verticalPoints | a, b | दो बिंदु Y/X निर्देशांक साझा करते हैं। |
distance | a, b, value | दो बिंदुओं के बीच यूक्लिडियन दूरी. |
distanceX / distanceY | a, b, value | क्षैतिज/ऊर्ध्वाधर ऑफसेट पर हस्ताक्षर। |
length | line, value | एक पंक्ति की लंबाई. |
parallel / perpendicular | a, b | दो रेखाओं के बीच संबंध. |
equalLength / equalRadius | a, b | समान रेखा लंबाई/वृत्त या चाप त्रिज्या। |
radius / diameter | circle, value | वृत्त या चाप का आकार. |
angle | a, b, value | रेखा से वामावर्त कोण a कतार करना b, रेडियन में. |
pointOnLine / pointOnCircle | point और line / circle | आपतन। |
midpoint | point, line | एक बिंदु एक रेखा के मध्य में बैठता है। |
symmetric | a, b, line | दो बिंदु एक रेखा के चारों ओर एक दूसरे को प्रतिबिम्बित करते हैं। |
tangentLineCircle | line, circle | एक रेखा किसी वृत्त या चाप को स्पर्श करती है। |
tangentCircles | a, b, वैकल्पिक internal | Circles touch externally (distance = r1 + r2) or internally (distance = |r1 − r2|). |
concentric | a, b | वृत्तों या चापों का साझा केंद्र। |
चाप वामावर्त से हैं start तक end के बारे में center. एक वृत्त की त्रिज्या एक सॉल्वर चर है, इसलिए एक वृत्त बिना a के होता है radius, diameter, equalRadius, या स्पर्शरेखा बाधा प्रकट होती है free.
एक पैरामीट्रिक भाग बनाएँ
A History एक पैरामीटर तालिका और एक ऑर्डर की गई फीचर सूची है। पैरामीटर अन्य पैरामीटर की संख्याएं या अभिव्यक्ति हैं। उन्हें निर्भरता क्रम में हल किया जाता है, और एक चक्र एक त्रुटि है जो लूप को नाम देती है। विशेषताएँ किसी भी आयाम फ़ील्ड में नाम के अनुसार पैरामीटर को संदर्भित करती हैं।
import { cad } from "@cadcamfun/core"
const history = {
parameters: { width: 40, depth: 25, thick: 8, hole: "width / 8" },
features: [
// the rectangle sketch from the previous section, with dimension
// values replaced by parameter names: value: "width", value: "depth"
{ id: "s1", type: "sketch", plane: "XY", sketch: rectangleSketch },
{ id: "e1", type: "extrude", sketch: "s1", depth: "thick", operation: "new" },
{ id: "h1", type: "hole", plane: "XY", offset: "thick",
at: [20, 12.5], diameter: "hole", depth: "thick" },
],
}
const mesh = cad.rebuild(history)
mesh.parameters // { width: 40, depth: 25, thick: 8, hole: 5 }
mesh.bodies // one mesh body, id "e1"
mesh.issues // []
const exact = cad.rebuildExact(history, mesh)
exact.bodies[0].brep // present: the history has an exact representation
exact.warnings // []
cad.brep.massProperties(exact.bodies[0].brep).volume // 7842.92… mm³
cad.brep.validateBrep(exact.bodies[0].brep).valid // true rebuild रिटर्न bodies (त्रिभुज जाल उस सुविधा द्वारा कुंजीबद्ध हैं जिसने उन्हें बनाया है), हल किया गया parameters, प्रत्येक स्केच का विमान, फ्रेम, और हल परिणाम, शीट-मेटल सुविधाओं के फ्लैट पैटर्न, और issues. एक सुविधा जिसे निर्मित नहीं किया जा सकता, उसकी सूचना इसमें दी गई है issues इसकी फीचर आईडी और गंभीरता के साथ, और इसे छोड़ दिया गया है। ऐसी सुविधाएँ जो इस पर निर्भर नहीं हैं, फिर भी निर्मित होती हैं। rebuildExact(history, given?, options?) आपके पास पहले से मौजूद जाली पुनर्निर्माण का पुन: उपयोग कर सकता है, और स्वीकार करता है budgetMs समय बजट.
बेस विमान दाएं हाथ के होते हैं: XY u = X, v = Y, सामान्य +Z है; YZ u = Y, v = Z, सामान्य +X है; ZX u = Z, v = X, सामान्य +Y है। पहले की आईडी पर एक स्केच, होल या टेक्स्ट भी डाला जा सकता है plane सुविधा, एक के साथ offset सामान्य के साथ.
| विशेषता | मुख्य फ़ील्ड और डिफ़ॉल्ट |
|---|---|
sketch | plane, वैकल्पिक offset, sketch (इकाइयाँ, बाधाएँ, वैकल्पिक पैरामीट्रिक shapes: आयत, वृत्त, बहुभुज, दीर्घवृत्त, स्लॉट, पॉलीलाइन)। |
extrude | sketch, depth, direction up/down/symmetric, operation new/union/subtract/intersect, वैकल्पिक targets (डिफ़ॉल्ट: अब तक प्रत्येक निकाय), edge अंतिम चेहरों का चम्फर/पट्टिका (ends गलती करना both), corner उपचार, और taper डिग्री में ड्राफ्ट. लूप के अंदर लूप छेद (सम-विषम) होते हैं। |
revolve | sketch, axis (x, y, या एक स्केच लाइन), angle डिग्री में (डिफ़ॉल्ट 360), operation. |
hole | plane, offset, at [u, v], diameter, depth; kind simple (गलती करना), counterbore, या countersink साथ headDiameter, headDepth, और angle (डिफ़ॉल्ट 90°). वैकल्पिक कॉस्मेटिक thread नोट (उदाहरण के लिए M4), tolerance, और आईएसओ 286 fit जैसे कि H7. एक कॉस्मेटिक धागा ज्यामिति नहीं बदलता है। |
pattern, mirror | पहले वाले फ़ीचर के टूल की प्रतिलिपियाँ, उसी तरह लागू की गईं। |
sweep, loft, coil | पथ के किनारे, अनुभागों के बीच, या हेलिक्स के साथ प्रोफ़ाइल। |
shell, fillet, draft, pushpull | चेहरा और किनारा संपादन. |
move, scale, split, combine | शरीर संचालन. |
rib, sheet, thread, text | पसलियाँ, सपाट पैटर्न वाली शीट-मेटल बॉडी, मॉडल किए गए धागे और स्ट्रोक-फ़ॉन्ट टेक्स्ट। |
plane, primitive, mate | निर्माण विमान, आदिम ठोस, और असेंबली मेटिंग। |
इतिहास संपादित करें, मुख्य भाग नहीं
एक पैरामीटर बदलें और पुनर्निर्माण करें: प्रत्येक स्केच जो इसका उपयोग करता है उसे फिर से हल करता है और प्रत्येक ठोस और बूलियन को फिर से बनाने के बाद। उत्पन्न जाल को सीधे संपादित करना अगले पुनर्निर्माण में खो जाता है।
सटीक आदिम और प्लेसमेंट
बी-रेप कर्नेल सीधे विश्लेषणात्मक ठोस बनाता है। प्रत्येक कंस्ट्रक्टर एक वैकल्पिक प्लेसमेंट लेता है Frame; एक के बिना, ठोस को विश्व फ्रेम में रखा गया है।
| निर्माता | बहस | विश्व प्लेसमेंट |
|---|---|---|
makeBox(dx, dy, dz, placement?) | किनारे की लंबाई मिमी में | मूल पर न्यूनतम कोना. |
makeCylinder(radius, height, placement?) | त्रिज्या और ऊंचाई | समान त्रिज्या वाला एक शंकु; Z के अनुदिश अक्ष. |
makeCone(r1, r2, height, placement?) | आधार और शीर्ष त्रिज्या | Z के अनुदिश अक्ष. |
makeSphere(radius, placement?) | RADIUS | मूल पर केन्द्रित. |
makeTorus(major, minor, placement?) | रिंग और ट्यूब त्रिज्या | Z के अनुदिश अक्ष. |
आयाम सकारात्मक और सीमित होने चाहिए; अन्यथा कंस्ट्रक्टर एक श्रेणी त्रुटि उत्पन्न करते हैं। दौड़ना validateBrep वॉल्यूम या निर्यात परिणामों पर भरोसा करने से पहले आप बूलियन, स्वीप, या आयात से जो कुछ भी बनाते हैं उस पर। एक कंस्ट्रक्टर से एक आदिम सीधा निर्माण द्वारा मान्य है।
मॉडलिंग प्रथाएँ जो विश्वसनीय रूप से पुनर्निर्माण करती हैं
- आयाम जोड़ने से पहले एक बिंदु को ठीक करें और अभिविन्यास को बाधित करें। एक अंडर-कंस्ट्रेंड स्केच हर आयाम को संतुष्ट कर सकता है और फिर भी अगले पुनर्निर्माण की ओर बढ़ सकता है।
- प्रत्येक उपयोगकर्ता-सामना वाले आयाम को दें
idइसलिए एक संघर्ष रिपोर्ट में कुछ ऐसा नाम दिया जाता है जिसे कोई व्यक्ति पहचानता है। - पैरामीटर और अभिव्यक्ति को प्राथमिकता दें (
"width / 2 + 3","max(a, b) * 2") बार-बार दोहराए गए शाब्दिक अर्थों से अधिक; एक संपादन फिर पूरे भाग को संचालित करता है। - पिछली सुविधाओं को सूची में मौजूद होने के बाद ही आईडी के आधार पर संदर्भित करें। किसी इतिहास को पुनः व्यवस्थित करने से एक वैध संदर्भ एक समस्या में बदल सकता है।
- उपयोग
targetsबूलियन्स पर जब एक भाग में कई निकाय होते हैं। डिफ़ॉल्ट अब तक निर्मित प्रत्येक निकाय पर ऑपरेशन लागू करता है। - जाँच करना
issuesप्रत्येक के बादrebuildऔर प्रति-शरीरbrepके बाद उपस्थितिrebuildExactसटीक सामूहिक संपत्तियों या STEP निर्यात पर भरोसा करने से पहले। - स्केच के अंदर इकाइयों को मिलीमीटर और रेडियन में रखें। डिग्री-मूल्य वाले फ़ील्ड को इस प्रकार प्रलेखित किया जाता है (रिवॉल्व एंगल, टेपर, काउंटरसिंक एंगल)।
डिज़ाइन रेसिपी
cad.buildRecipe(name, input) कुछ इंजीनियरिंग इनपुट को पूर्ण पैरामीट्रिक इतिहास में बदल देता है, साथ ही एक-पंक्ति सारांश, व्युत्पन्न संख्याएं और डिज़ाइन नियम जो उन्हें उत्पन्न करते हैं। सात व्यंजन मौजूद हैं; डिफ़ॉल्ट के बिना पैरामीटर छोड़े जाने पर दूसरों से प्राप्त होते हैं।
| नाम | शीर्षक | पैरामीटर (डिफ़ॉल्ट) |
|---|---|---|
mounting_plate | माउंटिग प्लेट | width=100, depth=60, thickness=10, fastener=M8, fit=medium, counterbore=false, cornerRadius=0, edgeChamfer=0, edgeDistance |
flange | बोल्टयुक्त निकला हुआ किनारा | outerDiameter=120, boreDiameter=40, thickness=14, boltCount=6, fastener=M10, fit=medium, boltCircleDiameter, hubDiameter=0, hubHeight=0, edgeChamfer=0 |
l_bracket | एल ब्रैकेट | baseLength=60, legHeight=50, thickness=5, width=40, fastener=M6, fit=medium, holesPerLeg=1, cornerRadius=0 |
stepped_shaft | चरणबद्ध शाफ्ट | अनुभाग, चम्फर=1, keywaySection=-1, keyLength |
pipe_bend | पाइप कोहनी | outerDiameter=30, wall=3, legA=100, legB=100, bendAngle=90, bendRadius |
duct_transition | वाहिनी संक्रमण | shape=rect, width1=80, height1=50, width2=40, height2=40, length=120, wall=2 |
enclosure | दीवार | length=120, width=80, height=40, wall=3, floor, cornerRadius=6, fastener=M3, bosses=true |
import { cad } from "@cadcamfun/core"
const recipe = cad.buildRecipe("mounting_plate", { width: 100, depth: 60, thickness: 10, fastener: "M8" })
recipe.summary // "100 x 60 x 10 mm plate with four holes for M8 screws (Ø9 mm, medium fit)"
recipe.derived // { holeDiameter: 9, edgeDistance: 18, holeSpacingX: 64, holeSpacingY: 24 }
recipe.rules // ["hole diameter from ISO 273",
// "centre to edge >= 1.5 x hole diameter",
// "centre to centre >= 2.5 x hole diameter"]
recipe.history.parameters // { width: 100, depth: 60, thick: 10, hole: 9, inset: 18 }
// features: sketch "outline", extrude "plate", holes hole_sw, hole_se, hole_ne, hole_nw
// placed at ["inset","inset"], ["width - inset","inset"], …
const mesh = cad.rebuild(recipe.history) // issues: []
const exact = cad.rebuildExact(recipe.history, mesh)
cad.brep.massProperties(exact.bodies[0].brep).volume // 57455.31 mm³ = 60000 − 4·π·4.5²·10 इतिहास सामान्य है: आप इसे संपादक में खोल सकते हैं, पैरामीटर बदल सकते हैं और पुनर्निर्माण कर सकते हैं। रेसिपी में केवल समझदार संख्याएँ चुनी गईं।
गियर शामिल करें
const spec = { moduleValue: 2, teeth: 18 } // pressureAngle defaults to 20°
cad.gearDimensions(spec)
// { pitchRadius: 18, baseRadius: 16.914, tipRadius: 20, rootRadius: 15.5 }
const outline = cad.gearOutline(spec, 6) // 324 points, 6 per flank
cad.gearOutline({ moduleValue: 2, teeth: 5 })
// throws: 'A gear needs a module > 0 and at least 6 whole teeth' | आयाम | FORMULA | m = 2, z = 18 |
|---|---|---|
| पिच त्रिज्या | m·z / 2 | 18 |
| टिप त्रिज्या | पिच + मी | 20 |
| मूल त्रिज्या | पिच − 1.25·मी | 15.5 |
| आधार त्रिज्या | पिच · क्योंकि α | 16.914 |
MIN_GEAR_TEETH 6 है: उसके नीचे, किनारे आधार वृत्त को काटते हैं और पड़ोसी दांत ओवरलैप करते हैं।
फास्टनर और फिट डेटा
| आकार | आवाज़ का उतार-चढ़ाव | टैप ड्रिल | निकासी ठीक/मध्यम/मोटी | सिर Ø × ज | काउंटरबोर Ø × गहराई | काउंटरसिंक Ø |
|---|---|---|---|---|---|---|
| M3 | 0.5 | 2.5 | 3.2 / 3.4 / 3.6 | 5.5 × 3 | 6.5 × 3.4 | 6 |
| M5 | 0.8 | 4.2 | 5.3 / 5.5 / 5.8 | 8.5 × 5 | 10 × 5.7 | 10 |
| M6 | — | 5 | 6.4 / 6.6 / 7 | — | — | — |
| M8 | 1.25 | 6.8 | 8.4 / 9 / 10 | 13 × 8 | 15 × 9 | 16 |
| M12 | 1.75 | 10.2 | 13 / 13.5 / 14.5 | 18 × 12 | 20 × 13 | 24 |
मूल्य आते हैं cad.metricThread(size), clearanceHole(size, fit) और tapDrill(size); m6 पंक्ति की पूछताछ केवल दो सहायकों के माध्यम से की गई थी। संबंधित नियम, एम6 स्क्रू और उसके Ø6.6 क्लीयरेंस होल के लिए वास्तविक परिणामों के साथ:
| सहायक | परिणाम |
|---|---|
threadEngagement("M6", material) | स्टील 6, एल्युमीनियम 9, कास्ट 12, प्लास्टिक 12 मिमी |
tappedHoleDepth("M6", 12) | 15.8 mm |
minEdgeDistance(6.6) / (6.6, "plastic") | 9.9 / 13.2 mm |
minHoleSpacing(6.6) | 16.5 mm (2.5 × व्यास) |
keywayFor(25) | 22 से अधिक 30 तक: बी 8, एच 7, टी1 4, टी2 3.3 |
toleranceGrade(7, 25) / (6, 25) | 21 / 13 µm |
| उपयुक्त | दयालु | उदाहरण |
|---|---|---|
| H7/h6 | स्थान (स्लाइडिंग) | भागों को हाथ से इकट्ठा किया जाता है और सटीक रूप से स्थित किया जाता है, स्लाइडिंग स्पिगोट्स, गाइड बुशिंग |
| H7/g6 | बंद चल रहा है | गतिशील भागों, स्पिंडल, स्लाइड वाल्वों का सटीक मार्गदर्शन |
| H7/f7 | दौड़ना | सामान्य मशीन निर्माण में सादे बियरिंग, शाफ्ट |
| H7/k6 | संक्रमण | गियर, पुली और बियरिंग आंतरिक रिंगों को हल्के दबाव से चलाया जाता है |
| H7/n6 | हस्तक्षेप (हल्का प्रेस) | झाड़ियाँ और हब अंदर दबाए गए; छोटे टॉर्क के लिए किसी चाबी की आवश्यकता नहीं |
| H7/p6 | हस्तक्षेप (प्रेस) | आवासों में झाड़ियों का स्थायी प्रेस फिट |