
OCCT
پلتفرم منبع باز C++ برای مدلسازی و شبیهسازی سهبعدی
مدلهای پارامتریک سهبعدی بسازید، فیزیک را شبیهسازی کنید و دادههای CAD را از طریق کتابخانه منبع باز C++ تجسم کنید.
OCCT چیست؟
Open CASCADE Technology (OCCT) یک بستر توسعه نرمافزاری قدرتمند و متنباز C++ برای برنامههای 3D CAD، CAM و CAE است. این بستر کتابخانههای جامع برای مدلسازی هندسی، تولید مش، تبادل داده (STEP، IGES، STL)، تجسم و شبیهسازی فراهم میکند. برای جریانهای کاری مهندسی و تولید با دقت بالا طراحی شده است، OCCT به توسعهدهندگان امکان ساخت ابزارهای مدلسازی پارامتریک قوی، نمایشگرهای CAD و برنامههای شبیهسازی با قابلیتهای استاندارد صنعتی را میدهد.
این کتابخانه از عملیات پیشرفته مدلسازی جامد مانند عملیات بولی، گرد کردنها (fillets)، لبهگیریها (chamfers) و اسکنها (sweeps) همراه با مدلسازی سطح، هندسه NURBS و مدلسازی ویژگیهای پارامتریک پشتیبانی میکند. معماری مدولار OCCT شامل ابزارهای اختصاصی برای توپولوژی، هندسه، تجسم، تبادل داده و چارچوب برنامه است که آن را برای توسعه نرمافزارهای مهندسی پیچیده ایدهآل میسازد. با پشتیبانی فعال جامعه و انتشارهای منظم، OCCT به عنوان پایهای برای بسیاری از برنامههای 3D تجاری و پژوهشی در سراسر جهان عمل میکند.
شروع کار با OCCT
OCCT بهصورت کتابخانههای منبع باز C++ توزیع میشود و میتواند از طریق ساخت از منبع یا باینریهای پیشکامپایل شده نصب شود. سادهترین راه برای شروع، دانلود آخرین نسخه از مخزن [OCCT GitHub](https://github.com/Open-Cascade-SAS/OCCT) است. برای کاربران لینوکس، بسیاری از توزیعها بستههای OCCT را از طریق مدیران بستهٔ خود ارائه میدهند (به عنوان مثال `apt install libocct-dev` در اوبونتو). توسعهدهندگان ویندوز میتوانند از باینریهای پیشساخته استفاده کنند یا با استفاده از CMake و Visual Studio از منبع کامپایل کنند. مستندات رسمی شامل راهنمای گامبهگام ساخت برای تمام پلتفرمهای پشتیبانیشده است.
نصب OCCT از طریق مدیر بسته (Ubuntu/Debian)
sudo apt update
sudo apt install libocct-dev libocct-data-exchange-dev libocct-visualization-devعملیات بولی و مدلسازی جامد
OCCT عملیات بولی قوی (اتحاد، تقاطع، تفریق) برای اجسام سهبعدی فراهم میکند و امکان ایجاد اشکال پیچیده از primitives پایهای را میدهد. هسته توپولوژی آن ویژگیهای پیشرفتهای مانند فیلتها، چمفرها، سوراخها و ریبها را با دقت بالا پشتیبانی میکند. توسعهدهندگان میتوانند ویژگیهای پارامتریک را با استفاده از APIهای C++ ایجاد کرده و در جریانهای کاری CAD یکپارچه کنند. این کتابخانه ساختارهای داده توپولوژیکی را بهصورت کارآمد مدیریت میکند و از هر دو روش مدلسازی B-Rep و هندسه جامد سازنده (CSG) پشتیبانی میکند. این باعث میشود OCCT برای توسعه برنامههای مهندسی که به محاسبات هندسی دقیق و مدلسازی مبتنی بر ویژگی نیاز دارند، ایدهآل باشد.
انجام اتحاد بولی بر روی دو جسم با استفاده از C++
TopoDS_Shape box1 = BRepPrimAPI_MakeBox(10, 10, 10);
TopoDS_Shape box2 = BRepPrimAPI_MakeBox(20, 5, 5);
BRepAlgoAPI_Fuse fuseOp(box1, box2);
if (fuseOp.IsDone()) {
TopoDS_Shape result = fuseOp.Shape();
// Save or visualize result
}تبادل داده (STEP و IGES)
OCCT شامل ماژولهای جامع تبادل داده است که از فرمتهای استاندارد ISO مانند STEP (AP203/AP214) و IGES پشتیبانی میکند. این ماژولها امکان واردات و صادرات مدلهای CAD را فراهم میآورند در حالی که هندسه، توپولوژی، متادیتا و ساختار محصول را حفظ میکنند. خواننده/نویسنده STEP از سازگاری کامل با AP214 برای دادههای طراحی خودرو و مکانیکی پشتیبانی میکند. توسعهدهندگان میتوانند بهصورت برنامهنویسی مدلهای وارد شده را پردازش کنند، سطوح/لبهها را استخراج کنند، هندسه را تغییر دهند و در فرمتهای مختلف دوباره صادر کنند. این قابلیت همکاری برای همکاری CAD در میان اکوسیستمهای نرمافزاری مختلف حیاتی است و یکپارچهسازی بدون درز در جریانهای کاری طراحی موجود را تضمین میکند.
وارد کردن فایل STEP و خروجی به صورت STL با استفاده از C++
Handle(STEPCAFControl_Reader) reader = new STEPCAFControl_Reader();
IFSelect_ReturnStatus status = reader->ReadFile("model.step");
if (status == IFSelect_RetDone) {
Handle(TDocStd_Document) doc;
reader->Transfer(doc);
// Export to STL
STEPCAFControl_Writer writer;
writer.Write("output.stl");
}تصویرسازی و رندرینگ سهبعدی
ابزارهای تصویری OCCT قابلیتهای قدرتمند رندرینگ سهبعدی را با پشتیبانی از OpenGL شتابدار سختافزاری، ردیابی پرتو و نورپردازی پیشرفته فراهم میکند. توسعهدهندگان میتوانند نمایشگرهای CAD تعاملی را با ابزارهای انتخاب، برجستهسازی و ناوبری بسازند. این ابزار شامل کلاسهایی برای مدیریت نمای سهبعدی، مدیریت گراف صحنه و خطوط رندر سفارشی است. ویژگیهایی مانند ضد لبه، شفافیت و حالتهای نمایش سیمکشی/خط مخفی، تصویری با کیفیت حرفهای را تضمین میکند. این باعث میشود OCCT برای توسعه ابزارهای تصویری مهندسی، برنامههای واقعیت مجازی و مرورگرهای نتایج شبیهسازی با عملکرد زمان واقعی مناسب باشد.
ایجاد نمایشگر تعاملی 3D با OCCT
Handle(V3d_Viewer) aViewer = new V3d_Viewer();
Handle(AIS_InteractiveContext) aContext = new AIS_InteractiveContext(aViewer);
Handle(AIS_Shape) anActor = new AIS_Shape(aShape);
aContext->Display(anActor, Standard_True);
// Enable rotation, zoom, pan
aViewer->InitActiveView();
aViewer->ActiveView()->SetDegenerateModeOn();تولید مش و تحلیل
OCCT شامل ابزارهای تولید مش است که مدلهای B‑Rep را به مشهای مثلثی برای شبیهسازی و تجسم تبدیل میکند. ماژول Mesh از مشسازی تطبیقی با کنترل بر دقت تزیین لبه و سطح پشتیبانی میکند. توسعهدهندگان میتوانند مشهای المان محدود برای تحلیل CAE تولید کنند، معیارهای کیفیت مش را محاسبه کنند و عملیاتهای مش مانند بهبود و هموارسازی را انجام دهند. کتابخانه همچنین ابزارهایی برای تبادل دادههای مش (STL، OBJ) و یکپارچهسازی با حلکنندههای FEM خارجی فراهم میآورد. این قابلیت، طراحی CAD و جریانهای کاری شبیهسازی را به هم پیوند میدهد و توسعهٔ انتها به انتهای برنامههای تحلیل مهندسی را امکانپذیر میسازد.
تولید مش از شکل B-Rep با C++
BRepMesh_IncrementalMesh aMesh(aShape, 0.01);
// Access mesh data
TopExp_Explorer anExp(aShape, TopAbs_FACE);
for (; anExp.More(); anExp.Next()) {
TopoDS_Face aFace = TopoDS::Face(anExp.Current());
Handle(Poly_Triangulation) aTriangulation =
BRep_Tool::Triangulation(aFace, aLoc);
if (!aTriangulation.IsNull()) {
// Process triangulation nodes and triangles
}
}