2016-05-13 9 views
1

プロジェクトで、EXPRESSファイルのクラスをクラスに変換するプロジェクトを進めています。 stpファイルのすべての属性を1つずつ処理するのは本当に難しいので、クラスを変換できる代替方法やツールがあるかどうかは疑問でした。IFC EXPRESSスキーマエンティティ/クラスをVB.NETクラスに変換する

EDIT:私はを見つけました。これは私が欲しいものですが、です。 IFC Engine DLLも見ましたが、利用できるコードが見つかりませんでした。

答えて

2

完全なEXPRESSスキーマのクラスを作成するのは比較的複雑な作業です。お使いの言語/プラットフォームがvb.netの場合は、xBIMをご覧ください。 IFCモデルを開き、必要なデータを抽出/作成するために必要なすべてを提供するオープンソースのツールキットです。 xBIMはほとんどがC#で書かれていますので、NuGet packageとして参照することができます。最新の開発コードは、IFC4もサポートしています。

+0

ありがとう! :) – Marievi

1

Jotne EPM www.epmtech.jotne.comとIFC Engine DLL www.ifcengine.comはどちらもVisual Basicをサポートしていると主張しています。

+0

ありがとうございます。両方のツールを見たことがありますが、 'EXPRESS'クラスを' VB'クラスに変換するコードが見つかりませんでした。私が探しているコードが存在するかどうか知っていますか? – Marievi

1

oipExpressを試すことができます。 oipExpressはC++で書かれた初期バインディングジェネレータです。 VB.Netクラスを生成する独自のジェネレータを実装するだけです。現在、C++クラスを生成するだけです。 VB.Netクラスの

基本的な発電機は、この(結合生成もhere見つけることができる)ようになります。

class GeneratorVBNet : public Generator { 
public: 
    GeneratorVBNet() { 
    } 
    virtual ~GeneratorVBNet() { 
    } 

    void generate(std::ostream &out, OpenInfraPlatform::ExpressBinding::Schema &schema) { 
     for (int i = 0; i < schema.getEntityCount(); i++) { 
      auto &entity = schema.getEntityByIndex(i); 

      std::stringstream ss; 
      ss << earlyBindingDestination << "\\" << entity.getName() << ".vb"; 

      std::ofstream ofs(ss.str(), std::ofstream::out); 

      ofs << "Class " << entity.getName() << std::endl; 

      ofs << "End Class" << std::endl; 
     } 
    } 

private: 
    std::string earlyBindingDestination = "E:\\dev\\EarlyBindingVBNet_IFC4x1_Add1"; 
}; 

生成事前バインディングは次のようになります。Generated early binding

内部oipExpressのメタモデルは次のようになります。 oipExpress Meta Model

関連する問題