2026-07-24 05:18:52 +00:00
|
|
|
|
#pragma once
|
2026-07-24 11:09:45 +00:00
|
|
|
|
/**
|
|
|
|
|
|
* @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
|
|
|
|
|
|
*/
|
2026-07-24 05:18:52 +00:00
|
|
|
|
#include "vde/brep/brep.h"
|
|
|
|
|
|
#include <string>
|
|
|
|
|
|
#include <vector>
|
|
|
|
|
|
|
|
|
|
|
|
namespace vde::brep {
|
|
|
|
|
|
|
2026-07-24 11:09:45 +00:00
|
|
|
|
/**
|
|
|
|
|
|
* @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 格式导出
|
|
|
|
|
|
*/
|
2026-07-24 05:18:52 +00:00
|
|
|
|
[[nodiscard]] std::string export_step(const std::vector<BrepModel>& bodies);
|
|
|
|
|
|
|
2026-07-24 11:09:45 +00:00
|
|
|
|
/**
|
|
|
|
|
|
* @brief 将 B-Rep 体导出为 STEP 文件
|
|
|
|
|
|
*
|
|
|
|
|
|
* 便捷函数:调用 export_step() 后写入文件。
|
|
|
|
|
|
*
|
|
|
|
|
|
* @param filepath 输出文件路径(建议扩展名 .step 或 .stp)
|
|
|
|
|
|
* @param bodies B-Rep 体列表
|
|
|
|
|
|
*
|
|
|
|
|
|
* @see export_step 获取字符串输出
|
|
|
|
|
|
*/
|
2026-07-24 05:18:52 +00:00
|
|
|
|
void export_step_file(const std::string& filepath, const std::vector<BrepModel>& bodies);
|
|
|
|
|
|
|
|
|
|
|
|
} // namespace vde::brep
|