お知らせ

  • 利用規約を守って投稿してください。また、よくある質問および投稿の手引きも参照してください。
  • メッセージの投稿にはアカウントが必要です。未登録の方は、ユーザ登録ページからアカウントを作成することができます。

#1 2011-07-22 17:22:18

velocity-vent
新しいメンバ
登録日: 2011-07-22

GTS Library用 gtsファイルの作成方法について教えてください。

初めて、投稿します。

OSはubuntu10.04.1を使用しています。

実は「Gerris」という流体解析ソフトを使用したくubuntuを導入したのですが、
これ自体は、チュートリアル通り動画の取得まで出来ました。

そこで、3Dデータを変更したく、gtsファイルを作成しようと思ったのですが、いろいろ調べても、分からず、
ここに投稿する事にした次第です。

ネット上にあるgtsファイルでは、うまく動作しないので、出来れば、作成できる、もしくは、変換できるソフトウェアをご存知の方、
御享受下さい。

よろしくお願いします。

オフライン

 

#2 2011-07-22 18:09:54

weyk
メンバ
登録日: 2009-04-03

Re: GTS Library用 gtsファイルの作成方法について教えてください。

 gtsファイルの書式については、検索サイトで「GTSファイルフォーマット」にてひっかかるところの記載ではいかがでしょうか。
 また、gtsのオフィシャルサイトには(3Dモデリングとしての)サンプルデータがいくつかありますから、Gerrisにて使用することはできませんでしょうか(流体解析に向いてそうかどうかはちょっと微妙なところですが・・・)

オフライン

 

#3 2011-07-22 20:17:36

velocity-vent
新しいメンバ
登録日: 2011-07-22

Re: GTS Library用 gtsファイルの作成方法について教えてください。

早速の回答ありがとうございます。

weyk による投稿:

 gtsファイルの書式については、検索サイトで「GTSファイルフォーマット」にてひっかかるところの記載ではいかがでしょうか。
 また、gtsのオフィシャルサイトには(3Dモデリングとしての)サンプルデータがいくつかありますから、Gerrisにて使用することはできませんでしょうか(流体解析に向いてそうかどうかはちょっと微妙なところですが・・・)

GTSファイルフォーマットについては↓
http://www.hiramine.com/programming/3dmodelfileformat/gtsfileformat.html

で、確認しました。
これで、中身は理解出来たのですが、球体や箱等より、ちょっと複雑な形状をやりたいので、
コードで書いていくのは自信がありません。

GTS Libraryのサイトにある↓
http://gts.sourceforge.net/samples.html

こちらの場合、形状がNGなのか、うまく動作しません。

そこで、できればgtsファイルで3Dデータを生成できるソフトか、もしくは、ベターな3Dデータを変換出来るソフトがあればと思い質問しました。

オフライン

 

#4 2011-07-26 22:34:25

weyk
メンバ
登録日: 2009-04-03

Re: GTS Library用 gtsファイルの作成方法について教えてください。

VirtualBOXの環境へのgerrisのインストールに失敗しつつ、少し調べていました。
(11.04でのblcr-DKMSの既バグで止まってました。カーネルのバージョンに合わせて、10.04にしたら、すんなり行きました。)

gfsに付属のツールで、STLのデータをGTSへと変換するものが付いているようです。これを使う前提にすると、Ubuntuで動作して、かつ、フリーのものだと、OpenSCADで生成するのが良さそうかなぁ という感じです。
ただし、OpenSCADのexample1のデータをそのままSTL形式でexportして、stl2gtsにかけたところ、assertionにひっかかったため、利用はできませんでした(図形の形状かなにかに制限があるのだとは思いますが・・・3D-CADがさっぱりわかりません・・・)
STLもGTSも、どちらも、3角形をずらずら列挙する形式のようなので、変換の相性は悪くないと思っています。

Wineを使用する前提でAlibreDesign Xpressも動くかも という感じですが、本当に「動くかも?」なため、こちらは試していません。

オフライン

 

#5 2011-07-27 11:24:37

velocity-vent
新しいメンバ
登録日: 2011-07-22

Re: GTS Library用 gtsファイルの作成方法について教えてください。

weykさん。度々の回答ありがとうございます。
自分でも調べてはいるのですが、なかなか答えに辿りつかない所で、
調べて下さっている方がいる事が心強く、感謝します。

weyk による投稿:

VirtualBOXの環境へのgerrisのインストールに失敗しつつ、少し調べていました。
(11.04でのblcr-DKMSの既バグで止まってました。カーネルのバージョンに合わせて、10.04にしたら、すんなり行きました。)

OSまで、やって頂きありがとうございます。

weyk による投稿:

gfsに付属のツールで、STLのデータをGTSへと変換するものが付いているようです。これを使う前提にすると、Ubuntuで動作して、かつ、フリーのものだと、OpenSCADで生成するのが良さそうかなぁ という感じです。
ただし、OpenSCADのexample1のデータをそのままSTL形式でexportして、stl2gtsにかけたところ、assertionにひっかかったため、利用はできませんでした(図形の形状かなにかに制限があるのだとは思いますが・・・3D-CADがさっぱりわかりません・・・)
STLもGTSも、どちらも、3角形をずらずら列挙する形式のようなので、変換の相性は悪くないと思っています。

なるほど。STLの変換ツールがあったんですね?気が付きませんでした。

