ぽんこつプログラマーの日々のまとめ
xZX3EpTm

OpenCASCADEを扱った日本語サイトが兄のページしかないので自分も担当しているVisualization周りをまとめる事にした。
OpenCASCADEのバージョンは7.1.0、サンプルコードの言語はC++/CLI。
表示周りを制御するには基本的に AIS_InteractiveContextPrs3d_Drawer から制御する。

平面にISO Lineを表示する

// AIS_InteractiveContextのインスタンス
myContext->IsoOnPlane(Standard_True);

三角形パッチにISO Lineを表示する

myContext->IsoOnTriangulation(Standard_True);

ISO Lineの本数を指定する / 非表示にする

// 第一引数が本数
// 0本に指定すると実質非表示

// UVそれぞれ指定
myContext->SetIsoNumber(10, AIS_TypeOfIso::AIS_TOI_IsoU);
myContext->SetIsoNumber(5, AIS_TypeOfIso::AIS_TOI_IsoV);

// UV同じ本数を指定
myContext->SetIsoNumber(10, AIS_TypeOfIso::AIS_TOI_Both);

ISO Lineの細かな設定

上記まではAIS_InteractiveContextのメンバーに公開されているが、線種等はPrs3d_DrawerクラスのDefaultDrawerとPrs3d_IsoAspectクラスで設定する。
// 引数は 色、線種、太さ、本数
Handle(Prs3d_IsoAspect) u_asp = new Prs3d_IsoAspect(Quantity_NameOfColor::Quantity_NOC_BLUE1, Aspect_TypeOfLine::Aspect_TOL_DOT, 2.0, 5);
myContext->DefaultDrawer()->SetUIsoAspect(u_asp);

Handle(Prs3d_IsoAspect) v_asp = new Prs3d_IsoAspect(Quantity_NameOfColor::Quantity_NOC_GREEN, Aspect_TypeOfLine::Aspect_TOL_DASH, 5.0, 8);
myContext->DefaultDrawer()->SetVIsoAspect(v_asp);
実行結果
cas000

オブジェクト個別に設定したい場合は、(AIS_InteractiveObject のインスタンス)->Attributes()->UIsoAspect() 又は VIsoAspect() から可能。

Add Comments

名前
 
  絵文字
 
 
webmaster

Redmusk

最西端の地で釣りとギターとゲームをこよなく愛する本業ぽんこつプログラマー。今を生きるを座右の銘とし日々快楽だけを求め切磋琢磨しております。

steam id