生成圆柱体STEP文件

#include <BRepPrimAPI_MakeCylinder.hxx>
#include <STEPControl_Writer.hxx>
#include <STEPControl_StepModelType.hxx>
#include <IFSelect_ReturnStatus.hxx>
#include <gp_Trsf.hxx>
#include <gp_Vec.hxx>
#include <BRepBuilderAPI_Transform.hxx>
#include <TopoDS_Shape.hxx>
#include <iostream>

int main() {
    // 圆柱体尺寸参数
    Standard_Real radius = 25.0;
    Standard_Real height = 100.0;

    // 目标位置(将底面中心设置在这个位置)
    Standard_Real posX = 100.0;
    Standard_Real posY = 50.0;
    Standard_Real posZ = 200.0;

    // 创建圆柱体(默认底面在原点 Z=0,沿Z轴方向)
    TopoDS_Shape cylinder = BRepPrimAPI_MakeCylinder(radius, height).Shape();

    // 创建平移变换
    gp_Trsf translation;
    translation.SetTranslation(gp_Vec(posX, posY, posZ));
    // 应用变换到圆柱体上
    BRepBuilderAPI_Transform transformer(cylinder, translation);
    TopoDS_Shape movedCylinder = transformer.Shape();
    // 写入 STEP 文件
    STEPControl_Writer writer;
    IFSelect_ReturnStatus status;

    status = writer.Transfer(movedCylinder, STEPControl_AsIs);
    if (status != IFSelect_RetDone) {
        std::cerr << "传输到 STEP 失败!" << std::endl;
        return 1;
    }
    status = writer.Write("cylinder_translated.step");
    if (status != IFSelect_RetDone) {
        std::cerr << "写入 STEP 文件失败!" << std::endl;
        return 1;
    }
    std::cout << "成功生成带位移的圆柱体文件:cylinder_translated.step" << std::endl;
    return 0;
}
作者:admin  创建时间:2025-06-03 14:34
最后编辑:admin  更新时间:2025-06-03 14:35