【问题标题】:Convert IFC EXPRESS schema entities/classes to VB.NET classes将 IFC EXPRESS 模式实体/类转换为 VB.NET 类
【发布时间】:2016-09-09 08:00:41
【问题描述】:

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

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

【问题讨论】:

    标签: ifc vb.net javatoolbox java vb.net step ifc


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 感谢您的回答。我见过这两种工具,但我没有找到任何代码将EXPRESS 类转换为VB 类。你知道我要找的这段代码是否存在吗?
      【解决方案3】:

      你可以试试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 的内部元模型如下所示:

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-06-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-16
        • 2020-08-10
        • 2012-09-10
        相关资源
        最近更新 更多