প্রকল্প সম্পর্কে

vCAD হলো একটি ওপেন-সোর্স, ক্রস-প্ল্যাটফর্ম প্যারামেট্রিক কম্পিউটার-এইডেড ডিজাইন (CAD) অ্যাপ্লিকেশন, যা "কার্নেল-ফার্স্ট" আর্কিটেকচারে ডিজাইন করা হয়েছে। প্রকল্পটির লক্ষ্য একটি শক্তিশালী কোর প্রদান করা, যা একাধিক ফ্রন্টএন্ড সমর্থন করতে পারে—যার মধ্যে Windows, macOS ও Linux-এর জন্য একটি পূর্ণাঙ্গ ডেস্কটপ অ্যাপ্লিকেশন এবং 3D প্রিন্টিং-কেন্দ্রিক iPadOS-এর জন্য একটি বিশেষায়িত ক্লায়েন্ট রয়েছে। সফটওয়্যারটি জ্যামিতিক কার্নেলের জন্য OpenCASCADE Technology (OCCT) ব্যবহার করে এবং রেন্ডারিংয়ের জন্য bgfx ব্যবহার করে। ডেস্কটপ সংস্করণের ইউজার ইন্টারফেস Qt 6.8 LTS দিয়ে তৈরি। একটি গুরুত্বপূর্ণ আর্কিটেকচারাল বৈশিষ্ট্য হলো বিল্ড স্ক্রিপ্ট দ্বারা প্রয়োগ করা কঠোর স্তরবিন্যাস ব্যবস্থা, যা নিশ্চিত করে যে কোর কার্নেল Qt বা SwiftUI-এর মতো UI ফ্রেমওয়ার্ক থেকে স্বাধীন থাকে। এই ডিজাইনের ফলে একই কোর বিভিন্ন প্ল্যাটফর্মের জন্য কম্পাইল করা যায়, কোনো সামঞ্জস্য সমস্যা ছাড়াই। প্রধান সক্ষমতাগুলোর মধ্যে রয়েছে: - **প্যারামেট্রিক মডেলিং**: স্কেচিং, ফিচার এবং প্যারামেট্রিক কনস্ট্রেইন্ট সমর্থন করে। - **টপোলজিক্যাল নেমিং**: সম্পাদনার সময় মডেলের অখণ্ডতা বজায় রাখতে উন্নত টপোলজিক্যাল নেমিং কৌশল প্রয়োগ করে। - **ডকুমেন্ট ম্যানেজমেন্ট**: মুক্ত undo/redo ইতিহাস এবং একটি recomputation ইঞ্জিনসহ স্থায়ী ডকুমেন্ট কাঠামো রয়েছে। - **ডেটা ক্যাশে**: দক্ষ ডেটা ব্যবস্থাপনার জন্য assetlib-এর Document Data Cache (DDC)-এর উপর একটি দুই-স্তরের ক্যাশে ব্যবহার করে। - **ফাইল আদান-প্রদান**: STEP, IGES ও STL-সহ শিল্প-মানসম্মত ফরম্যাট সমর্থন করে। - **সম্প্রসারণযোগ্যতা**: স্ক্রিপ্টিং ও প্লাগইন ডেভেলপমেন্টের জন্য একটি স্থিতিশীল C Application Binary Interface (ABI) এবং Python বাইন্ডিং প্রদান করে। প্রকল্পটি বর্তমানে সক্রিয় উন্নয়নে রয়েছে, যেখানে Milestone M1 (কার্নেল র্যাপার ও টপোলজিক্যাল নেমিং) এবং M2 (ডকুমেন্ট ম্যানেজমেন্ট, DDC ও ফাইল I/O) সম্পন্ন হিসেবে চিহ্নিত। রেন্ডারার ও Qt শেল-কেন্দ্রিক Milestone M3 চলমান। কোডবেসে পাঁচ স্তরের বিস্তৃত পরীক্ষা রয়েছে, যার মধ্যে C++ ইউনিট টেস্ট, C ABI-এর মাধ্যমে Rust অ্যাকসেপ্টেন্স টেস্ট এবং Python বাইন্ডিং টেস্ট অন্তর্ভুক্ত। vCAD বিল্ড করতে CMake 3.24+, নির্ভরতার জন্য একটি vcpkg চেকআউট এবং ঐচ্ছিকভাবে Python বাইন্ডিংয়ের জন্য pybind11 প্রয়োজন। প্রকল্পটি বিভিন্ন অপারেটিং সিস্টেমে স্থিতিশীলতা নিশ্চিত করতে কঠোর নির্ভরতা ব্যবস্থাপনা ও সংস্করণ পিনিংয়ের উপর জোর দেয়।