自分でも、他の方法でGTSまで変換する事は出来たのですが、これもエラーが出てしまい、なかなか進んでいません。

ちなみに、変換の方法は、
Windowsソフトで「Hira3DViewer」というソフトが見つかりまして、これが、GTS形式のエキスポートに対応してました。
そこで、早速、「SketchUp」で作成したデータを、OBJ形式にエキスポートし、「Hira3DViewer」で読み込み、再度、GTS形式で出力するという事で、
とりあえず、データは完成したのですが、それを「gerris」で実行させると、"expecting a number (z coordinate)"というエラーが出ます。

下の、GTSソースの中を見ると"GTS_INT"と"GTS_FLOAT"の条件に引っかかっている様ですが、それが何か解らない所です。

コード:

static void point_read (GtsObject ** o, GtsFile * f)
{
  GtsPoint * p = GTS_POINT (*o);

  if (GTS_POINT_CLASS ((*o)->klass)->binary) {
    if (gts_file_read (f, &(p->x), sizeof (gdouble), 1) != 1) {
      gts_file_error (f, "expecting a binary number (x coordinate)");
      return;
    }
    if (gts_file_read (f, &(p->y), sizeof (gdouble), 1) != 1) {
      gts_file_error (f, "expecting a binary number (y coordinate)");
      return;
    }
    if (gts_file_read (f, &(p->z), sizeof (gdouble), 1) != 1) {
      gts_file_error (f, "expecting a binary number (z coordinate)");
      return;
    }
  }
  else {
    if (f->type != GTS_INT && f->type != GTS_FLOAT) {
      gts_file_error (f, "expecting a number (x coordinate)");
      return;
    }
    p->x = atof (f->token->str);
    
    gts_file_next_token (f);
    if (f->type != GTS_INT && f->type != GTS_FLOAT) {
      gts_file_error (f, "expecting a number (y coordinate)");
      return;
    }
    p->y = atof (f->token->str);
    
    gts_file_next_token (f);
    if (f->type != GTS_INT && f->type != GTS_FLOAT) {
      gts_file_error (f, "expecting a number (z coordinate)");
      return;
    }
    p->z = atof (f->token->str);
    
    gts_file_next_token (f);
  }
}

このコードで解る方、いらっしゃるでしょうか?

あと、もう少しだと思うので、自分でも、さらに調べて見ます。

オフライン

 

#6 2011-07-27 12:31:47

weyk
メンバ
登録日: 2009-04-03

Re: GTS Library用 gtsファイルの作成方法について教えてください。

 こんにちは。
 gtsのライブラリの型判定を見たところ、あまり高度なチェックはしていないようです(大雑把に、トークン内の文字が、"+-0123456789"だけならINT、"+-0123456789Ee."だけならFLOAT という感じ)
 行末の項目でエラーとなっていることから、おそらく、MS-Windowsで生成したgtsのテキストファイルを、そのままUbuntuに転送して指定したために、行末が「CR+LF」になっているのではと思います。改行コードの指定が可能なテキストエディタ等で「LF」にしてみてください。

 参考までに ですが、当方のassertitonも、一応原因がわかりました。STLも3角形の面のずらずら書き連ねた書式なのですが、3つの座標のうち、2つの座標が等しいときにでるものだと判明しました(面じゃなくて線?)。STLファイルのデータとして正しいのかどうかは不明です(「E1 != E2 && E1 != E3 && E2 != E3」という条件に失敗。)

オフライン

 

#7 2011-07-27 15:21:31

velocity-vent
新しいメンバ
登録日: 2011-07-22

Re: GTS Library用 gtsファイルの作成方法について教えてください。

回答ありがとうございます。
早速、確認しました。

weyk による投稿:

 gtsのライブラリの型判定を見たところ、あまり高度なチェックはしていないようです(大雑把に、トークン内の文字が、"+-0123456789"だけならINT、"+-0123456789Ee."だけならFLOAT という感じ)
 行末の項目でエラーとなっていることから、おそらく、MS-Windowsで生成したgtsのテキストファイルを、そのままUbuntuに転送して指定したために、行末が「CR+LF」になっているのではと思います。改行コードの指定が可能なテキストエディタ等で「LF」にしてみてください。

確かに、コレが原因で、エラーが出ていました。
そこで、geditで名前を「別名で保存」にして、名前をそのままで、改行を「Unix/Linux」に選択し、上書きで直りました。

ただ、gerrisで確認するまで、ちょっと手間が・・・・。
3Dの寸法サイズが異常に小さかったり、変換の時にZ軸とY軸が入れ替わってたり、表面の裏表(SketchUPだと裏にしないとダメ)だったりして。
とりあえず、作ったもので、なんとか実行できました。

いろいろ御教授下さり、ありがとう御座いました。

オフライン

 

#8 2011-07-27 15:50:01

weyk
メンバ
登録日: 2009-04-03

Re: GTS Library用 gtsファイルの作成方法について教えてください。

 こんにちは。

 おめでとうございます。gts形式のファイルでしたら、gfs(gerris)にtransformというコマンドがあります。これで、単純な加工(回転、拡大、正規化(normalize)、裏返し(revert)、平行移動)ができそうですので、元となる形状のデータさえ準備できれば、調整はコマンドラインツールでなんとかなりそうです。

オフライン

 

Board footer

Powered by FluxBB