将IFC EXPRESS架构实体/类转换为VB.NET类

时间:2016-05-13 08:09:47

标签: vb.net step ifc

我正在开展一个项目,我希望将EXPRESS个文件的类转换为个类。很难一个一个地处理stp文件的所有属性,所以我想知道是否有其他方法或工具可以转换类。

编辑:我发现完全符合我的要求,但在中。我也看过IFC Engine DLL,但没有找到任何可用的代码。

3 个答案:

答案 0 :(得分:2)

为完整的EXPRESS模式创建类是一项相对复杂的任务。如果您选择的语言/平台是vb.net,我建议您查看xBIM。它是开源工具包,提供打开IFC模型和提取/创建所需数据所需的一切。 xBIM 主要是用C#编写的,因此您只需将其引用为NuGet package即可。最新的开发代码也支持 IFC4

答案 1 :(得分:1)

Jotne EPM www.epmtech.jotne.com和IFC Engine DLL www.ifcengine.com声称它们支持Visual Basic。

答案 2 :(得分: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