OpenCASCADE で IGES ファイルを読み込むには、IGESControl_Reader クラスを用います。

#include <stdio.h>

#include <Standard_TypeDef.hxx>   // Standard_Boolean

#include <Standard_Macro.hxx>     // Handle()

#include <TopAbs_ShapeEnum.hxx>   // ShapeType

#include <TopoDS.hxx>             // TopoDS::

#include <TopoDS_Shape.hxx>       // TopoDS_Shape

#include <TopoDS_Face.hxx>        // TopoDS_Face

#include <IGESControl_Reader.hxx> // IGES Reader

int main(int c, char** v)
{
    Standard_CString path = "sample28.igs";

// IGES制御リーダで読み込む
IGESControl_Reader reader;
if (reader.ReadFile(path) != IFSelect_RetDone) {
    // エラーが起きた
    reader.PrintCheckLoad(Standard_True, IFSelect_ItemsByEntity);
    return 1;
}

// 変換対象のルート数
printf("number of roots = %d\n", reader.NbRootsForTransfer());

// IGES内のルートを OCC で扱えるように変換
reader.TransferRoots();

// 得られたシェイプ数
printf("number of shapes = %d\n", reader.NbShapes());

// シェイプの取得
for (int i=1;i<=reader.NbShapes(); i++) {
    TopoDS_Shape s = reader.Shape(i);
    if (s.ShapeType() == TopAbs_FACE) {
        TopoDS_Face f = TopoDS::Face(s);
        // 取得した Face で何かする
        printf("%04X\n", f.HashCode(0xFFFF));
    }
}

// 一つのシェイプにして返す場合
// TopoDS_Shape s = reader.OneShape();

return 0;

}

次のようにビルドします。TKIGES にリンクするのを忘れないように注意してください。

$ g++ -g -lTKernel -lTKMath -lTKBinL -lTKIGES -L/usr/lib/opencas -I/usr/include/opencascade -o occtest occtest.cxx

IGES関連のクラスについての解説は、$CASROOT/../doc/iges.pdf にドキュメンテーションが同梱されているので、そちらを参考にしてください。また、IGES ファイル自体の仕様(PDF)は、US Product Data Association で公開されています。