#pragma once /** * @file step_export.h * @brief STEP 文件导出(ISO 10303-214) * * 将 B-Rep 模型序列化为 STEP AP214 格式。 * * ## 输出格式 * * 生成的 STEP 文件符合 ISO 10303-214 (AP214) 标准, * 可以在大多数商用 CAD 软件(SolidWorks, CATIA, NX, FreeCAD 等)中打开。 * * ## 支持的几何类型 * * - **曲线**: LINE, CIRCLE, B_SPLINE_CURVE_WITH_KNOTS * - **曲面**: PLANE, CYLINDRICAL_SURFACE, B_SPLINE_SURFACE_WITH_KNOTS * - **拓扑**: CLOSED_SHELL, ADVANCED_FACE, EDGE_LOOP, ORIENTED_EDGE, VERTEX_POINT * - **实体**: MANIFOLD_SOLID_BREP, PRODUCT, PRODUCT_DEFINITION * * @ingroup brep */ #include "vde/brep/brep.h" #include #include namespace vde::brep { /** * @brief 将 B-Rep 体导出为 STEP AP214 字符串 * * 序列化所有传入的体及其几何数据为 STEP 文本格式。 * * **输出结构:** * ``` * ISO-10303-21; * HEADER; * FILE_DESCRIPTION(...) * FILE_NAME(...) * FILE_SCHEMA(('AUTOMOTIVE_DESIGN')) * ENDSEC; * DATA; * #1 = PRODUCT(...) * #2 = CARTESIAN_POINT(...) * ... * ENDSEC; * END-ISO-10303-21; * ``` * * @param bodies B-Rep 体列表(每个体对应一个 PRODUCT) * @return STEP AP214 格式字符串 * * @note 输出包含所有必要的 ISO 10303-21 头部信息。 * * @code{.cpp} * auto body = make_box(10, 5, 3); * std::string step_str = export_step({body}); * // 写入文件或通过网络发送 * @endcode * * @see export_step_file 直接写入文件 * @see export_iges IGES 格式导出 */ [[nodiscard]] std::string export_step(const std::vector& bodies); /** * @brief 将 B-Rep 体导出为 STEP 文件 * * 便捷函数:调用 export_step() 后写入文件。 * * @param filepath 输出文件路径(建议扩展名 .step 或 .stp) * @param bodies B-Rep 体列表 * * @see export_step 获取字符串输出 */ void export_step_file(const std::string& filepath, const std::vector& bodies); } // namespace vde::brep