0

CadThreadジオメトリを作成するクラスがあります。このクラスにはvoid MakeMesh(cadData aCadData)、モデル タイプ ( から) に応じて名前空間関数の 1 つを呼び出すパブリック スロットがありますaCadData(MakeMeshStructure.hh で定義)。

namespace MeshStructure1 {
void MakeMeshStructure  (//parameters... );
}
namespace MeshStructure2 {
void MakeMeshStructure  (//parameters... );
}
namespace MeshStructure3 {
void MakeMeshStructure  (//parameters...

この関数は、MakeMeshStructure3.cc などの内部で形状を生成しています。このシェイプを、次のようなスロットで呼び出した CadThread クラスに戻したいと思います。

void Add_Shape(TopoDS_Shape& shape, Quantity_NameOfColor colorName);

そのため、MakeMeshStructure3 が形状を生成する (1 回の実行でMakeMeshStructure3複数の形状が生成される) ときに、このスロット (または単にメンバー関数) から形状をメイン スレッドに戻すことができます。

これがどのように正しく行われるかの例を誰か教えてもらえますか?

4

2 に答える 2

1

私はあなたのコードを完全には理解していません (抽象度の低い例が役に立ちました)。基本MeshStructureクラスを作成し、他のすべての構造体をサブクラス化します。形状もポリモーフィックにします。これにより、すべてのメッシュ構造が異なる形状を生成しますが、それらはすべてShapeポインターまたは参照によって処理できます。

于 2012-07-01T14:49:54.547 に答える
0

のコードMakeMeshStructure#.ccが Qt を使用している場合、問題が何であるかはわかりません。一時的な QObject からであっても、そこに信号を送信し、それで完了します。

meshmaker コードがQt を使用していない場合、または Qt の依存関係を最小限に抑えたい場合は、コードでヒープ上にメッシュを生成し、それを関数ポインターによって呼び出される関数に渡すだけです。その関数はメッシュメーカーの外部にある可能性があり、認識している QObject のインスタンスでシグナルを発するか、cad スレッドにイベントをポストします。

于 2012-07-01T15:14:18.897 に答える