
OCCT
Açık Kaynak C++ 3D Modelleme ve Simülasyon Platformu
Açık Kaynak C++ Kütüphanesi ile Parametrik 3D Modeller Oluşturun, Fiziği Simüle Edin ve CAD Verilerini Görselleştirin.
OCCT nedir?
Open CASCADE Technology (OCCT), 3D CAD, CAM ve CAE uygulamaları için güçlü bir açık kaynaklı C++ yazılım geliştirme platformudur. Geometrik modelleme, ağ (mesh) oluşturma, veri değişimi (STEP, IGES, STL), görselleştirme ve simülasyon için kapsamlı kütüphaneler sunar. Yüksek hassasiyetli mühendislik ve üretim iş akışları için tasarlanmış OCCT, geliştiricilerin endüstri standardı yeteneklere sahip sağlam parametrik modelleme araçları, CAD görüntüleyicileri ve simülasyon uygulamaları oluşturmasını sağlar.
Kitaplık, Boolean işlemleri, yuvarlamalar, konik kesimler ve süpürmeler gibi gelişmiş katı modelleme işlemlerinin yanı sıra yüzey modelleme, NURBS geometrisi ve parametrik özellik modellemesini destekler. OCCT'nin modüler mimarisi, topoloji, geometri, görselleştirme, veri değişimi ve uygulama çerçevesi için özel araç takımları içerir; bu da karmaşık mühendislik yazılım geliştirme için ideal kılar. Aktif topluluk desteği ve düzenli sürümlerle, OCCT dünya çapında birçok ticari ve araştırma düzeyinde 3D uygulamanın temelini oluşturur.
OCCT'ye Başlarken
OCCT, açık kaynaklı C++ kütüphaneleri olarak dağıtılır ve kaynak derlemesi ya da önceden derlenmiş ikili dosyalar aracılığıyla kurulabilir. Başlamanın en kolay yolu, en son sürümü [OCCT GitHub](https://github.com/Open-Cascade-SAS/OCCT) deposundan indirmektir. Linux kullanıcıları için, birçok dağıtım OCCT paketlerini paket yöneticileri aracılığıyla sağlar (örneğin Ubuntu'da `apt install libocct-dev`). Windows geliştiricileri önceden derlenmiş ikili dosyaları kullanabilir veya CMake ve Visual Studio ile kaynaktan derleyebilir. Resmi belgeler, tüm desteklenen platformlar için adım adım derleme kılavuzları içerir.
OCCT'yi Paket Yöneticisi ile Kurun (Ubuntu/Debian)
sudo apt update
sudo apt install libocct-dev libocct-data-exchange-dev libocct-visualization-devBoolean İşlemleri ve Katı Modelleme
OCCT, 3B katıların güçlü Boolean işlemlerini (birleşim, kesişim, çıkarma) sağlar ve temel primitive'lerden karmaşık şekil oluşturmayı mümkün kılar. Topoloji çekirdeği, yuvarlamalar, pahlar, delikler ve kaburgalar gibi gelişmiş özellikleri yüksek hassasiyetle destekler. Geliştiriciler, C++ API'lerini kullanarak parametrik özellikler oluşturabilir ve bunları CAD iş akışlarına entegre edebilir. Kütüphane, topolojik veri yapılarını verimli bir şekilde yönetir ve hem B-Rep hem de yapısal katı geometrisi (CSG) modelleme yaklaşımlarını destekler. Bu, OCCT'yi hassas geometrik hesaplamalar ve özellik tabanlı modelleme gerektiren mühendislik uygulamaları geliştirmek için ideal kılar.
C++ ile İki Katı Üzerinde Boolean Birleşim İşlemi Yapın
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
}Veri Değişimi (STEP ve IGES)
OCCT, STEP (AP203/AP214) ve IGES gibi ISO standartı formatlarını destekleyen kapsamlı veri değişim modüllerine sahiptir. Bu modüller, geometri, topoloji, meta veri ve ürün yapısını koruyarak CAD modellerinin içe ve dışa aktarımını sağlar. STEP okuyucu/yazıcı, otomotiv ve mekanik tasarım verileri için tam AP214 uyumluluğunu destekler. Geliştiriciler, içe aktarılan modelleri programlı olarak işleyebilir, yüzeyleri/kirişleri çıkarabilir, geometriyi değiştirebilir ve farklı formatlarda yeniden dışa aktarabilir. Bu birlikte çalışabilirlik, farklı yazılım ekosistemleri arasında CAD iş birliği için kritik öneme sahiptir ve mevcut tasarım iş akışlarına sorunsuz entegrasyonu sağlar.
STEP Dosyasını İçe Aktar ve C++ ile STL Olarak Dışa Aktar
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");
}3D Görselleştirme ve Renderleme
OCCT'nin görselleştirme araç takımı, donanım hızlandırmalı OpenGL, ışın izleme ve gelişmiş aydınlatma desteğiyle güçlü 3D renderleme yetenekleri sunar. Geliştiriciler, seçim, vurgulama ve gezinme araçlarıyla etkileşimli CAD görüntüleyicileri oluşturabilir. Araç takımı, 3D görünüm yönetimi, sahne grafiği işleme ve özel renderleme boru hatları için sınıflar içerir. Anti-aliasing, şeffaflık ve tel kafes/gizli çizgi görüntüleme modları gibi özellikler profesyonel kalitede görselleştirme sağlar. Bu, OCCT'yi mühendislik görselleştirme araçları, sanal gerçeklik uygulamaları ve gerçek zamanlı performanslı simülasyon sonuç tarayıcıları geliştirmek için uygun kılar.
OCCT ile Etkileşimli 3D Görüntüleyici Oluştur
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();Ağ Oluşturma ve Analiz
OCCT, B-Rep modellerini simülasyon ve görselleştirme için üçgenleme ağlara dönüştüren ağ oluşturma araçlarını içerir. Mesh modülü, kenar ve yüz tessellasyon doğruluğu üzerinde kontrol sağlayarak uyarlanabilir ağ oluşturmayı destekler. Geliştiriciler, CAE analizleri için sonlu eleman ağları oluşturabilir, ağ kalitesi metriklerini hesaplayabilir ve iyileştirme ve pürüzsüzleştirme gibi ağ işlemlerini gerçekleştirebilir. Kütüphane ayrıca ağ veri alışverişi (STL, OBJ) araçları ve harici FEM çözücüleriyle entegrasyon sağlar. Bu yetenek, CAD tasarımı ile simülasyon iş akışlarını birleştirerek mühendislik analiz uygulamalarının uçtan uca geliştirilmesini mümkün kılar.
C++ ile B-Rep Şekilinden Mesh Oluştur
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
}
}