将 IFC EXPRESS 模式 entities/classes 转换为 VB.NET 类

Convert IFC EXPRESS schema entities/classes to VB.NET classes

我正在研究 project where I want to convert an EXPRESS file's classes into 类。 stp 文件的所有属性一个一个处理真的很难,所以我想知道是否有其他方法或工具可以转换 类.

编辑:我发现了 which does exactly what I want, but in 。我也看到了 IFC Engine DLL 但没有找到任何可用的代码。

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

为完整的 EXPRESS 模式创建 类 是一项相对复杂的任务。如果您的 language/platform 选择是 vb.net,我建议您查看 xBIM. It is open source toolkit which provides all you need to open IFC model and extract/create any data you need. xBIM is mostly written in C# so you can just reference it as a NuGet package。最新开发代码还支持IFC4.

你可以试试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";
};

生成的早期绑定将如下所示:

oipExpress 的内部元模型如下所示: