dポイントプレゼントキャンペーン実施中!

3D-CADで描いた形状を、C言語の例えばOPEN-GLのようなグラフィックライブラリをつかって表示することはできますか?
できるとしたら、画像として移動できるのか、それともパラメータだけを移動して、新たにC言語上で描画する必要性があるのでしょうか。
3D-CADのSolid Edgeは、Cとリンクをはっているという話は聞いたことがあるのですが、詳しいことがわかりません。

A 回答 (4件)

No.3の「補足要求」でも言いましたが、問題点を整理すると、要は、



1)図形か画像か?

3D-CADでも表示された絵そのものは、2次元です。これを利用するとしても画面のハードコピーと同じこと。キーボードの「ctrl+PrintScreen」で切り貼りすれば、Wordに貼り付けることも出来ます。

そうではなくて、マウスを使ってグルグル回したりしたいんですか?それなら図形データを取り出さなくてはいけません。図形データには、

イ)幾何情報(点、線分、トリム曲面..)
ロ)位相情報(面や稜線などの相互的位置関係)

があります。CADシステム内部のデータでは、ロ)を持ちますが、汎用的な形式に掃き出すと、イ)だけになる場合が多いです。絵を描くだけなら相互の関係などなくてもいい場合が殆どです。

#以下、「図形」と仮定した場合...、

2)面は平面形状か、それとも、2次曲面、3次曲面(=NURBSなど)か?

通常の製品形状で平面形状だけなんて殆どないですが、この場合、

3)平面形状ではないとした時、面と面との繋ぎ目は以下の何れか?
3a)全てフィレットなどのRが付いている。
3b)一部鋭角的なところがある。

Open-GLなどで表示する場合、多角形毎以下の何れかを選択しなくてはなりません。
A) Flat Shading (滑らかでない陰影付け)
B)Smooth Shading(滑らかな陰影付け)

B)の場合、位相情報が失われていたり、STL形式のように自由曲面でもなんでも3角形のポリゴンになっちゃうと、幾何情報を頼りに、近い点同士を探して、「面法線ベクトル」を共有化させることにより、面同士が滑らかに繋がったように見せなくてはなりません。

この時、全てRが付いているなら、機械的に近い点同士を1-Groupにまとめちゃえばいいのです。しかし、一部鋭角的なところがあると、面同士
・滑らか
・滑らかでない
を自動的に判別しなくてはなりません。

と言うと難しそうですが、最近も弊社の若手でOpen-GLも数学知識もない者に、方法だけ教えたら、1週間で作りあげました。

原理は上のとおりですが、ポリゴンの数が数10万規模になると、近い点同士を探すのでも上手くやらないと計算時間がかかってしまいます。Octreeなど空間を階層的に管理した方がいいです。
    • good
    • 0

補足です。



a)IGES
b)DXF
c)STL

のような代表的なものでしたら、Viewerがありますが、Viewer使って見るくらいなら、CAD使って見ても同じです。

要は何をやりたいかということです。その辺がイマイチ分かりません。

OPEN-GLは例題を見れば初心者や数学的知識のない者でも簡単に組めます。
    • good
    • 0

mnabeさんが言われていることにほぼ間違いはないです。



1)3D-CADの内部フォーマットは独自ですが、各出力フォーマットにExportできるのが普通です。たとえば、

a)IGES
b)DXF
c)STL

これはフォーマットが分かっていますから、これを読んで、

イ)OPEN-GL
ロ)Direct-X

などのライブラリを使って描画すればいいのです。

「画像として移動できるのか?」:「画像」と言うからには、「bmp」や、「Iris-rgb」、更には、「JPEG」,「GIFF」などの形式でなくてはなりません。そのCADシステムが、これら画像ファイルに掃き出す機能を持っているかどうかでしょう。但し、これは「画像」ですから2次元です。3次元データとして扱いたいなら、上で述べたような方法を使わなくてはなりません。
    • good
    • 0

3D-CADのファイルのフォーマット形式が公開されているか、表示用のライブラリが公開されていれば、C言語で表示可能です。


 また、OPEN GLとの連携は難しいと考えるべきです。OPEN GL自身がライブラリですので、別のファイルフォーマットのライブラリがあったとしても読込むのは少々難儀すると思います。できないとは思いませんが...。

 描画する必要性は
 何を持って描画と言うのかがわかりませんが、画面上に表示するのに必要です。しかし、それをライブラリで行ってくれる可能性もあります。
 まずは、3D-CADで確認してみて下さい。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!