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 تجاری و پژوهشی در سراسر جهان عمل می‌کند.

Previous Next

شروع کار با 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
    }
}
 فارسی